{"version":3,"file":"js/jquery.cb40ead2.bundle.js","mappings":"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","sources":["webpack:///indico/web/client/js/jquery/extensions/global.js","webpack:///indico/web/client/js/jquery/widgets/ajaxqbubble.js","webpack:///indico/web/client/js/jquery/widgets/categorynavigator.js","webpack:///indico/web/client/js/jquery/widgets/itempicker.js","webpack:///indico/web/client/js/jquery/widgets/realtimefilter.js","webpack:///indico/web/client/js/jquery/widgets/track_role_widget.js","webpack:///indico/web/client/js/jquery/widgets/jinja/buttons_boolean_widget.js","webpack:///indico/web/client/js/jquery/widgets/jinja/captcha_widget.js","webpack:///indico/web/client/js/jquery/widgets/jinja/date_widget.js","webpack:///indico/web/client/js/jquery/widgets/jinja/datetime_widget.js","webpack:///indico/web/client/js/jquery/widgets/jinja/duration_widget.js","webpack:///indico/web/client/js/jquery/widgets/jinja/time_widget.js","webpack:///indico/web/client/js/jquery/widgets/jinja/link_list_widget.js","webpack:///indico/web/client/js/jquery/widgets/jinja/multiple_tag_select_widget.js","webpack:///indico/web/client/js/jquery/widgets/jinja/occurrences_widget.js","webpack:///indico/web/client/js/jquery/widgets/jinja/participant_visibility_widget.js","webpack:///indico/web/client/js/react/components/PersonLinkField.module.scss?55ce","webpack:///indico/web/client/js/react/components/PersonLinkField.jsx","webpack:///indico/web/client/js/jquery/widgets/jinja/person_link_widget.js","webpack:///indico/web/client/js/jquery/widgets/jinja/principal_list_widget.js","webpack:///indico/web/client/js/jquery/widgets/jinja/principal_widget.js","webpack:///indico/web/client/js/jquery/widgets/jinja/protection_widget.js","webpack:///indico/web/client/js/jquery/widgets/jinja/typeahead_widget.js","webpack:///indico/web/client/js/jquery/widgets/jinja/permissions_widget.js","webpack:///indico/web/client/js/jquery/widgets/jinja/sui_color_picker_widget.js","webpack:///indico/web/client/js/jquery/widgets/jinja/sui_search_dropdown_widget.js","webpack:///indico/web/client/js/jquery/widgets/jinja/tinymce_widget.js","webpack:///indico/web/client/js/jquery/extensions/clipboard.js","webpack:///indico/web/client/js/jquery/utils/declarative.js","webpack:///indico/web/client/js/jquery/utils/defaults.js","webpack:///indico/web/client/js/jquery/utils/dropzone.js","webpack:///indico/web/client/js/jquery/utils/errors.js","webpack:///indico/web/client/js/jquery/utils/forms.js","webpack:///indico/web/client/js/jquery/utils/misc.js","webpack:///indico/web/client/js/jquery/index.js","webpack:///indico/web/client/js/jquery/utils/ajaxdialog.js","webpack:///indico/web/client/js/jquery/utils/ajaxform.js","webpack:///indico/web/client/js/jquery/utils/routing.js","webpack:///indico/web/client/js/jquery/utils/sortablelist.js","webpack:///indico/web/client/js/jquery/widgets/ajaxcheckbox.js","webpack:///indico/web/client/js/jquery/widgets/clearableinput.js","webpack:///indico/web/client/js/jquery/widgets/colorpicker.js","webpack:///indico/web/client/js/jquery/widgets/dropdown.js","webpack:///indico/web/client/js/jquery/widgets/dttbutton.js","webpack:///indico/web/client/js/jquery/widgets/jinja/category_picker_widget.js","webpack:///indico/web/client/js/jquery/widgets/jinja/color_picker_widget.js","webpack:///indico/web/client/js/jquery/widgets/jinja/linking_widget.js","webpack:///indico/web/client/js/jquery/widgets/jinja/location_widget.js","webpack:///indico/web/client/js/jquery/widgets/jinja/markdown_widget.js","webpack:///indico/web/client/js/jquery/widgets/jinja/multiple_items_widget.js","webpack:///indico/web/client/js/jquery/widgets/jinja/override_multiple_items_widget.js","webpack:///indico/web/client/js/jquery/widgets/misc.js","webpack:///indico/web/client/js/jquery/widgets/multitextfield.js","webpack:///indico/web/client/js/jquery/widgets/nullableselector.js","webpack:///indico/web/client/js/jquery/widgets/palettepicker.js","webpack:///indico/web/client/js/jquery/widgets/paper_email_settings_widget.js","webpack:///indico/web/client/js/jquery/widgets/qbubble.js","webpack:///indico/web/client/js/jquery/widgets/rulelistwidget.js","webpack:///indico/web/client/js/jquery/widgets/scrollblocker.js","webpack:///indico/web/client/js/jquery/widgets/sticky_tooltip.js","webpack:///node_modules/clipboard/dist/clipboard.js","webpack:///node_modules/dropzone/dist/dropzone.js","webpack:///node_modules/jquery-colorbox/jquery.colorbox.js","webpack:///node_modules/jquery-form/dist/jquery.form.min.js","webpack:///node_modules/jquery-migrate/dist/jquery-migrate.js","webpack:///node_modules/jquery-typeahead/dist/jquery.typeahead.min.js","webpack:///node_modules/jquery-ui/ui/data.js","webpack:///node_modules/jquery-ui/ui/disable-selection.js","webpack:///node_modules/jquery-ui/ui/effect.js","webpack:///node_modules/jquery-ui/ui/effects/effect-blind.js","webpack:///node_modules/jquery-ui/ui/effects/effect-highlight.js","webpack:///node_modules/jquery-ui/ui/effects/effect-pulsate.js","webpack:///node_modules/jquery-ui/ui/escape-selector.js","webpack:///node_modules/jquery-ui/ui/focusable.js","webpack:///node_modules/jquery-ui/ui/form-reset-mixin.js","webpack:///node_modules/jquery-ui/ui/form.js","webpack:///node_modules/jquery-ui/ui/ie.js","webpack:///node_modules/jquery-ui/ui/keycode.js","webpack:///node_modules/jquery-ui/ui/labels.js","webpack:///node_modules/jquery-ui/ui/plugin.js","webpack:///node_modules/jquery-ui/ui/position.js","webpack:///node_modules/jquery-ui/ui/safe-active-element.js","webpack:///node_modules/jquery-ui/ui/safe-blur.js","webpack:///node_modules/jquery-ui/ui/scroll-parent.js","webpack:///node_modules/jquery-ui/ui/tabbable.js","webpack:///node_modules/jquery-ui/ui/unique-id.js","webpack:///node_modules/jquery-ui/ui/version.js","webpack:///node_modules/jquery-ui/ui/widget.js","webpack:///node_modules/jquery-ui/ui/widgets/button.js","webpack:///node_modules/jquery-ui/ui/widgets/checkboxradio.js","webpack:///node_modules/jquery-ui/ui/widgets/controlgroup.js","webpack:///node_modules/jquery-ui/ui/widgets/datepicker.js","webpack:///node_modules/jquery-ui/ui/widgets/dialog.js","webpack:///node_modules/jquery-ui/ui/widgets/draggable.js","webpack:///node_modules/jquery-ui/ui/widgets/droppable.js","webpack:///node_modules/jquery-ui/ui/widgets/mouse.js","webpack:///node_modules/jquery-ui/ui/widgets/resizable.js","webpack:///node_modules/jquery-ui/ui/widgets/slider.js","webpack:///node_modules/jquery-ui/ui/widgets/sortable.js","webpack:///node_modules/jquery-ui/ui/widgets/tabs.js","webpack:///node_modules/jquery.typewatch/jquery.typewatch.js","webpack:///node_modules/jquery/src/ajax.js","webpack:///node_modules/jquery/src/ajax/jsonp.js","webpack:///node_modules/jquery/src/ajax/load.js","webpack:///node_modules/jquery/src/ajax/script.js","webpack:///node_modules/jquery/src/ajax/var/location.js","webpack:///node_modules/jquery/src/ajax/var/nonce.js","webpack:///node_modules/jquery/src/ajax/var/rquery.js","webpack:///node_modules/jquery/src/ajax/xhr.js","webpack:///node_modules/jquery/src/attributes.js","webpack:///node_modules/jquery/src/attributes/attr.js","webpack:///node_modules/jquery/src/attributes/classes.js","webpack:///node_modules/jquery/src/attributes/prop.js","webpack:///node_modules/jquery/src/attributes/support.js","webpack:///node_modules/jquery/src/attributes/val.js","webpack:///node_modules/jquery/src/callbacks.js","webpack:///node_modules/jquery/src/core.js","webpack:///node_modules/jquery/src/core/DOMEval.js","webpack:///node_modules/jquery/src/core/access.js","webpack:///node_modules/jquery/src/core/camelCase.js","webpack:///node_modules/jquery/src/core/init.js","webpack:///node_modules/jquery/src/core/isAttached.js","webpack:///node_modules/jquery/src/core/nodeName.js","webpack:///node_modules/jquery/src/core/parseHTML.js","webpack:///node_modules/jquery/src/core/parseXML.js","webpack:///node_modules/jquery/src/core/ready.js","webpack:///node_modules/jquery/src/core/readyException.js","webpack:///node_modules/jquery/src/core/stripAndCollapse.js","webpack:///node_modules/jquery/src/core/support.js","webpack:///node_modules/jquery/src/core/toType.js","webpack:///node_modules/jquery/src/core/var/rsingleTag.js","webpack:///node_modules/jquery/src/css.js","webpack:///node_modules/jquery/src/css/addGetHookIf.js","webpack:///node_modules/jquery/src/css/adjustCSS.js","webpack:///node_modules/jquery/src/css/curCSS.js","webpack:///node_modules/jquery/src/css/finalPropName.js","webpack:///node_modules/jquery/src/css/hiddenVisibleSelectors.js","webpack:///node_modules/jquery/src/css/showHide.js","webpack:///node_modules/jquery/src/css/support.js","webpack:///node_modules/jquery/src/css/var/cssExpand.js","webpack:///node_modules/jquery/src/css/var/getStyles.js","webpack:///node_modules/jquery/src/css/var/isHiddenWithinTree.js","webpack:///node_modules/jquery/src/css/var/rboxStyle.js","webpack:///node_modules/jquery/src/css/var/rcustomProp.js","webpack:///node_modules/jquery/src/css/var/rnumnonpx.js","webpack:///node_modules/jquery/src/css/var/swap.js","webpack:///node_modules/jquery/src/data.js","webpack:///node_modules/jquery/src/data/Data.js","webpack:///node_modules/jquery/src/data/var/acceptData.js","webpack:///node_modules/jquery/src/data/var/dataPriv.js","webpack:///node_modules/jquery/src/data/var/dataUser.js","webpack:///node_modules/jquery/src/deferred.js","webpack:///node_modules/jquery/src/deferred/exceptionHook.js","webpack:///node_modules/jquery/src/deprecated.js","webpack:///node_modules/jquery/src/deprecated/ajax-event-alias.js","webpack:///node_modules/jquery/src/deprecated/event.js","webpack:///node_modules/jquery/src/dimensions.js","webpack:///node_modules/jquery/src/effects.js","webpack:///node_modules/jquery/src/effects/Tween.js","webpack:///node_modules/jquery/src/effects/animatedSelector.js","webpack:///node_modules/jquery/src/event.js","webpack:///node_modules/jquery/src/event/trigger.js","webpack:///node_modules/jquery/src/exports/amd.js","webpack:///node_modules/jquery/src/exports/global.js","webpack:///node_modules/jquery/src/jquery.js","webpack:///node_modules/jquery/src/manipulation.js","webpack:///node_modules/jquery/src/manipulation/_evalUrl.js","webpack:///node_modules/jquery/src/manipulation/buildFragment.js","webpack:///node_modules/jquery/src/manipulation/getAll.js","webpack:///node_modules/jquery/src/manipulation/setGlobalEval.js","webpack:///node_modules/jquery/src/manipulation/support.js","webpack:///node_modules/jquery/src/manipulation/var/rscriptType.js","webpack:///node_modules/jquery/src/manipulation/var/rtagName.js","webpack:///node_modules/jquery/src/manipulation/wrapMap.js","webpack:///node_modules/jquery/src/offset.js","webpack:///node_modules/jquery/src/queue.js","webpack:///node_modules/jquery/src/queue/delay.js","webpack:///node_modules/jquery/src/selector.js","webpack:///node_modules/jquery/src/selector/contains.js","webpack:///node_modules/jquery/src/selector/escapeSelector.js","webpack:///node_modules/jquery/src/serialize.js","webpack:///node_modules/jquery/src/traversing.js","webpack:///node_modules/jquery/src/traversing/findFilter.js","webpack:///node_modules/jquery/src/traversing/var/dir.js","webpack:///node_modules/jquery/src/traversing/var/rneedsContext.js","webpack:///node_modules/jquery/src/traversing/var/siblings.js","webpack:///node_modules/jquery/src/var/ObjectFunctionString.js","webpack:///node_modules/jquery/src/var/arr.js","webpack:///node_modules/jquery/src/var/class2type.js","webpack:///node_modules/jquery/src/var/document.js","webpack:///node_modules/jquery/src/var/documentElement.js","webpack:///node_modules/jquery/src/var/flat.js","webpack:///node_modules/jquery/src/var/fnToString.js","webpack:///node_modules/jquery/src/var/getProto.js","webpack:///node_modules/jquery/src/var/hasOwn.js","webpack:///node_modules/jquery/src/var/indexOf.js","webpack:///node_modules/jquery/src/var/isFunction.js","webpack:///node_modules/jquery/src/var/isWindow.js","webpack:///node_modules/jquery/src/var/pnum.js","webpack:///node_modules/jquery/src/var/pop.js","webpack:///node_modules/jquery/src/var/push.js","webpack:///node_modules/jquery/src/var/rcheckableType.js","webpack:///node_modules/jquery/src/var/rcssNum.js","webpack:///node_modules/jquery/src/var/rnothtmlwhite.js","webpack:///node_modules/jquery/src/var/rtrimCSS.js","webpack:///node_modules/jquery/src/var/slice.js","webpack:///node_modules/jquery/src/var/sort.js","webpack:///node_modules/jquery/src/var/splice.js","webpack:///node_modules/jquery/src/var/support.js","webpack:///node_modules/jquery/src/var/toString.js","webpack:///node_modules/jquery/src/var/whitespace.js","webpack:///node_modules/jquery/src/wrap.js","webpack:///node_modules/moment/locale/cs.js","webpack:///node_modules/moment/locale/de.js","webpack:///node_modules/moment/locale/en-ca.js","webpack:///node_modules/moment/locale/en-gb.js","webpack:///node_modules/moment/locale/es.js","webpack:///node_modules/moment/locale/fr.js","webpack:///node_modules/moment/locale/it.js","webpack:///node_modules/moment/locale/mn.js","webpack:///node_modules/moment/locale/pl.js","webpack:///node_modules/moment/locale/pt-br.js","webpack:///node_modules/moment/locale/tr.js","webpack:///node_modules/moment/locale/uk.js","webpack:///node_modules/moment/locale/zh-cn.js","webpack:///node_modules/qtip2/dist/jquery.qtip.js","webpack:///node_modules/tablesorter/dist/js/jquery.tablesorter.combined.js","webpack:///node_modules/taggle/src/taggle.js","webpack:///node_modules/vanderlee-colorpicker/jquery.colorpicker.js"],"sourcesContent":["// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n// Global scripts that should be executed on all pages\n/* global showFormErrors:false */\n/* eslint-disable max-len */\n/* eslint-disable import/unambiguous */\n\n$(document).ready(function() {\n $('.main-breadcrumb a[href=\"#\"]')\n .css({cursor: 'default', outline: 'none'})\n .on('click', function(e) {\n e.preventDefault();\n });\n\n // Use qtip for context help\n\n $.fn.qtip.defaults = $.extend(true, {}, $.fn.qtip.defaults, {\n position: {\n my: 'top center',\n at: 'bottom center',\n },\n hide: {\n event: 'click mouseout',\n },\n });\n\n $('.contextHelp[title]').qtip();\n\n /* Add qTips to elements with a title attribute. The position of the qTip\n * can be specified in the data-qtip-position attribute and is one of\n * \"top\", \"left\", \"bottom\" or \"right\". It defaults to \"bottom\".\n *\n * It is also possible to have HTML inside the qTip by using the\n * data-qtip-html attribute instead of the title attribute. */\n $(document).on(\n 'mouseenter',\n '[title]:not([data-no-qtip]):not([title=\"\"]):not(iframe), [data-qtip-html], [data-qtip-oldtitle]:not(iframe)',\n function(evt) {\n var $target = $(this);\n var title = ($target.attr('title') || $target.data('qtip-oldtitle') || '').trim();\n var extraOpts = $(this).data('qtip-opts') || {};\n var qtipClass = $(this).data('qtip-style');\n var qtipHTMLContainer = $(this).data('qtip-html');\n var qtipHTML =\n qtipHTMLContainer && qtipHTMLContainer.length ? $(this).next(qtipHTMLContainer) : null;\n\n // qtip not applied if it's empty, the element is disabled or it's inside a SemanticUI widget\n if (\n (!qtipHTML && !title) ||\n this.disabled ||\n $target.data('no-qtip') ||\n ($target.closest('.ui:not(.ui-qtip)').length && !$target.hasClass('ui-qtip')) ||\n $target.closest('.tox-tinymce').length ||\n $target.closest('.tox').length ||\n $target.closest('.fc-toolbar-chunk').length\n ) {\n return;\n }\n\n $target.attr('data-qtip-oldtitle', title);\n $target.removeAttr('title');\n\n var position = $(this).data('qtip-position');\n var positionOptions;\n if (position === 'left') {\n positionOptions = {\n my: 'right center',\n at: 'left center',\n };\n } else if (position === 'right') {\n positionOptions = {\n my: 'left center',\n at: 'right center',\n };\n } else if (position === 'top') {\n positionOptions = {\n my: 'bottom center',\n at: 'top center',\n };\n } else if (position === 'bottom') {\n positionOptions = {\n my: 'top center',\n at: 'bottom center',\n };\n }\n\n /* Attach the qTip to a new element to avoid side-effects on all elements with \"title\" attributes. */\n var qtip = $('<span>').qtip(\n $.extend(\n true,\n {},\n {\n overwrite: false,\n position: $.extend(\n {\n target: $target,\n },\n positionOptions\n ),\n\n show: {\n event: evt.type,\n ready: true,\n },\n\n content: {\n text: function() {\n if (qtipHTML) {\n return qtipHTML.html();\n } else {\n return title\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n }\n },\n },\n\n events: {\n show: function(event) {\n if ($(event.originalEvent.target).hasClass('open')) {\n event.preventDefault();\n }\n },\n\n hide: function() {\n $(this).qtip('destroy');\n },\n\n render: function(event, api) {\n $target.on('DOMNodeRemovedFromDocument remove', function() {\n api.destroy();\n });\n },\n },\n\n hide: {\n event: 'mouseleave',\n target: $target,\n },\n\n style: {\n classes: qtipClass ? 'qtip-' + qtipClass : null,\n },\n },\n extraOpts\n ),\n evt\n );\n\n $target.on('indico:closeAutoTooltip', function() {\n qtip.qtip('hide');\n });\n }\n );\n\n // Enable colorbox for links with .js-lightbox\n $('body').on('click', 'a.js-lightbox', function() {\n $(this).colorbox({\n maxHeight: '90%',\n maxWidth: '90%',\n loop: false,\n photo: true,\n returnFocus: false,\n });\n });\n\n // Prevent # in the URL when clicking disabled links\n $('body').on('click', 'a.disabled', function(evt) {\n evt.preventDefault();\n });\n\n $('.contextHelp[data-src]').qtip({\n content: {\n text: function() {\n return $($(this).data('src')).removeClass('tip');\n },\n },\n });\n\n function initDropdowns($container) {\n $container.find('.js-dropdown').each(function() {\n $(this)\n .parent()\n .dropdown({\n selector: '.js-dropdown',\n });\n });\n }\n\n $('body').on('indico:htmlUpdated', function(evt) {\n initDropdowns($(evt.target));\n });\n initDropdowns($('body'));\n\n if (navigator.userAgent.match(/Trident\\/7\\./)) {\n // Silly IE11 will clear the second password field if\n // password autocompletion is enabled!\n // https://social.msdn.microsoft.com/Forums/en-US/7d02173f-8f45-4a74-90bf-5dfbd8f9c1de/ie-11-issue-with-two-password-input-fields\n $('input:password').each(function() {\n if (!this.value && this.getAttribute('value')) {\n this.value = this.getAttribute('value');\n }\n });\n }\n\n // jQuery UI prevents anything outside modal dialogs from gaining focus.\n // This breaks e.g. the session color date selector. To fix this we prevent\n // the focus trap (focusin event bound on document) from ever receiving the\n // event in case the z-index of the focused event is higher than the dialog's.\n function getMaxZ(elem) {\n var maxZ = 0;\n elem\n .parents()\n .addBack()\n .each(function() {\n var z = +$(this).css('zIndex');\n if (!isNaN(z)) {\n maxZ = Math.max(z, maxZ);\n }\n });\n return maxZ;\n }\n\n $('body').on('focusin', function(e) {\n if (!$.ui.dialog.overlayInstances) {\n return;\n }\n\n if (getMaxZ($(e.target)) > getMaxZ($('.ui-dialog:visible:last'))) {\n e.stopPropagation();\n }\n });\n\n // Prevent BACK in browser with backspace when focused on a readonly field\n $('input, textarea').on('keydown', function(e) {\n if (this.readOnly && e.key === 'Backspace') {\n e.preventDefault();\n }\n });\n\n $('input.permalink').on('focus', function() {\n this.select();\n });\n\n showFormErrors();\n\n // Show form creation dialog if hash is present in the URL\n const match = location.hash.match(\n /^#create-event:(lecture|meeting|conference)(?::(\\d*)(?::([a-f0-9-]{36}))?)?$/\n );\n if (match) {\n const [, eventType, categoryId, eventUUID] = match;\n const title = {\n lecture: $T.gettext('Create new lecture'),\n meeting: $T.gettext('Create new meeting'),\n conference: $T.gettext('Create new conference'),\n }[eventType];\n let url;\n if (categoryId && eventUUID) {\n url = build_url(Indico.Urls.EventCreation, {\n event_type: eventType,\n category_id: categoryId,\n event_uuid: eventUUID,\n });\n } else if (categoryId) {\n url = build_url(Indico.Urls.EventCreation, {event_type: eventType, category_id: categoryId});\n } else if (eventUUID) {\n url = build_url(Indico.Urls.EventCreation, {event_type: eventType, event_uuid: eventUUID});\n } else {\n url = build_url(Indico.Urls.EventCreation, {event_type: eventType});\n }\n ajaxDialog({url, title});\n }\n});\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n/* global showFormErrors:false, initForms:false */\n\nimport {$T} from '../../utils/i18n';\n\n(function($) {\n $.widget('indico.ajaxqbubble', {\n options: {\n qBubbleOptions: {\n position: {\n effect: false,\n },\n content: {\n text: $('<span>', {text: $T.gettext('Loading...')}),\n },\n },\n url: null,\n method: 'GET',\n cache: false,\n success: null,\n onClose: null, // callback to invoke after closing the qtip by submitting the inner form. the argument\n // is null if closed manually, otherwise the JSON returned by the server.\n qtipConstructor: null,\n },\n\n _create: function() {\n var self = this;\n var qBubbleOptions = _.pick(self.options, 'qBubbleOptions').qBubbleOptions;\n var ajaxOptions = _.omit(self.options, 'qBubbleOptions');\n var returnData = null;\n\n var options = $.extend(true, {}, qBubbleOptions, {\n events: {\n show: function(evt, api) {\n $.ajax(\n $.extend(true, {}, ajaxOptions, {\n complete: IndicoUI.Dialogs.Util.progress(),\n error: handleAjaxError,\n success: function(data, _, xhr) {\n if ($.isFunction(ajaxOptions.success)) {\n ajaxOptions.success.call(self.element, data);\n }\n\n var loadedURL = xhr.getResponseHeader('X-Indico-URL');\n if (loadedURL) {\n // in case of a redirect we need to update the url used to submit the ajaxified\n // form. otherwise url normalization might fail during the POST requests.\n // we also remove the _=\\d+ cache buster since it's only relevant for the GET\n // request and added there automatically\n loadedURL = loadedURL\n .replace(/&_=\\d+/, '')\n .replace(/\\?_=\\d+$/, '')\n .replace(/\\?_=\\d+&/, '?');\n }\n\n function updateContent(data) {\n if (data) {\n api.set(\n 'content.text',\n ajaxifyForm(\n $(data.html)\n .find('form')\n .addBack('form')\n )\n );\n if (data.js) {\n $('body').append(data.js);\n }\n }\n }\n\n function ajaxifyForm($form) {\n initForms($form);\n var killProgress;\n return $form.ajaxForm({\n url: $form.attr('action') || loadedURL,\n method: 'POST',\n error: handleAjaxError,\n beforeSubmit: function() {\n killProgress = IndicoUI.Dialogs.Util.progress();\n },\n complete: function() {\n killProgress();\n },\n success: function(data) {\n if (data.success) {\n self.element.next('.label').text(data.new_value);\n returnData = data;\n api.hide(true);\n } else {\n updateContent(data);\n showFormErrors($('#qtip-' + api.id + '-content'));\n }\n },\n });\n }\n\n updateContent(data);\n },\n })\n );\n if (qBubbleOptions.events && qBubbleOptions.events.show) {\n qBubbleOptions.events.show(evt, api);\n }\n },\n hide: function(evt, api) {\n var originalEvent = evt.originalEvent;\n\n if (self.options.onClose) {\n self.options.onClose(returnData);\n }\n returnData = null;\n\n // in order not to hide the qBubble when selecting a date\n if (originalEvent && $(originalEvent.target).closest('#ui-datepicker-div').length) {\n return false;\n }\n\n if (qBubbleOptions.events && qBubbleOptions.events.hide) {\n qBubbleOptions.events.hide(evt, api);\n }\n return true;\n },\n hidden: function(evt, api) {\n api.get('content.text').remove();\n if (qBubbleOptions.events && qBubbleOptions.events.hidden) {\n qBubbleOptions.events.hidden(evt, api);\n }\n },\n },\n });\n if (self.options.qtipConstructor) {\n self.options.qtipConstructor(self.element, options);\n } else {\n self.element.qbubble(options);\n }\n },\n });\n})(jQuery);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n/* eslint-disable max-len */\n/* global _ */\n\nimport {$T} from '../../utils/i18n';\nimport Palette from '../../utils/palette';\n\n(function($) {\n $.widget('indico.categorynavigator', {\n options: {\n // ID or serialized data of the current category\n category: 0,\n // Text for action buttons\n actionButtonText: $T.gettext('Select'),\n // Prompt confirmation before action\n confirmation: false,\n // Text for placeholder in empty categories\n emptyCategoryText: $T.gettext(\"This category doesn't contain any subcategory\"),\n // A dialog opens with the navigator rendered on it\n openInDialog: false,\n // The title for the category navigator dialog\n dialogTitle: $T.gettext('Select a category'),\n // The subtitle for the category navigator dialog\n dialogSubtitle: null,\n // Disallow action on specific categories\n actionOn: {\n categoriesWithoutEventProposalRights: {\n disabled: false,\n message: $T.gettext('Not possible for categories where you cannot propose events'),\n },\n categoriesWithoutEventProposalOrCreationRights: {\n disabled: false,\n message: $T.gettext('Not possible for categories where you cannot propose/create events'),\n },\n categoriesWithoutEventCreationRights: {\n disabled: false,\n message: $T.gettext('Not possible for categories where you cannot create events'),\n },\n categoriesWithoutCategoryManagementRights: {\n disabled: false,\n message: $T.gettext('Not possible for categories where you are not a manager'),\n },\n categoriesDescendingFrom: {\n disabled: false,\n ids: [],\n // The closest parent category title will be used if more than one parent is present in ids\n message: $T.gettext('Not possible for categories descending from category \"{0}\"'),\n },\n categories: {\n disabled: false,\n message: $T.gettext('Not possible for this category'),\n ids: [],\n // Expects an Array of {ids: [...], message: '...'} for more specific messages\n groups: [],\n },\n },\n // Callback for action button\n // If it returns a deferred object the dialog will close only when it gets resolved\n onAction() {},\n },\n\n // Caches for data of already visited categories and search results\n // Shared between instances\n _categories: {},\n _subcategories: {},\n _searchResultData: {},\n\n // Requests awaiting for response\n _currentCategoryRequest: null,\n _currentSearchRequest: null,\n\n _create() {\n const self = this;\n if (_.isObject(self.options.category)) {\n self._fillCache(self.options.category);\n self._categoryId = self.options.category.category.id;\n } else {\n self._categoryId = self.options.category || 0;\n }\n if (self.options.openInDialog) {\n self._createInDialog();\n } else {\n self._createInline();\n }\n },\n\n _createInline() {\n const self = this;\n self.element.addClass('categorynav');\n self._createList();\n self._createSearchField();\n self._createBindings();\n self.goToCategory(self._categoryId);\n },\n\n _createInDialog() {\n const self = this;\n const $content = $('<div>', {class: 'categorynav-dialog-content'});\n ajaxDialog({\n title: self.options.dialogTitle,\n subtitle: self.options.dialogSubtitle,\n content: $content[0].outerHTML,\n closeButton: true,\n fullyModal: true,\n onOpen(dialog) {\n self.element = dialog.contentContainer.children('.categorynav-dialog-content');\n self.dialog = dialog;\n self._createInline();\n },\n });\n },\n\n _createList() {\n const self = this;\n self.$category = $('<div>');\n self.$categoryTree = $('<ul>', {class: 'group-list'});\n self.$categoryResultsList = $('<ul>', {class: 'group-list search-results-list'});\n self.$categoryResultsInfo = $('<div>', {class: 'search-result-info'});\n self.$spinner = $('<div>', {class: 'spinner-wrapper'}).append(\n $('<div>', {class: 'i-spinner'})\n );\n self.$placeholderEmpty = $('<div>', {class: 'placeholder'});\n self.$placeholderNoResults = $('<div>', {class: 'placeholder'});\n self.$categoryList = $('<div>', {class: 'category-list'})\n .append(self.$category)\n .append(self.$categoryTree)\n .append(self.$categoryResultsInfo)\n .append(self.$categoryResultsList)\n .append(self.$spinner)\n .append(self.$placeholderEmpty)\n .append(self.$placeholderNoResults);\n self._toggleSearchResultsView(false);\n self.element.append(self.$categoryList);\n },\n\n _createSearchField() {\n const self = this;\n self.$searchInput = $('<input>', {\n type: 'search',\n placeholder: $T.gettext('Search'),\n });\n self.element.prepend(self.$searchInput);\n self.$searchInput.realtimefilter({\n wait: 500,\n callback(value) {\n if (!value) {\n self._clearSearch();\n } else {\n self.searchCategories(value);\n }\n },\n });\n },\n\n _createBindings() {\n const self = this;\n self.element.on('click', '.js-action', function(evt) {\n const $this = $(this);\n evt.stopPropagation();\n if (!$this.hasClass('disabled')) {\n self._onAction($this.data('categoryId'));\n }\n });\n self.element.on('click', '.js-go-to', function(evt) {\n const categoryId = $(this).data('categoryId');\n self.goToCategory(categoryId);\n evt.preventDefault();\n });\n self.element.on('click', '.js-navigate-up', function() {\n const parentId = $(this).data('parentId');\n self.goToCategory(parentId);\n });\n self.element.on('click', '.js-search', function() {\n self.$searchInput.focus();\n self.$searchInput.effect('highlight', {color: Palette.highlight});\n });\n self.element.on('click', '.js-clear-search', function() {\n self._clearSearch();\n });\n },\n\n _buildBreadcrumbs(path, clickable) {\n const $breadcrumbs = $('<ul>', {class: 'breadcrumbs'});\n const tag = clickable ? '<a>' : '<span>';\n\n _.each(path, function(category, idx) {\n const $item = $('<li>');\n const $segment = $(tag, {\n 'text': category.title,\n 'data-category-id': category.id,\n }).toggleClass('js-go-to', clickable);\n if (idx === 0) {\n $item.text(`${$T.gettext('in')} `);\n }\n if (clickable) {\n $segment.attr('href', '');\n $segment.attr('title', $T.gettext('Go to: {0}'.format(category.title)));\n }\n $breadcrumbs.append($item.append($segment));\n });\n\n return $breadcrumbs;\n },\n\n _buildCategory(category, isSubcategory, withBreadcrumbs, clickableBreadcrumbs) {\n const self = this;\n const tag = isSubcategory ? '<li>' : '<div>';\n const itemClass = isSubcategory ? 'subcategory' : 'current-category';\n\n const $category = $(tag, {\n class: `item ${itemClass}`,\n id: `category-${category.id}`,\n });\n\n const $categoryTitle = $('<div>', {class: 'title-wrapper'});\n $categoryTitle.append(\n $('<span>', {\n class: 'title',\n text: category.title,\n })\n );\n\n if (withBreadcrumbs && category.parent_path.length) {\n var $breadcrumbs = self._buildBreadcrumbs(category.parent_path, clickableBreadcrumbs);\n $categoryTitle.append($breadcrumbs);\n }\n\n $category.append($('<div>', {class: 'icon-wrapper'}));\n $category.append($categoryTitle);\n $category.append(self._buildSidePanel(category, isSubcategory));\n\n const $protectionIcon = $('<span>', {\n class: 'protection',\n title: $T.gettext('This category is protected'),\n }).toggleClass('icon-shield', category.is_protected);\n if (isSubcategory) {\n const $protection = $('<div>', {class: 'protection-wrapper'}).append($protectionIcon);\n $categoryTitle.before($protection);\n } else if (category.is_protected) {\n $breadcrumbs.before($protectionIcon);\n }\n\n return $category;\n },\n\n _buildCurrentCategory(category) {\n const self = this;\n return self._buildCategory(category, false, true, true);\n },\n\n _buildSubcategory(category, withBreadcrumbs) {\n const self = this;\n const $subcategory = self._buildCategory(category, true, withBreadcrumbs, false);\n\n if (category.can_access) {\n $subcategory.addClass('can-access js-go-to');\n $subcategory.data('categoryId', category.id);\n }\n\n return $subcategory;\n },\n\n _buildSidePanel(category, forSubcategory) {\n const self = this;\n const $buttonWrapper = $('<div>', {class: 'button-wrapper'});\n const $button = $('<span>', {\n 'class': 'action-button js-action',\n 'text': self.options.actionButtonText,\n 'data-category-id': category.id,\n });\n $buttonWrapper.append($('<div>').append($button));\n\n const canActOn = self._canActOn(category, true);\n if (!canActOn.allowed) {\n $button.addClass('disabled').attr('title', canActOn.message);\n }\n\n if (!forSubcategory && category.parent_path && category.parent_path.length) {\n const parent = _.last(category.parent_path);\n const $arrowUp = $('<a>', {\n 'class': 'icon-arrow-up navigate-up js-navigate-up',\n 'title': $T.gettext('Go to parent: {0}'.format(parent.title)),\n 'data-parent-id': parent.id,\n });\n $buttonWrapper.append($arrowUp);\n }\n\n if (forSubcategory) {\n const $info = $('<div>', {\n class: 'stats icon-list',\n title: `${$T\n .ngettext('{0} category', '{0} categories', category.deep_category_count)\n .format(category.deep_category_count)} | ${$T\n .ngettext('{0} event', '{0} events', category.deep_event_count)\n .format(category.deep_event_count)}`,\n });\n const $categories = $('<span>', {\n class: 'categories-count',\n text: category.deep_category_count,\n });\n const $events = $('<span>', {\n class: 'events-count',\n text: category.deep_event_count,\n });\n const $separator = $('<span>', {\n class: 'stats-separator',\n text: ' | ',\n });\n $info\n .append($categories)\n .append($separator)\n .append($events);\n $buttonWrapper.append($info);\n }\n\n return $buttonWrapper;\n },\n\n _buildPlaceholder(category) {\n const self = this;\n const $placeholder = $('<div>').append(\n $('<div>', {class: 'placeholder-text', text: self.options.emptyCategoryText})\n );\n const parent = _.last(category.parent_path);\n const actionButtonText = self.options.actionButtonText.toLowerCase();\n let html;\n if (!category.parent_path.length) {\n // Root category is empty\n if (self._canActOn(category)) {\n html = $T\n .gettext('You can only <a class=\"js-action\" data-category-id=\"{0}\">{1}</a> this one.')\n .format(category.id, actionButtonText);\n }\n } else if (self._canActOn(category)) {\n html = $T\n .gettext(\n 'You can <a class=\"js-action\" data-category-id=\"{0}\">{1}</a> this one, ' +\n '<a class=\"js-navigate-up\" data-parent-id=\"{2}\">navigate up</a> ' +\n 'or <a class=\"js-search\">search</a>.'\n )\n .format(category.id, actionButtonText, parent.id);\n } else {\n html = $T\n .gettext(\n 'You can <a class=\"js-navigate-up\" data-parent-id=\"{2}\">navigate up</a> ' +\n 'or <a class=\"js-search\">search</a>.'\n )\n .format(category.id, actionButtonText, parent.id);\n }\n $placeholder.append($('<div>', {html}));\n return $placeholder;\n },\n\n _buildNoResultsPlaceholder() {\n const $placeholder = $('<div>')\n .append(\n $('<div>', {\n class: 'placeholder-text',\n text: $T.gettext(\"Your search doesn't match any category\"),\n })\n )\n .append(\n $('<div>', {\n html: $T.gettext(\n 'You can <a class=\"js-search\">modify</a> or ' +\n '<a class=\"js-clear-search\">clear</a> your search.'\n ),\n })\n );\n return $placeholder;\n },\n\n _ellipsizeBreadcrumbs($category) {\n const $breadcrumbs = $category.find('.breadcrumbs');\n const availableSpace = $category.find('.title-wrapper').width();\n const $ellipsis = $('<li>', {class: 'ellipsis'});\n const shortened = false;\n\n // Prevent infinite loop if for any reason $category is not in DOM\n if (!availableSpace) {\n return;\n }\n\n while ($breadcrumbs.outerWidth() >= availableSpace) {\n const $segments = $breadcrumbs.children(':not(.ellipsis)');\n const middleIndex = Math.floor($segments.length / 2);\n if (!shortened) {\n $segments.eq(middleIndex).replaceWith($ellipsis);\n } else {\n $segments.eq(middleIndex).remove();\n }\n }\n },\n\n _highlightQuery(query, $result) {\n const $title = $result.find('.title');\n const title = $title.text();\n const indexStart = title.toLowerCase().search(query.toLowerCase());\n const indexEnd = indexStart + query.length;\n\n const prefix = $('<span />').text(title.substring(0, indexStart));\n const highlight = $('<strong />').text(title.substring(indexStart, indexEnd));\n const suffix = $('<span />').text(title.substring(indexEnd));\n\n $title.empty().append(prefix, highlight, suffix);\n },\n\n _renderCurrentCategory(category) {\n const self = this;\n const $currentCategory = self._buildCurrentCategory(category);\n self.$category.replaceWith($currentCategory);\n self.$category = $currentCategory;\n self._ellipsizeBreadcrumbs(self.$category);\n },\n\n _renderCategoryTree(subcategories, category) {\n const self = this;\n _.each(subcategories, function(subcategory) {\n self.$categoryTree.append(self._buildSubcategory(subcategory));\n });\n if (!subcategories.length) {\n self.$placeholderEmpty.html(self._buildPlaceholder(category));\n }\n self._postRenderList();\n },\n\n _renderSearchResults(categories, query) {\n const self = this;\n self.$category.hide();\n self.$categoryResultsList.empty();\n self._toggleSearchResultsView(true);\n _.each(categories, function(category) {\n const $result = self._buildSubcategory(category, true);\n if (category.is_favorite) {\n $result.find('.icon-wrapper').append(\n $('<i>', {\n class: 'icon-star',\n title: $T.gettext('In favorite categories'),\n })\n );\n } else {\n $result.find('.icon-wrapper').append(\n $('<i>', {\n class: 'icon-search',\n title: $T.gettext('Search result'),\n })\n );\n }\n self._highlightQuery(query, $result);\n self.$categoryResultsList.append($result);\n self._ellipsizeBreadcrumbs($result);\n });\n if (!categories.length) {\n self.$placeholderNoResults.html(self._buildNoResultsPlaceholder());\n } else {\n self.$placeholderNoResults.empty();\n }\n self._postRenderList();\n },\n\n _renderSearchResultInfo(count, totalCount) {\n const self = this;\n const $stats = $('<span>', {\n class: 'result-stats',\n text: totalCount\n ? $T.gettext('Displaying {0} out of {1} results.').format(count, totalCount)\n : $T.gettext('There are no results.'),\n });\n if (totalCount !== count || !totalCount) {\n $stats.text(\n `${$stats.text()} ${$T('Make the search more specific for more accurate results')}`\n );\n }\n const $clear = $('<a>', {\n class: 'clear js-clear-search',\n text: $T.gettext('Clear search'),\n });\n self.$categoryResultsInfo.empty();\n self.$categoryResultsInfo\n .append($stats)\n .append($clear)\n .show();\n },\n\n _postRenderList() {\n const self = this;\n let statsMaxWidth = 0;\n const $stats = self.$categoryList.find('.item:not(.hiding) .stats:visible');\n\n $stats.each(function() {\n const width = this.getBoundingClientRect().width;\n if (width > statsMaxWidth) {\n statsMaxWidth = width;\n }\n });\n\n // Set uniform stats width for maintaining horizontal alignment\n $stats.width(Math.ceil(statsMaxWidth));\n\n // Indents subcategories when protection icon is visible\n const hasProtectedCategories = !!self.$categoryTree.find('.icon-shield').length;\n self.$categoryTree.toggleClass('with-protected', hasProtectedCategories);\n\n // Make sure the list stays always scrolled at the top\n self.$categoryTree.scrollTop(0);\n },\n\n _getCurrentCategory(id) {\n const self = this;\n const dfd = $.Deferred();\n\n function resolve() {\n dfd.resolve(self._categories[id]);\n }\n\n if (self._categories[id]) {\n _.defer(resolve);\n } else {\n self._fetchCategory(id, resolve);\n }\n\n return dfd.promise();\n },\n\n _getCategoryTree(id) {\n const self = this;\n const dfd = $.Deferred();\n\n function resolve() {\n const subcategories = [];\n _.each(self._subcategories[id], function(scId) {\n subcategories.push(self._categories[scId]);\n });\n dfd.resolve(subcategories, self._categories[id]);\n }\n\n if (self._subcategories[id]) {\n _.defer(resolve);\n } else {\n self._fetchCategory(id, resolve);\n }\n\n return dfd.promise();\n },\n\n _getSearchResults(query) {\n const self = this;\n const dfd = $.Deferred();\n\n function resolve() {\n dfd.resolve(self._searchResultData[query], query);\n }\n\n if (self._searchResultData[query]) {\n _.defer(resolve);\n } else {\n self._fetchSearchResults(query, resolve);\n }\n\n return dfd.promise();\n },\n\n _fetchCategory(id, callback) {\n const self = this;\n\n // Don't send another request if one for the same ID is ongoing\n if (self._currentCategoryRequest && self._currentCategoryRequest.categoryId === id) {\n self._currentCategoryRequest.then(callback);\n return;\n }\n\n self._currentCategoryRequest = $.ajax({\n url: build_url(Indico.Urls.Categories.info, {category_id: id}),\n dataType: 'json',\n beforeSend() {\n self._toggleLoading(true, true);\n },\n complete() {\n self._toggleLoading(false, true);\n self._currentCategoryRequest = null;\n },\n error(xhr) {\n // XXX: Re-enable error handling once we skip retrieving protected parents\n if (xhr.status !== 403) {\n handleAjaxError(xhr);\n }\n },\n success(data) {\n if (data && self._isInDOM()) {\n self._fillCache(data);\n callback();\n }\n },\n });\n\n self._currentCategoryRequest.categoryId = id;\n },\n\n _fetchReachableCategories(id) {\n const self = this;\n $.ajax({\n url: build_url(Indico.Urls.Categories.infoFrom, {category_id: id}),\n method: 'POST',\n dataType: 'json',\n contentType: 'application/json',\n data: JSON.stringify({\n exclude: _.map(_.keys(self._subcategories), function(n) {\n return +n;\n }),\n }),\n success(data) {\n if (data) {\n _.each(data.categories, function(category) {\n self._fillCache(category);\n });\n }\n },\n });\n },\n\n _fetchSearchResults(query, callback) {\n const self = this;\n\n function fillCache(data) {\n self._searchResultData[query] = data;\n _.each(data.categories, self._fillSingleCategoryCache.bind(self));\n }\n\n self._currentSearchRequest = $.ajax({\n url: build_url(Indico.Urls.Categories.search),\n data: {q: query},\n beforeSend() {\n if (self._currentSearchRequest != null) {\n self._currentSearchRequest.abort();\n }\n self._toggleLoading(true);\n },\n complete() {\n self._toggleLoading(false);\n },\n error(jqXHR) {\n if (jqXHR.statusText === 'abort') {\n return;\n }\n handleAjaxError(jqXHR);\n },\n success(data) {\n if (data && self._isInDOM()) {\n fillCache(data);\n callback();\n }\n },\n });\n },\n\n _fillCache(data) {\n const self = this;\n self._categories[data.category.id] = _.omit(data.category, 'subcategories');\n self._subcategories[data.category.id] = _.pluck(data.subcategories, 'id');\n _.each(data.subcategories, self._fillSingleCategoryCache.bind(self));\n _.each(data.supercategories, self._fillSingleCategoryCache.bind(self));\n },\n\n _fillSingleCategoryCache(category) {\n const self = this;\n self._categories[category.id] = $.extend(self._categories[category.id], category);\n },\n\n _clearSearch() {\n const self = this;\n\n if (self._currentSearchRequest != null) {\n self._currentSearchRequest.abort();\n }\n self.$category.show();\n self.$searchInput.realtimefilter('clear');\n self._toggleSearchResultsView(false);\n self.$placeholderNoResults.empty();\n self._toggleTreeView(true);\n },\n\n _onAction(categoryId) {\n const self = this;\n\n function callback() {\n let res = self.options.onAction(self._categories[categoryId]);\n if (res === undefined) {\n res = $.Deferred().resolve();\n }\n\n res.then(function() {\n if (self.dialog) {\n self.dialog.close();\n }\n });\n }\n\n if (self.options.confirmation) {\n const text = $T\n .gettext('You selected category \"{0}\". Are you sure you want to proceed?')\n .format(self._categories[categoryId].title);\n confirmPrompt(text, $T.gettext('Confirm action')).then(callback);\n } else {\n callback();\n }\n },\n\n _canActOn(category, withMessage) {\n const self = this;\n let result = {allowed: true, message: ''};\n const canActOnCategories = self._canActOnCategories(category, true);\n const canActOnCategoriesDescendingFrom = self._canActOnCategoriesDescendingFrom(\n category,\n true\n );\n const canActOnCategoriesWithoutEventCreationRights = self._canActOnCategoriesWithoutEventCreationRights(\n category,\n true\n );\n const canActOnCategoriesWithoutCategoryManagementRights = self._canActOnCategoriesWithoutCategoryManagementRights(\n category,\n true\n );\n const canActOnCategoriesWithoutEventProposalRights = self._canActOnCategoriesWithoutEventProposalRights(\n category,\n true\n );\n const canActOnCategoriesWithoutEventProposalOrCreationRights = self._canActOnCategoriesWithoutEventProposalOrCreationRights(\n category,\n true\n );\n\n if (!canActOnCategories.allowed) {\n result = canActOnCategories;\n } else if (!canActOnCategoriesDescendingFrom.allowed) {\n result = canActOnCategoriesDescendingFrom;\n } else if (!canActOnCategoriesWithoutEventCreationRights.allowed) {\n result = canActOnCategoriesWithoutEventCreationRights;\n } else if (!canActOnCategoriesWithoutCategoryManagementRights.allowed) {\n result = canActOnCategoriesWithoutCategoryManagementRights;\n } else if (!canActOnCategoriesWithoutEventProposalRights.allowed) {\n result = canActOnCategoriesWithoutEventProposalRights;\n } else if (!canActOnCategoriesWithoutEventProposalOrCreationRights.allowed) {\n result = canActOnCategoriesWithoutEventProposalOrCreationRights;\n }\n\n return withMessage ? result : result.allowed;\n },\n\n _canActOnCategoriesWithoutEventCreationRights(category, withMessage) {\n const self = this;\n const result = {allowed: true, message: ''};\n const categoriesWithoutEventCreationRights =\n self.options.actionOn.categoriesWithoutEventCreationRights;\n if (categoriesWithoutEventCreationRights.disabled && !category.can_create_events) {\n result.allowed = false;\n result.message = categoriesWithoutEventCreationRights.message;\n }\n return withMessage ? result : result.allowed;\n },\n\n _canActOnCategoriesWithoutCategoryManagementRights(category, withMessage) {\n const self = this;\n const result = {allowed: true, message: ''};\n const categoriesWithoutCategoryManagementRights =\n self.options.actionOn.categoriesWithoutCategoryManagementRights;\n if (categoriesWithoutCategoryManagementRights.disabled && !category.can_manage) {\n result.allowed = false;\n result.message = categoriesWithoutCategoryManagementRights.message;\n }\n return withMessage ? result : result.allowed;\n },\n\n _canActOnCategoriesWithoutEventProposalRights(category, withMessage) {\n const self = this;\n const result = {allowed: true, message: ''};\n const categoriesWithoutEventProposalRights =\n self.options.actionOn.categoriesWithoutEventProposalRights;\n if (categoriesWithoutEventProposalRights.disabled && !category.can_propose_events) {\n result.allowed = false;\n result.message = categoriesWithoutEventProposalRights.message;\n }\n return withMessage ? result : result.allowed;\n },\n\n _canActOnCategoriesWithoutEventProposalOrCreationRights(category, withMessage) {\n const self = this;\n const result = {allowed: true, message: ''};\n const categoriesWithoutEventProposalOrCreationRights =\n self.options.actionOn.categoriesWithoutEventProposalOrCreationRights;\n if (\n categoriesWithoutEventProposalOrCreationRights.disabled &&\n !category.can_propose_events &&\n !category.can_create_events\n ) {\n result.allowed = false;\n result.message = categoriesWithoutEventProposalOrCreationRights.message;\n }\n return withMessage ? result : result.allowed;\n },\n\n _canActOnCategoriesDescendingFrom(category, withMessage) {\n const self = this;\n const result = {allowed: true, message: ''};\n const categoriesDescendingFrom = self.options.actionOn.categoriesDescendingFrom;\n\n if (categoriesDescendingFrom.disabled) {\n let id;\n const pathIds = _.pluck(category.parent_path, 'id').reverse();\n const ids = categoriesDescendingFrom.ids;\n for (const i in pathIds) {\n id = pathIds[i];\n if (_.contains(ids, id)) {\n result.allowed = false;\n result.message = categoriesDescendingFrom.message.format(self._categories[id].title);\n break;\n }\n }\n }\n\n return withMessage ? result : result.allowed;\n },\n\n _canActOnCategories(category, withMessage) {\n const self = this;\n const result = {allowed: true, message: ''};\n const categories = self.options.actionOn.categories;\n\n if (categories.disabled) {\n if (_.contains(categories.ids, category.id)) {\n result.allowed = false;\n result.message = categories.message;\n } else {\n for (const i in categories.groups) {\n const group = categories.groups[i];\n if (_.contains(group.ids, category.id)) {\n result.allowed = false;\n result.message = group.message;\n break;\n }\n }\n }\n }\n\n return withMessage ? result : result.allowed;\n },\n\n _toggleLoading(state, disableInput) {\n const self = this;\n self.$categoryList.toggleClass('loading', state);\n if (disableInput) {\n self.element.find('input').prop('disabled', state);\n }\n },\n\n _toggleTreeView(visible) {\n const self = this;\n self.$category.toggle(visible);\n self.$categoryTree.toggle(visible);\n self.$placeholderEmpty.toggleClass('hidden', !visible);\n },\n\n _toggleSearchResultsView(visible) {\n const self = this;\n self.$categoryResultsInfo.toggle(visible);\n self.$categoryResultsList.toggle(visible);\n },\n\n _isInDOM() {\n const self = this;\n return $.contains(document, self.element[0]);\n },\n\n goToCategory(id) {\n const self = this;\n\n function render() {\n self._clearSearch();\n self.$categoryTree.empty();\n self._getCurrentCategory(id).then(self._renderCurrentCategory.bind(self));\n self._getCategoryTree(id).then(self._renderCategoryTree.bind(self));\n self._fetchReachableCategories(id);\n }\n\n self.$placeholderEmpty.empty();\n if (!self.$categoryTree.is(':empty')) {\n self.$categoryTree.slideUp(300, render);\n } else {\n render();\n }\n },\n\n searchCategories(query) {\n const self = this;\n\n if (query.length < 3) {\n return;\n }\n\n self._toggleTreeView(false);\n self._toggleSearchResultsView(false);\n self._getSearchResults(query).then(function(data, query) {\n // eslint-disable-line no-shadow\n self._renderSearchResultInfo(data.categories.length, data.total_count);\n self._renderSearchResults(data.categories, query);\n });\n },\n });\n})(jQuery);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\nimport {natSortCompare} from 'indico/utils/sort';\n\nimport {$T} from '../../utils/i18n';\n\n(function($) {\n 'use strict';\n\n $.widget('indico.itempicker', {\n options: {\n onSelect: null, // function called every time an item gets selected from the list\n checkedItemIcon: 'icon-checkmark',\n uncheckedItemIcon: 'icon-stop',\n items: null, // all the options that should be included in the dropdown\n footerElements: null, // list of objects with (title, callback) keys\n containerClasses: '', // extra classes to be applied to the container\n filterPlaceholder: $T.gettext('Type to filter...'), // text displayed inside the input field\n },\n\n _create: function() {\n this.selectedItem = null;\n this._createItemsDict(this.options.items || this.element.data('items') || []);\n\n var qbubbleContent = this._createQbubbleContent(this.itemsDict);\n\n this.element.qbubble({\n prerender: true,\n show: {\n ready: true,\n },\n content: {\n text: qbubbleContent,\n },\n style: {\n classes: 'item-picker-qbubble {0}'.format(this.options.containerClasses),\n },\n position: {\n my: 'right top',\n at: 'left top',\n },\n events: {\n show: this._filter(qbubbleContent),\n },\n });\n },\n\n _filter: function(qbubbleContent) {\n _.defer(function() {\n function handleInput() {\n var $this = $(this);\n var textTyped = $this\n .val()\n .trim()\n .toLowerCase();\n var dropdownContainer = $this.closest('.dropdown-container');\n dropdownContainer.find('.dropdown-item').each(function() {\n var $item = $(this);\n var found =\n $item\n .data('filter')\n .toLowerCase()\n .indexOf(textTyped) !== -1;\n $item.toggle(found);\n });\n }\n qbubbleContent\n .find('.filter-input')\n .clearableinput({onInput: handleInput, onClear: handleInput, focusOnStart: true})\n .focus();\n });\n },\n\n _destroy: function() {\n self.element.qbubble('destroy');\n },\n\n _createItemsDict: function(items) {\n var self = this;\n this.itemsDict = {};\n\n $.each(items, function(index, data) {\n self.itemsDict[data.id] = {data: data, elem: null};\n });\n },\n\n _createQbubbleContent: function(items) {\n var self = this;\n var dropdownContainer = $('<div>', {class: 'dropdown-container'});\n var filterWrapper = $('<div>', {class: 'dropdown-filter-wrapper'});\n var filterInput = $('<input>', {\n type: 'text',\n class: 'filter-input',\n attr: {placeholder: self.options.filterPlaceholder},\n });\n var itemsContainer = $('<div>', {class: 'dropdown-items-container'});\n\n filterWrapper.append(filterInput);\n dropdownContainer.append(filterWrapper);\n\n $.each(items, function(itemId, itemDict) {\n var isSelected = itemId == self.element.data('selected-item-id');\n var itemData = itemDict.data;\n var itemIcon = $('<span>', {class: 'item-icon ' + self.options.uncheckedItemIcon});\n\n var $item = (itemDict.elem = $('<div>', {\n class: 'dropdown-item',\n data: {filter: itemData.title, id: itemId},\n on: {\n click: function() {\n self.hide();\n\n if (self.selectedItem && itemId == self.selectedItem.id) {\n self._handleSelect($item, null, itemData);\n } else {\n self._handleSelect($item, itemData, self.selectedItem);\n }\n },\n },\n }));\n\n if (itemData.colors) {\n itemIcon.css('color', '#' + itemData.colors.background);\n }\n\n $item.append($('<span>', {class: self.options.checkedItemIcon + ' active-item-icon'}));\n $item.append(itemIcon).append($('<span>', {class: 'item-title', text: itemData.title}));\n\n itemsContainer.append($item);\n\n if (isSelected) {\n self._selectItem($item, itemData);\n }\n });\n\n dropdownContainer.append(itemsContainer);\n this._sortItems(itemsContainer);\n\n if (self.options.footerElements) {\n self._appendFooterItems(dropdownContainer);\n }\n\n return dropdownContainer;\n },\n\n updateItemList: function(items) {\n this._createItemsDict(items);\n var qbubbleContent = this._createQbubbleContent(this.itemsDict);\n this.element.qbubble('option', 'content.text', qbubbleContent);\n this.element.qbubble('option', 'show', this._filter(qbubbleContent));\n },\n\n selectItem: function(id) {\n var newItem = id !== null ? this.itemsDict[id].data : null;\n var newElem = this.itemsDict[id !== null ? id : this.selectedItem.id].elem;\n\n this._handleSelect(newElem, newItem, this.selectedItem);\n },\n\n hide: function() {\n this.element.qbubble('hide');\n },\n\n _handleSelect: function(newElem, newItem, oldItem) {\n var promise;\n var self = this;\n\n if ($.isFunction(self.options.onSelect)) {\n promise = self.options.onSelect.call(self.element, newItem, oldItem);\n }\n if (promise === undefined) {\n promise = $.Deferred().resolve();\n }\n\n return promise.then(function() {\n if (newItem) {\n self._selectItem(newElem, newItem);\n } else {\n self._deselectItem(newElem);\n }\n });\n },\n\n _selectItem: function(item, itemData) {\n var itemsContainer = item.closest('.dropdown-items-container');\n var dropdownItems = itemsContainer.find('.dropdown-item');\n\n dropdownItems.css('background', '').removeClass('active');\n itemsContainer.find('.item-title').css('color', '');\n item.addClass('active');\n\n if (itemData.colors) {\n item.css('background', '#' + this._increaseBrightness(itemData.colors.background, 50));\n item\n .find('.item-title')\n .css('color', '#' + this._getContrastYIQ(itemData.colors.background));\n }\n\n this.selectedItem = itemData;\n this._sortItems(itemsContainer);\n },\n\n _sortItems: function(dropdownContainer) {\n var self = this;\n var dropdownItems = dropdownContainer.find('.dropdown-item');\n\n dropdownItems\n .detach()\n .sort(function(a, b) {\n var $a = $(a);\n var $b = $(b);\n\n if (self.selectedItem && $a.data('id') == self.selectedItem.id) return -1;\n if (self.selectedItem && $b.data('id') == self.selectedItem.id) return 1;\n\n return natSortCompare($a.text().toLowerCase(), $b.text().toLowerCase());\n })\n .appendTo(dropdownContainer);\n },\n\n _deselectItem: function(item) {\n this.selectedItem = null;\n item\n .css('background', '')\n .removeClass('active')\n .find('.item-title')\n .css('color', '');\n this._sortItems(item.closest('.dropdown-items-container'));\n },\n\n _increaseBrightness: function(hex, percent) {\n // from http://stackoverflow.com/questions/6443990/javascript-calculate-brighter-colour\n // strip the leading # if it's there\n hex = hex.trim().replace(/^#/, '');\n\n // convert 3 char codes --> 6, e.g. `E0F` --> `EE00FF`\n if (hex.length == 3) {\n hex = hex.replace(/(.)/g, '$1$1');\n }\n\n var r = parseInt(hex.substr(0, 2), 16),\n g = parseInt(hex.substr(2, 2), 16),\n b = parseInt(hex.substr(4, 2), 16);\n\n return (\n (0 | ((1 << 8) + r + ((256 - r) * percent) / 100)).toString(16).substr(1) +\n (0 | ((1 << 8) + g + ((256 - g) * percent) / 100)).toString(16).substr(1) +\n (0 | ((1 << 8) + b + ((256 - b) * percent) / 100)).toString(16).substr(1)\n );\n },\n\n _getContrastYIQ: function(hexColor) {\n var r = parseInt(hexColor.substr(0, 2), 16);\n var g = parseInt(hexColor.substr(2, 2), 16);\n var b = parseInt(hexColor.substr(4, 2), 16);\n var yiq = (r * 299 + g * 587 + b * 114) / 1000;\n return yiq >= 128 ? '000' : 'FFF';\n },\n\n _appendFooterItems: function(container) {\n var self = this;\n var footerElements = self.options.footerElements;\n\n container.append($('<div>', {class: 'divider'}));\n $.each(footerElements, function() {\n var $this = this;\n var actionButton = $('<div>', {\n class: 'action-row',\n text: $this.title,\n on: {\n click: function() {\n self.hide();\n if ($.isFunction($this.onClick)) {\n $this.onClick.call(actionButton, self.element);\n }\n },\n },\n });\n\n container.append(actionButton);\n });\n },\n });\n})(jQuery);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\nimport 'jquery.typewatch';\n\n(function($) {\n $.widget('indico.realtimefilter', {\n options: {\n callback: function() {},\n validation: function() {\n return true;\n },\n clearable: true,\n disableenter: true,\n emptyvalue: '',\n invalidclass: 'invalid',\n wait: 250,\n },\n\n _create: function() {\n var self = this;\n var element = self.element;\n var opt = self.options;\n\n element.typeWatch({\n callback: function() {\n self._callback();\n },\n wait: opt.wait,\n highlight: false,\n captureLength: 0,\n });\n\n if (opt.clearable) {\n element.clearableinput({\n onClear: function() {\n self._callback();\n },\n emptyvalue: opt.emptyvalue,\n });\n }\n\n element.on('cut paste', function() {\n self._delayedCallback();\n });\n\n element.on('focusout', function() {\n if ($(this).val() === '') {\n $(this).val(opt.emptyvalue);\n }\n });\n\n if (opt.disableenter) {\n element.on('keydown', function(e) {\n if (e.key === 'Enter') {\n e.preventDefault();\n }\n });\n }\n },\n\n _callback: function() {\n var self = this;\n var element = self.element;\n var opt = self.options;\n\n if (opt.validation(element)) {\n element.removeClass(opt.invalidclass);\n opt.callback(element.val().trim());\n } else {\n element.addClass(opt.invalidclass);\n }\n },\n\n _delayedCallback: function() {\n var self = this;\n\n setTimeout(function() {\n self._callback();\n }, self.options.wait);\n },\n\n clear: function() {\n var self = this;\n self.setValue('');\n },\n\n setValue: function(value) {\n var self = this;\n if (self.options.clearable) {\n self.element.clearableinput('setValue', value);\n } else {\n self.element.val(value);\n }\n // Needed for typeWatch to refresh its timer\n self.element.trigger('input');\n },\n\n update: function(delayed) {\n var self = this;\n\n if (delayed) {\n self._delayedCallback();\n } else {\n self._callback();\n }\n },\n\n validate: function() {\n var self = this;\n return self.options.validation(self.element);\n },\n });\n})(jQuery);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport {TrackACLField} from 'indico/react/components';\n\n(function($) {\n $.widget('indico.trackrolewidget', {\n options: {\n containerElement: null, // the actual widget containing element\n permissionsInfo: null,\n eventId: null,\n eventRoles: null,\n categoryRoles: null,\n },\n\n _updateValue(newValue, trackId) {\n const roleData = JSON.parse(this.element.val());\n roleData[trackId] = newValue;\n this.element.val(JSON.stringify(roleData));\n },\n\n _renderACLField(trackId, value) {\n const onChange = newValue => this._updateValue(newValue, trackId);\n const element = document.querySelector(`#track-roles-${trackId}`);\n const component = React.createElement(TrackACLField, {\n value,\n permissionInfo: this.options.permissionsInfo,\n eventId: this.options.eventId,\n eventRoles: this.options.eventRoles,\n categoryRoles: this.options.categoryRoles,\n scrollOnOpen: true,\n onChange,\n });\n ReactDOM.render(component, element);\n },\n\n _create() {\n const roleData = JSON.parse(this.element.val());\n Object.entries(roleData).forEach(([trackId, value]) => {\n trackId = trackId === '*' ? 'global' : trackId;\n this._renderACLField(trackId, value);\n });\n },\n });\n})(jQuery);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport {WTFButtonsBooleanField} from 'indico/react/components';\n\nwindow.setupButtonsBooleanWidget = function setupButtonsBooleanWidget({\n fieldId,\n trueCaption,\n falseCaption,\n disabled,\n}) {\n ReactDOM.render(\n <WTFButtonsBooleanField\n checkboxId={`${fieldId}-checkbox`}\n trueCaption={trueCaption}\n falseCaption={falseCaption}\n disabled={disabled}\n />,\n document.getElementById(fieldId)\n );\n};\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport {Captcha} from 'indico/react/components';\n\nwindow.setupCaptchaWidget = function setupCaptchaWidget({containerId, fieldName, settings}) {\n ReactDOM.render(\n <Captcha name={fieldName} settings={settings} wtf />,\n document.getElementById(containerId)\n );\n};\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport {WTFDateField} from 'indico/react/components';\n\nwindow.setupDateWidget = function setupDateWidget(options) {\n options = $.extend(\n true,\n {\n fieldId: null,\n required: false,\n disabled: false,\n allowClear: false,\n earliest: null,\n latest: null,\n linkedField: {\n id: null,\n notBefore: false,\n notAfter: false,\n },\n },\n options\n );\n\n // Make sure the results dropdown are displayed above the dialog.\n const field = $(`#${options.fieldId}`);\n field.closest('.ui-dialog-content').css('overflow', 'inherit');\n field.closest('.exclusivePopup').css('overflow', 'inherit');\n\n ReactDOM.render(\n <WTFDateField\n dateId={`${options.fieldId}-datestorage`}\n required={options.required}\n disabled={options.disabled}\n allowClear={options.allowClear}\n earliest={options.earliest}\n latest={options.latest}\n linkedField={options.linkedField}\n />,\n document.getElementById(options.fieldId)\n );\n};\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport {WTFDateTimeField} from 'indico/react/components';\nimport {localeUses24HourTime} from 'indico/utils/date';\n\nwindow.setupDateTimeWidget = function setupDateTimeWidget(options) {\n options = $.extend(\n true,\n {\n fieldId: null,\n timezoneFieldId: null,\n timezone: null,\n defaultTime: null,\n locale: null,\n required: false,\n disabled: false,\n allowClear: false,\n earliest: null,\n latest: null,\n linkedField: {\n id: null,\n notBefore: false,\n notAfter: false,\n },\n },\n options\n );\n\n // Make sure the results dropdown are displayed above the dialog.\n const field = $(`#${options.fieldId}`);\n field.closest('.ui-dialog-content').css('overflow', 'inherit');\n field.closest('.exclusivePopup').css('overflow', 'inherit');\n\n ReactDOM.render(\n <WTFDateTimeField\n timeId={`${options.fieldId}-timestorage`}\n dateId={`${options.fieldId}-datestorage`}\n timezoneFieldId={options.timezoneFieldId}\n timezone={options.timezone}\n uses24HourFormat={localeUses24HourTime(options.locale.replace('_', '-'))}\n required={options.required}\n disabled={options.disabled}\n allowClear={options.allowClear}\n earliest={options.earliest}\n latest={options.latest}\n defaultTime={options.defaultTime}\n linkedField={options.linkedField}\n />,\n document.getElementById(options.fieldId)\n );\n};\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport {WTFDurationField} from 'indico/react/components';\n\nwindow.setupDurationWidget = function setupDurationWidget({fieldId, required, disabled}) {\n // Make sure the results dropdown is displayed above the dialog.\n const field = $(`#${fieldId}`);\n field.closest('.ui-dialog-content').css('overflow', 'inherit');\n field.closest('.exclusivePopup').css('overflow', 'inherit');\n\n ReactDOM.render(\n <WTFDurationField\n timeId={`${fieldId}-timestorage`}\n required={required}\n disabled={disabled}\n />,\n document.getElementById(fieldId)\n );\n};\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport {WTFTimeField} from 'indico/react/components';\nimport {localeUses24HourTime} from 'indico/utils/date';\n\nwindow.setupTimeWidget = function setupTimeWidget({fieldId, required, disabled, locale}) {\n // Make sure the results dropdown is displayed above the dialog.\n const field = $(`#${fieldId}`);\n field.closest('.ui-dialog-content').css('overflow', 'inherit');\n field.closest('.exclusivePopup').css('overflow', 'inherit');\n\n ReactDOM.render(\n <WTFTimeField\n timeId={`${fieldId}-timestorage`}\n uses24HourFormat={localeUses24HourTime(locale.replace('_', '-'))}\n required={required}\n disabled={disabled}\n />,\n document.getElementById(fieldId)\n );\n};\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport {WTFLinkListField} from 'indico/react/components';\n\nwindow.setupLinkListWidget = function setupLinkListWidget({fieldId}) {\n const wrapperId = `${fieldId}-wrapper`;\n ReactDOM.render(\n <WTFLinkListField fieldId={fieldId} />,\n document.getElementById(wrapperId)\n );\n};\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport {WTFMultipleTagSelectField} from 'indico/react/components';\n\nwindow.setupMultipleTagSelectWidget = function setupMultipleTagSelectWidget({fieldId, choices}) {\n const wrapperId = `${fieldId}-wrapper`;\n // The form dialog has a combination of overflow: hidden and auto.\n // Since WTFMultipleTagSelectField is much larger when expanded, most of its\n // options would not be visible without changing the overflow property to visible.\n const popup = $(`#${wrapperId}`).closest('.exclusivePopup');\n const dialog = popup.parent();\n popup.css('overflow', 'visible');\n dialog.css('overflow', 'visible');\n\n ReactDOM.render(\n <WTFMultipleTagSelectField fieldId={fieldId} wrapperId={wrapperId} choices={choices} />,\n document.getElementById(wrapperId)\n );\n};\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\nimport ReactDOM from 'react-dom';\nimport React from 'react';\nimport {WTFOccurrencesField} from 'indico/react/components';\nimport {localeUses24HourTime} from 'indico/utils/date';\n\nwindow.setupOccurrencesWidget = function setupOccurrencesWidget(options) {\n options = $.extend(\n true,\n {\n fieldId: null,\n locale: null,\n },\n options\n );\n\n ReactDOM.render(\n <WTFOccurrencesField\n fieldId={options.fieldId}\n uses24HourFormat={localeUses24HourTime(options.locale.replace('_', '-'))}\n />,\n document.getElementById(`${options.fieldId}-container`)\n );\n};\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport {WTFParticipantVisibilityField} from 'indico/react/components';\n\nwindow.setupParticipantVisibilityWidget = function setupParticipantVisibilityWidget({\n fieldId,\n values,\n choices,\n}) {\n const wrapperId = `${fieldId}-wrapper`;\n ReactDOM.render(\n <WTFParticipantVisibilityField\n fieldId={fieldId}\n wrapperId={wrapperId}\n values={values}\n choices={choices}\n />,\n document.getElementById(wrapperId)\n );\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"person-link-field\":\"_-web-client-js-react-components-___PersonLinkField-module__person-link-field___G9bpR\",\"segment\":\"_-web-client-js-react-components-___PersonLinkField-module__segment___3cRyu\",\"person-link\":\"_-web-client-js-react-components-___PersonLinkField-module__person-link___1Lylw\",\"handle\":\"_-web-client-js-react-components-___PersonLinkField-module__handle___OIwxa\",\"principal\":\"_-web-client-js-react-components-___PersonLinkField-module__principal___Q7jal\",\"button\":\"_-web-client-js-react-components-___PersonLinkField-module__button___seHEY\",\"delete\":\"_-web-client-js-react-components-___PersonLinkField-module__delete___vzr5-\",\"edit\":\"_-web-client-js-react-components-___PersonLinkField-module__edit___EXHiZ\",\"titled-rule\":\"_-web-client-js-react-components-___PersonLinkField-module__titled-rule___nVweY\",\"label-icon\":\"_-web-client-js-react-components-___PersonLinkField-module__label-icon___YYtKv\",\"roles\":\"_-web-client-js-react-components-___PersonLinkField-module__roles___9xIbv\",\"actions\":\"_-web-client-js-react-components-___PersonLinkField-module__actions___GIobn\",\"icon\":\"_-web-client-js-react-components-___PersonLinkField-module__icon___pqZTz\"};","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\nimport _ from 'lodash';\nimport PropTypes from 'prop-types';\nimport React, {useMemo, useState} from 'react';\nimport {DndProvider} from 'react-dnd';\nimport {HTML5Backend} from 'react-dnd-html5-backend';\nimport {Button, Segment, List, Label, Icon, Popup, Ref} from 'semantic-ui-react';\n\nimport {UserSearch} from 'indico/react/components/principals/Search';\nimport {PrincipalType} from 'indico/react/components/principals/util';\nimport {useFavoriteUsers} from 'indico/react/hooks';\nimport {SortableWrapper, useSortableItem} from 'indico/react/sortable';\nimport {snakifyKeys} from 'indico/utils/case';\nimport {getPluginObjects, renderPluginComponents} from 'indico/utils/plugins';\n\nimport {Translate} from '../i18n';\n\nimport PersonDetailsModal from './PersonDetailsModal';\nimport {PrincipalItem} from './principals/items';\n\nimport './PersonLinkField.module.scss';\n\nconst PersonListItem = ({\n person,\n roles,\n canEdit,\n canDelete,\n onDelete,\n onEdit,\n onClickRole,\n disabled,\n extraParams,\n}) => (\n <PrincipalItem as={List.Item} styleName=\"principal\">\n <PrincipalItem.Icon type={PrincipalType.user} avatarURL={person.avatarURL} styleName=\"icon\" />\n <PrincipalItem.Content\n name={person.name}\n detail={\n (person.email ? `${person.email} ` : '') +\n (person.affiliation ? `(${person.affiliation})` : '')\n }\n />\n <div styleName=\"roles\">\n {roles &&\n roles.map(({name, label, icon, active}, idx) => (\n <Popup\n key={name}\n trigger={\n <Label\n as=\"a\"\n size=\"small\"\n color={active ? 'blue' : undefined}\n onClick={() => onClickRole && onClickRole(idx, roles)}\n >\n {icon ? <Icon styleName=\"label-icon\" name={icon} /> : label}\n </Label>\n }\n disabled={!icon}\n content={label}\n size=\"tiny\"\n />\n ))}\n </div>\n <div styleName=\"actions\">\n {renderPluginComponents('personListItemActions', {person, onEdit, disabled, extraParams})}\n {canEdit && (\n <Icon\n styleName=\"button edit\"\n name=\"pencil alternate\"\n title={Translate.string('Edit person')}\n size=\"large\"\n onClick={() => onEdit('details')}\n disabled={disabled}\n />\n )}\n {canDelete && (\n <Icon\n styleName=\"button delete\"\n name=\"remove\"\n title={Translate.string('Delete person')}\n size=\"large\"\n onClick={onDelete}\n disabled={disabled}\n />\n )}\n </div>\n </PrincipalItem>\n);\n\nPersonListItem.propTypes = {\n person: PropTypes.object.isRequired,\n roles: PropTypes.array.isRequired,\n onDelete: PropTypes.func,\n canDelete: PropTypes.bool,\n onEdit: PropTypes.func.isRequired,\n canEdit: PropTypes.bool,\n disabled: PropTypes.bool,\n avatarURL: PropTypes.string,\n onClickRole: PropTypes.func,\n extraParams: PropTypes.object,\n};\n\nPersonListItem.defaultProps = {\n canEdit: true,\n canDelete: true,\n disabled: false,\n avatarURL: null,\n onDelete: null,\n onClickRole: null,\n extraParams: {},\n};\n\nconst DraggablePerson = ({drag, dragType, onMove, index, ...props}) => {\n const [dragRef, itemRef, style] = useSortableItem({\n type: `person-${dragType}`,\n index,\n moveItem: onMove,\n separateHandle: true,\n });\n return (\n <div ref={itemRef} style={style} styleName=\"person-link\">\n {!drag && (\n <Ref innerRef={dragRef}>\n <div className=\"icon-drag-indicator\" styleName=\"handle\" />\n </Ref>\n )}\n <PersonListItem {...props} />\n </div>\n );\n};\n\nDraggablePerson.propTypes = {\n drag: PropTypes.bool,\n dragType: PropTypes.string.isRequired,\n onMove: PropTypes.func.isRequired,\n index: PropTypes.number.isRequired,\n};\n\nDraggablePerson.defaultProps = {\n drag: true,\n};\n\nconst PersonLinkSection = ({\n label: sectionLabel,\n persons,\n defaultRoles,\n onChange,\n onEdit,\n canEdit,\n canDelete,\n drag,\n dragType,\n extraParams,\n}) => {\n const onClickRole = (personIndex, roleIndex, value) => {\n const role = defaultRoles[roleIndex];\n const roles = value\n .filter((r, i) =>\n // ensure only a single section is selected at a time\n roleIndex === i ? !r.active : r.active && (!role.section || !defaultRoles[i].section)\n )\n .map(r => r.name);\n onChange(persons.map((v, i) => (i === personIndex ? {...v, roles} : v)));\n };\n\n const moveItem = (dragIndex, hoverIndex) => {\n const result = persons.slice();\n result.splice(hoverIndex, 0, ...result.splice(dragIndex, 1));\n onChange(result);\n };\n\n return (\n <SortableWrapper accept={`person-${dragType}`}>\n {sectionLabel && <div styleName=\"titled-rule\">{sectionLabel}</div>}\n <List divided relaxed>\n {persons.length > 0 ? (\n persons.map((p, idx) => (\n <DraggablePerson\n key={p.userId || p.email || p.firstName + p.lastName}\n index={idx}\n drag={!drag}\n dragType={dragType}\n onMove={moveItem}\n person={p}\n onDelete={() => onChange(persons.filter((__, i) => i !== idx))}\n onEdit={scope => onEdit(idx, scope)}\n onClickRole={(roleIdx, value) => onClickRole(idx, roleIdx, value)}\n canDelete={canDelete}\n canEdit={canEdit}\n roles={defaultRoles.map(({name, ...rest}) => ({\n ...rest,\n name,\n active: p.roles && p.roles.includes(name),\n }))}\n extraParams={extraParams}\n />\n ))\n ) : (\n <Translate>There are no persons</Translate>\n )}\n </List>\n </SortableWrapper>\n );\n};\n\nPersonLinkSection.propTypes = {\n label: PropTypes.string,\n persons: PropTypes.array,\n defaultRoles: PropTypes.array,\n onChange: PropTypes.func.isRequired,\n onEdit: PropTypes.func.isRequired,\n canEdit: PropTypes.bool,\n canDelete: PropTypes.bool,\n drag: PropTypes.bool,\n dragType: PropTypes.string.isRequired,\n extraParams: PropTypes.object,\n};\n\nPersonLinkSection.defaultProps = {\n label: undefined,\n persons: [],\n defaultRoles: [],\n canEdit: true,\n canDelete: true,\n drag: false,\n extraParams: {},\n};\n\nfunction PersonLinkField({\n value: persons,\n onChange,\n eventId,\n sessionUser,\n roles,\n emptyMessage,\n autoSort,\n setAutoSort,\n hasPredefinedAffiliations,\n canEnterManually,\n defaultSearchExternal,\n nameFormat,\n validateEmailUrl,\n extraParams,\n}) {\n const [favoriteUsers] = useFavoriteUsers(null, !sessionUser);\n const [modalOpen, setModalOpen] = useState('');\n const [selected, setSelected] = useState(null);\n const sections = roles.filter(x => x.section);\n const sectionKeys = new Set(sections.map(x => x.name));\n const othersCondition = p => !p.roles || !p.roles.find(r => sectionKeys.has(r));\n const others = persons.filter(othersCondition);\n\n const onClose = () => {\n setSelected(null);\n setModalOpen('');\n };\n\n const onEdit = (idx, scope) => {\n setSelected(idx);\n setModalOpen(scope);\n };\n\n const formatName = ({firstName, lastName}) => {\n const upperLastName = [\n 'first_last_upper',\n 'f_last_upper',\n 'last_f_upper',\n 'last_first_upper',\n ].includes(nameFormat);\n const formattedLastName = upperLastName ? lastName.toUpperCase() : lastName;\n if (!firstName) {\n return formattedLastName;\n }\n const abbreviateFirstName = ['last_f', 'last_f_upper', 'f_last', 'f_last_upper'].includes(\n nameFormat\n );\n const formattedFirstName = abbreviateFirstName ? `${firstName[0].toUpperCase()}.` : firstName;\n const lastNameFirst = ['last_f', 'last_f_upper', 'last_first', 'last_first_upper'].includes(\n nameFormat\n );\n return lastNameFirst\n ? `${formattedLastName}, ${formattedFirstName}`\n : `${formattedFirstName} ${formattedLastName}`;\n };\n\n const onAdd = values => {\n const existing = persons.filter(p => !!p.email).map(p => p.email);\n const hooks = getPluginObjects('onAddPersonLink');\n values.forEach(p => {\n p.name = formatName(p);\n p.roles = roles.filter(x => x.default).map(x => x.name);\n hooks.forEach(f => f(p));\n });\n onChange([...persons, ...values.filter(v => !existing.includes(v.email))]);\n };\n\n const onSubmit = value => {\n value.name = formatName(value);\n if (!hasPredefinedAffiliations) {\n // value.affiliation is already there and used\n delete value.affiliationData;\n } else if (value.affiliationData) {\n value.affiliation = value.affiliationData.text.trim();\n value.affiliationId = value.affiliationData.id;\n value.affiliationMeta = value.affiliationData.meta;\n delete value.affiliationData;\n }\n if (selected !== null) {\n onChange(persons.map((v, idx) => (idx === selected ? value : v)));\n } else {\n onAdd([value]);\n }\n onClose();\n };\n\n return (\n <div styleName=\"person-link-field\">\n <DndProvider backend={HTML5Backend}>\n <Segment attached=\"top\" styleName=\"segment\">\n {sections.map(({name, label, plural}) => {\n const filterCondition = p => p.roles?.includes(name);\n const filtered = persons.filter(filterCondition);\n return filtered.length === 0 ? null : (\n <PersonLinkSection\n dragType={name}\n key={name}\n drag={!autoSort}\n label={plural || label}\n persons={filtered}\n defaultRoles={roles}\n onEdit={(idx, scope) => onEdit(persons.findIndex(p => p === filtered[idx]), scope)}\n onChange={values =>\n onChange(persons.filter(p => !filterCondition(p)).concat(values))\n }\n canEdit={canEnterManually}\n extraParams={extraParams}\n />\n );\n })}\n {others.length > 0 && (\n <PersonLinkSection\n drag={!autoSort}\n dragType=\"other\"\n label={sections.length > 0 ? Translate.string('Others') : undefined}\n persons={others}\n defaultRoles={roles}\n onEdit={(idx, scope) => onEdit(persons.findIndex(p => p === others[idx]), scope)}\n onChange={values => onChange(persons.filter(p => !othersCondition(p)).concat(values))}\n canEdit={canEnterManually}\n extraParams={extraParams}\n />\n )}\n {persons.length === 0 && (emptyMessage || <Translate>There are no persons</Translate>)}\n </Segment>\n <Button.Group size=\"small\" attached=\"bottom\">\n <Button\n toggle\n icon=\"sort alphabet down\"\n type=\"button\"\n active={autoSort}\n onClick={() => setAutoSort && setAutoSort(!autoSort)}\n />\n {sessionUser && (\n <Button\n type=\"button\"\n onClick={() => onAdd([sessionUser])}\n disabled={persons.some(p => p.userId === sessionUser.userId)}\n >\n <Icon name=\"add user\" />\n <Translate>Add myself</Translate>\n </Button>\n )}\n <UserSearch\n favorites={favoriteUsers}\n existing={persons.map(p => p.userIdentifier)}\n onAddItems={onAdd}\n triggerFactory={props => (\n <Button type=\"button\" {...props}>\n <Icon name=\"search\" />\n <Translate>Add from search</Translate>\n </Button>\n )}\n withExternalUsers\n withEventPersons={eventId !== null}\n initialFormValues={{external: defaultSearchExternal}}\n eventId={eventId}\n disabled={!sessionUser}\n />\n {canEnterManually && (\n <Button type=\"button\" onClick={() => setModalOpen('details')}>\n <Icon name=\"keyboard\" />\n <Translate>Enter manually</Translate>\n </Button>\n )}\n {modalOpen === 'details' && (\n <PersonDetailsModal\n onClose={onClose}\n onSubmit={onSubmit}\n person={persons[selected]}\n otherPersons={selected === null ? persons : _.without(persons, persons[selected])}\n hasPredefinedAffiliations={hasPredefinedAffiliations}\n validateEmailUrl={validateEmailUrl}\n extraParams={extraParams}\n />\n )}\n </Button.Group>\n </DndProvider>\n {selected !== null &&\n renderPluginComponents('personLinkFieldModals', {\n persons,\n selected,\n onChange,\n onClose,\n modalOpen,\n extraParams,\n })}\n </div>\n );\n}\n\nPersonLinkField.propTypes = {\n value: PropTypes.array.isRequired,\n onChange: PropTypes.func.isRequired,\n emptyMessage: PropTypes.string,\n sessionUser: PropTypes.object,\n eventId: PropTypes.number,\n roles: PropTypes.array,\n autoSort: PropTypes.bool,\n setAutoSort: PropTypes.func,\n hasPredefinedAffiliations: PropTypes.bool,\n canEnterManually: PropTypes.bool,\n defaultSearchExternal: PropTypes.bool,\n nameFormat: PropTypes.string,\n validateEmailUrl: PropTypes.string,\n extraParams: PropTypes.object,\n};\n\nPersonLinkField.defaultProps = {\n emptyMessage: null,\n sessionUser: null,\n eventId: null,\n roles: [],\n autoSort: true,\n setAutoSort: null,\n hasPredefinedAffiliations: false,\n canEnterManually: true,\n defaultSearchExternal: false,\n nameFormat: '',\n validateEmailUrl: null,\n extraParams: {},\n};\n\nexport function WTFPersonLinkField({\n fieldId,\n eventId,\n defaultValue,\n roles,\n sessionUser,\n emptyMessage,\n hasPredefinedAffiliations,\n canEnterManually,\n defaultSearchExternal,\n nameFormat,\n validateEmailUrl,\n extraParams,\n}) {\n const [persons, setPersons] = useState(\n defaultValue.sort((a, b) => a.displayOrder - b.displayOrder)\n );\n const [autoSort, _setAutoSort] = useState(persons.every(p => p.displayOrder === 0));\n const inputField = useMemo(() => document.getElementById(fieldId), [fieldId]);\n\n const onChange = (value, sort = autoSort) => {\n const picked = value.map(p =>\n _.pick(p, [\n 'title',\n 'name',\n 'firstName',\n 'lastName',\n 'affiliation',\n 'affiliationId',\n 'email',\n 'address',\n 'phone',\n 'roles',\n 'displayOrder',\n 'identifier',\n 'type',\n 'personId',\n 'avatarURL',\n ..._.flatten(getPluginObjects('personLinkCustomFields')),\n ])\n );\n inputField.value = JSON.stringify(\n snakifyKeys(picked.map((x, i) => ({...x, displayOrder: sort ? 0 : i})))\n );\n setPersons(value);\n inputField.dispatchEvent(new Event('change', {bubbles: true}));\n };\n\n const setAutoSort = value => {\n _setAutoSort(value);\n onChange(persons, value);\n };\n\n return (\n <PersonLinkField\n value={!autoSort ? persons : persons.slice().sort((a, b) => a.name.localeCompare(b.name))}\n eventId={eventId}\n onChange={onChange}\n roles={roles}\n sessionUser={sessionUser}\n emptyMessage={emptyMessage}\n autoSort={autoSort}\n setAutoSort={setAutoSort}\n hasPredefinedAffiliations={hasPredefinedAffiliations}\n canEnterManually={canEnterManually}\n defaultSearchExternal={defaultSearchExternal}\n nameFormat={nameFormat}\n validateEmailUrl={validateEmailUrl}\n extraParams={extraParams}\n />\n );\n}\n\nWTFPersonLinkField.propTypes = {\n fieldId: PropTypes.string.isRequired,\n defaultValue: PropTypes.array,\n eventId: PropTypes.number,\n roles: PropTypes.array,\n sessionUser: PropTypes.object,\n emptyMessage: PropTypes.string,\n hasPredefinedAffiliations: PropTypes.bool,\n nameFormat: PropTypes.string,\n canEnterManually: PropTypes.bool,\n defaultSearchExternal: PropTypes.bool,\n validateEmailUrl: PropTypes.string,\n extraParams: PropTypes.object,\n};\n\nWTFPersonLinkField.defaultProps = {\n defaultValue: [],\n eventId: null,\n roles: [],\n sessionUser: null,\n emptyMessage: null,\n hasPredefinedAffiliations: false,\n canEnterManually: true,\n defaultSearchExternal: false,\n nameFormat: '',\n validateEmailUrl: null,\n extraParams: {},\n};\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport {WTFPersonLinkField} from 'indico/react/components/PersonLinkField';\nimport {camelizeKeys} from 'indico/utils/case';\n\n(function(global) {\n global.setupPersonLinkWidget = function setupPersonLinkWidget(options) {\n const {\n fieldId,\n eventId,\n roles,\n sessionUser,\n hasPredefinedAffiliations,\n canEnterManually,\n defaultSearchExternal,\n nameFormat,\n extraParams,\n ...rest\n } = options;\n const field = document.getElementById(fieldId);\n const persons = JSON.parse(field.value);\n const user = sessionUser &&\n sessionUser.id !== undefined && {\n title: sessionUser.title,\n userId: sessionUser.id,\n userIdentifier: `User:${sessionUser.id}`,\n avatarURL: sessionUser.avatarURL,\n firstName: sessionUser.firstName,\n lastName: sessionUser.lastName,\n affiliation: sessionUser.affiliation,\n affiliationId: sessionUser.affiliationId,\n affiliationMeta: sessionUser.affiliationMeta,\n email: sessionUser.email,\n address: sessionUser.address,\n phone: sessionUser.phone,\n type: sessionUser.type,\n };\n\n ReactDOM.render(\n <WTFPersonLinkField\n fieldId={fieldId}\n eventId={eventId}\n defaultValue={camelizeKeys(persons)}\n roles={roles || []}\n sessionUser={user}\n hasPredefinedAffiliations={hasPredefinedAffiliations}\n canEnterManually={canEnterManually}\n defaultSearchExternal={defaultSearchExternal}\n nameFormat={nameFormat}\n extraParams={camelizeKeys(extraParams)}\n {...rest}\n />,\n document.getElementById(`person-link-field-${fieldId}`)\n );\n };\n})(window);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport {WTFPrincipalListField} from 'indico/react/components';\n\nwindow.setupPrincipalListWidget = function setupPrincipalListWidget({fieldId, ...options}) {\n options = {\n ...{\n eventId: null,\n withGroups: false,\n withExternalUsers: false,\n withEventRoles: false,\n withCategoryRoles: false,\n withRegistrants: false,\n withEmails: false,\n },\n ...options,\n };\n const field = document.getElementById(fieldId);\n const principals = JSON.parse(field.value);\n\n ReactDOM.render(\n <WTFPrincipalListField fieldId={fieldId} defaultValue={principals} {...options} />,\n document.getElementById(`userGroupList-${fieldId}`)\n );\n};\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport {WTFPrincipalField} from 'indico/react/components';\n\nwindow.setupPrincipalWidget = function setupPrincipalWidget({\n fieldId,\n required,\n withExternalUsers,\n disabled,\n}) {\n const field = document.getElementById(fieldId);\n\n ReactDOM.render(\n <WTFPrincipalField\n fieldId={fieldId}\n defaultValue={field.value}\n required={required}\n withExternalUsers={withExternalUsers}\n disabled={disabled}\n />,\n document.getElementById(`principalField-${fieldId}`)\n );\n};\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n/* global handleAjaxError:true */\n\nimport _ from 'lodash';\n\n(function(global) {\n global.setupProtectionWidget = function setupProtectionWidget(options) {\n options = $.extend(\n true,\n {\n fieldId: null,\n fieldName: null,\n parentProtected: false,\n aclMessageUrl: null,\n hasInheritedAcl: false,\n permissionsFieldId: null,\n isUnlistedEvent: false,\n },\n options\n );\n\n const inputs = $(`input[name=${options.fieldName}][id^=${options.fieldId}]`);\n\n if (options.isUnlistedEvent) {\n inputs.prop('disabled', true);\n $(`#form-group-protected-${options.fieldId} .protection-message`).hide();\n $(`#form-group-protected-${options.fieldId} .unlisted-event-protection-message`).show();\n }\n\n inputs.on('change', function() {\n const $this = $(this);\n const isProtected =\n $this.val() === 'protected' || ($this.val() === 'inheriting' && options.parentProtected);\n\n if (this.checked) {\n $(`#form-group-protected-${options.fieldId} .protection-message`).hide();\n $(`#form-group-protected-${options.fieldId} .${$this.val()}-protection-message`).show();\n\n if (options.aclMessageUrl && options.hasInheritedAcl) {\n $.ajax({\n url: options.aclMessageUrl,\n data: {mode: $this.val()},\n error: handleAjaxError,\n success(data) {\n $this\n .closest('form')\n .find('.inheriting-acl-message')\n .html(data.html);\n },\n });\n }\n if (options.permissionsFieldId) {\n $(`#permissions-widget-${options.permissionsFieldId}`).trigger(\n 'indico:protectionModeChanged',\n [isProtected]\n );\n }\n }\n });\n\n _.defer(function() {\n if (!options.isUnlistedEvent) {\n inputs.trigger('change');\n }\n });\n };\n})(window);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\nimport 'jquery-typeahead';\nimport 'jquery-typeahead/src/jquery.typeahead.css';\n\n(function(global) {\n global.setupTypeaheadWidget = function setupTypeaheadWidget(options) {\n options = $.extend(\n true,\n {\n fieldId: null,\n minTriggerLength: 0,\n data: null,\n typeaheadOptions: null,\n searchUrl: null,\n },\n options\n );\n\n var field = $('#' + options.fieldId);\n var params = {\n hint: true,\n cancelButton: false,\n mustSelectItem: true,\n minLength: options.minTriggerLength,\n source: {\n data: options.data,\n },\n };\n\n if (options.searchUrl) {\n $.extend(true, params, {\n dynamic: true,\n source: {\n url: [\n {\n url: options.searchUrl,\n data: {\n q: '{{query}}',\n },\n },\n ],\n },\n });\n }\n\n field.typeahead($.extend(true, params, options.typeaheadOptions));\n };\n})(window);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport {GroupSearch, UserSearch} from 'indico/react/components/principals/Search';\nimport {PrincipalType} from 'indico/react/components/principals/util';\nimport {FavoritesProvider} from 'indico/react/hooks';\nimport {Translate} from 'indico/react/i18n';\nimport Palette from 'indico/utils/palette';\n\n(function($) {\n const FULL_ACCESS_PERMISSIONS = '_full_access';\n const READ_ACCESS_PERMISSIONS = '_read_access';\n\n $.widget('indico.permissionswidget', {\n options: {\n objectType: null,\n isUnlisted: null,\n permissionsInfo: null,\n hiddenPermissions: null,\n hiddenPermissionsInfo: null,\n },\n\n _update() {\n // Sort entries aphabetically and by type\n this.data = _.chain(this.data)\n .sortBy(item => item[0].name || item[0].id)\n .sortBy(item => item[0]._type)\n .value();\n\n // Sort permissions alphabetically\n this.data.forEach(item => {\n item[1].sort();\n });\n\n this.$dataField.val(JSON.stringify(this.data));\n this.element.trigger('change');\n },\n _renderRoleCode(code, color) {\n return $('<span>', {\n class: 'role-code',\n text: code,\n css: {\n borderColor: `#${color}`,\n color: `#${color}`,\n },\n });\n },\n _renderLabel(principal) {\n const $labelBox = $('<div>', {class: 'label-box flexrow f-a-center'});\n const type = principal._type;\n if (type === 'EventRole') {\n $labelBox.append(this._renderEventRoleLabel(principal));\n } else if (type === 'CategoryRole') {\n $labelBox.append(this._renderCategoryRoleLabel(principal));\n } else {\n $labelBox.append(this._renderOtherLabel(principal, type));\n }\n return $labelBox;\n },\n _renderEventRoleLabel(principal) {\n const $text = $('<span>', {\n 'class': 'text-normal entry-label',\n 'text': principal.name,\n 'data-tooltip-text': principal.name,\n });\n const $code = this._renderRoleCode(principal.code, principal.color);\n return [$code, $text];\n },\n _renderCategoryRoleLabel(principal) {\n const text = principal.name;\n const extraText = principal.category;\n const $code = this._renderRoleCode(principal.code, principal.color);\n const tooltip = `${text} (${extraText})`;\n const textDiv = $('<div>', {\n 'class': 'text-normal entry-label',\n 'data-tooltip-text': tooltip,\n });\n textDiv.append($('<span>', {text}));\n textDiv.append('<br>');\n textDiv.append($('<span>', {class: 'text-not-important entry-label-extra', text: extraText}));\n return [$code, textDiv];\n },\n _renderOtherLabel(principal, type) {\n let iconClass, extraText;\n if (type === 'Avatar') {\n iconClass = 'icon-user';\n extraText = principal.email;\n } else if (type === 'Email') {\n iconClass = 'icon-mail';\n } else if (type === 'DefaultEntry' && principal.id === 'anonymous') {\n iconClass = 'icon-question';\n } else if (type === 'IPNetworkGroup') {\n iconClass = 'icon-lan';\n } else if (type === 'RegistrationForm') {\n iconClass = 'icon-ticket';\n } else if (type === 'LocalGroup') {\n iconClass = 'icon-users';\n } else if (type === 'MultipassGroup') {\n iconClass = 'icon-users';\n extraText = principal.provider_title;\n } else {\n iconClass = 'icon-users';\n }\n const text = principal.name;\n const tooltip = extraText ? `${text} (${extraText})` : text;\n const textDiv = $('<div>', {\n 'class': 'text-normal entry-label',\n 'data-tooltip-text': tooltip,\n });\n textDiv.append($('<span>', {text}));\n if (extraText) {\n textDiv.append('<br>');\n textDiv.append(\n $('<span>', {class: 'text-not-important entry-label-extra', text: extraText})\n );\n }\n return [$('<span>', {class: `entry-icon ${iconClass}`}), textDiv];\n },\n _renderPermissions(principal, permissions) {\n const $permissions = $('<div>', {class: 'permissions-box flexrow f-a-center f-self-stretch'});\n const $permissionsList = $('<ul>').appendTo($permissions);\n // When full access is enabled, always show read access\n if (\n _.contains(permissions, FULL_ACCESS_PERMISSIONS) &&\n !_.contains(permissions, READ_ACCESS_PERMISSIONS)\n ) {\n permissions.push(READ_ACCESS_PERMISSIONS);\n if (principal._type !== 'DefaultEntry' && principal._type !== 'AdditionalUsers') {\n this._updateItem(principal, permissions);\n }\n }\n permissions.forEach(item => {\n const permissionInfo = this.options.permissionsInfo[item];\n const applyOpacity =\n item === READ_ACCESS_PERMISSIONS &&\n _.contains(permissions, FULL_ACCESS_PERMISSIONS) &&\n principal._type !== 'DefaultEntry';\n const cssClasses =\n (applyOpacity ? 'disabled ' : '') +\n (permissionInfo.color ? `color-${permissionInfo.color} ` : '') +\n (permissionInfo.css_class ? `${permissionInfo.css_class} ` : '');\n $permissionsList.append(\n $('<li>', {\n class: `i-label bold ${cssClasses}`,\n title: permissionInfo.description,\n }).append(permissionInfo.title)\n );\n });\n if (principal._type !== 'DefaultEntry' && principal._type !== 'AdditionalUsers') {\n $permissions.append(this._renderPermissionsButtons(principal, permissions));\n }\n return $permissions;\n },\n _renderPermissionsButtons(principal, permissions) {\n const $buttonsGroup = $('<div>', {class: 'group flexrow'});\n $buttonsGroup.append(\n this._renderEditBtn(principal, permissions),\n this._renderDeleteBtn(principal)\n );\n return $buttonsGroup;\n },\n _renderEditBtn(principal, permissions) {\n if (principal._type === 'IPNetworkGroup' || principal._type === 'RegistrationForm') {\n const title = {\n IPNetworkGroup: $T.gettext('IP networks cannot have management permissions'),\n RegistrationForm: $T.gettext('Registrants cannot have management permissions'),\n }[principal._type];\n return $('<button>', {\n type: 'button',\n class: 'i-button text-color borderless icon-only icon-edit disabled',\n title,\n });\n } else {\n return $('<button>', {\n 'type': 'button',\n 'class': 'i-button text-color borderless icon-only icon-edit',\n 'data-href': build_url(Indico.Urls.PermissionsDialog, {type: this.options.objectType}),\n 'data-title': $T.gettext('Assign Permissions'),\n 'title': $T.gettext('Assign Permissions'),\n 'data-method': 'POST',\n 'data-ajax-dialog': '',\n 'data-params': JSON.stringify({principal: JSON.stringify(principal), permissions}),\n });\n }\n },\n _renderDeleteBtn(principal) {\n const self = this;\n return $('<button>', {\n 'type': 'button',\n 'title': $T.gettext(\"Delete entry '{0}'\").format(principal.name || principal.id),\n 'class': 'i-button text-color borderless icon-only icon-remove',\n 'data-principal': JSON.stringify(principal),\n }).on('click', function() {\n const $this = $(this);\n let confirmed;\n if (principal._type === 'Avatar' && principal.id === $('body').data('user-id')) {\n const title = $T.gettext(\"Delete entry '{0}'\".format(principal.name || principal.id));\n const message = $T.gettext('Are you sure you want to remove yourself from the list?');\n confirmed = confirmPrompt(message, title);\n } else {\n confirmed = $.Deferred().resolve();\n }\n confirmed.then(() => {\n self._updateItem($this.data('principal'), []);\n });\n });\n },\n _renderItem(item) {\n const $item = $('<li>', {class: 'flexrow f-a-center'});\n const [principal, permissions] = item;\n $item.append(this._renderLabel(principal));\n $item.append(this._renderPermissions(principal, permissions));\n $item.toggleClass(`disabled ${principal.id}`, principal._type === 'DefaultEntry');\n return $item;\n },\n _renderHiddenPermissions(item) {\n const $item = $('<li>', {\n class: 'flexrow f-a-center',\n });\n const [principal, description, $permissionsList] = item;\n $permissionsList.hide();\n\n const $dropdownButton = $('<button>', {\n type: 'button',\n class: 'i-button text-color borderless icon-only icon-expand hidden-permissions-icon',\n }).on('click', () => {\n $permissionsList.toggle();\n $dropdownButton.toggleClass('icon-expand icon-collapse');\n });\n const $hiddenPermissionsDiv = $('<div>', {\n class: 'permissions-box f-a-center f-self-stretch',\n });\n const $descriptionDiv = $('<div>', {class: 'flexrow f-a-center'});\n\n $descriptionDiv.append(\n $('<div>', {class: 'hidden-permissions-description', text: description})\n );\n $descriptionDiv.append($dropdownButton);\n $hiddenPermissionsDiv.append($descriptionDiv);\n $hiddenPermissionsDiv.append($permissionsList);\n $item.append(this._renderLabel(principal).toggleClass(`disabled ${principal.id}`));\n $item.append($hiddenPermissionsDiv);\n return $item;\n },\n _renderHiddenPermissionsList(hiddenUserPermissions, permissionsInfo) {\n const $list = $('<ul>', {class: 'hidden-permissions-list'});\n hiddenUserPermissions.forEach(([name, perms]) => {\n const permissionList = perms\n .map(x => permissionsInfo[x])\n .filter(x => x !== null)\n .join(', ');\n const $user = $('<strong />', {text: name});\n const $permissions = `: ${permissionList}`;\n const $entry = $('<li>')\n .append($user)\n .append($permissions);\n $list.append($entry);\n });\n return $list;\n },\n _renderDropdown($dropdown, getText = null) {\n $dropdown.children(':not(.default)').remove();\n $dropdown.parent().dropdown({\n selector: '.js-dropdown',\n });\n const $dropdownLink = $dropdown.prev('.js-dropdown');\n const items = $dropdown.data('items');\n const isRoleDropdown = $dropdown.hasClass('entry-role-dropdown');\n items.forEach(item => {\n if (this._findEntryIndex(item) === -1) {\n if (isRoleDropdown) {\n $dropdown.find('.separator').before(this._renderDropdownItem(item, getText));\n } else {\n $dropdown.append(this._renderDropdownItem(item, getText));\n }\n }\n });\n if (isRoleDropdown) {\n const isEmpty = !$dropdown.children().not('.default').length;\n $('.entry-role-dropdown .separator').toggleClass('hidden', isEmpty);\n } else if (!$dropdown.children().length) {\n $dropdownLink.addClass('disabled').attr('title', $T.gettext('All options have been added'));\n } else {\n $dropdownLink.removeClass('disabled');\n }\n },\n _renderDropdownItem(principal, getText) {\n const self = this;\n const $dropdownItem = $('<li>', {\n 'class': 'entry-item',\n 'data-principal': JSON.stringify(principal),\n });\n const $itemContent = $('<a>');\n if (principal._type === 'EventRole' || principal._type === 'CategoryRole') {\n $itemContent.append(\n this._renderRoleCode(principal.code, principal.color).addClass('dropdown-icon')\n );\n }\n const $text = $('<span>', {text: getText ? getText(principal.name) : principal.name});\n $dropdownItem.append($itemContent.append($text)).on('click', function() {\n // Grant read access by default\n self._addItems([$(this).data('principal')], [READ_ACCESS_PERMISSIONS]);\n });\n return $dropdownItem;\n },\n _renderDuplicatesTooltip(idx) {\n this.$permissionsWidgetList\n .find('>li')\n .not('.disabled')\n .eq(idx)\n .qtip({\n content: {\n text: $T.gettext('This entry was already added'),\n },\n show: {\n ready: true,\n effect() {\n $(this).fadeIn(300);\n },\n },\n hide: {\n event: 'unfocus click',\n },\n events: {\n hide() {\n $(this).fadeOut(300);\n $(this).qtip('destroy');\n },\n },\n position: {\n my: 'center left',\n at: 'center right',\n },\n style: {\n classes: 'qtip-warning',\n },\n });\n },\n _render() {\n this.$permissionsWidgetList.empty();\n this.data.forEach(item => {\n this.$permissionsWidgetList.append(this._renderItem(item));\n });\n // Add default entries\n if (!this.options.isUnlisted) {\n const anonymous = [\n {_type: 'DefaultEntry', name: $T.gettext('Anonymous'), id: 'anonymous'},\n [READ_ACCESS_PERMISSIONS],\n ];\n this.$permissionsWidgetList.append(this._renderItem(anonymous));\n }\n\n if (this.options.hiddenPermissions.length > 0) {\n const additionalPermissions = [\n {\n _type: 'AdditionalUsers',\n name: $T.gettext('Additional users'),\n id: 'additional',\n },\n $T\n .ngettext(\n '{0} user has implicit read access due to other roles',\n '{0} users have implicit read access due to other roles',\n this.options.hiddenPermissions.length\n )\n .format(this.options.hiddenPermissions.length),\n this._renderHiddenPermissionsList(\n this.options.hiddenPermissions,\n this.options.hiddenPermissionsInfo\n ),\n ];\n this.$permissionsWidgetList.append(this._renderHiddenPermissions(additionalPermissions));\n }\n\n let managersTitle;\n if (!this.options.isUnlisted && this.options.objectType === 'event') {\n managersTitle = $T.gettext('Category Managers');\n } else if (this.options.objectType === 'category') {\n managersTitle = $T.gettext('Parent Category Managers');\n } else if (['session', 'contribution'].includes(this.options.objectType)) {\n managersTitle = $T.gettext('Event Managers');\n }\n if (managersTitle) {\n const managers = [{_type: 'DefaultEntry', name: managersTitle}, [FULL_ACCESS_PERMISSIONS]];\n this.$permissionsWidgetList.prepend(this._renderItem(managers));\n this.$permissionsWidgetList.find('.anonymous').toggle(!this.isEventProtected);\n }\n\n if (this.$eventRoleDropdown.length) {\n this._renderDropdown(this.$eventRoleDropdown);\n }\n if (this.$categoryRoleDropdown.length) {\n this._renderDropdown(this.$categoryRoleDropdown);\n }\n if (this.$ipNetworkDropdown.length) {\n this._renderDropdown(this.$ipNetworkDropdown);\n }\n if (this.$registrationFormDropdown.length) {\n this._renderDropdown(this.$registrationFormDropdown, name =>\n $T.gettext('Registrants in \"{0}\"').format(name)\n );\n }\n },\n _findEntryIndex(principal) {\n return _.findIndex(this.data, item => item[0].identifier === principal.identifier);\n },\n _updateItem(principal, newPermissions) {\n const idx = this._findEntryIndex(principal);\n if (newPermissions.length) {\n this.data[idx][1] = newPermissions;\n } else {\n this.data.splice(idx, 1);\n }\n this._update();\n this._render();\n },\n _addItems(principals, permissions) {\n const news = [];\n const repeated = [];\n principals.forEach(principal => {\n const idx = this._findEntryIndex(principal);\n if (idx === -1) {\n this.data.push([principal, permissions]);\n news.push(principal);\n } else {\n repeated.push(principal);\n }\n });\n this._update();\n this._render();\n news.forEach(principal => {\n this.$permissionsWidgetList\n .children('li:not(.disabled)')\n .eq(this._findEntryIndex(principal))\n .effect('highlight', {color: Palette.highlight}, 'slow');\n });\n repeated.forEach(principal => {\n this._renderDuplicatesTooltip(this._findEntryIndex(principal));\n });\n },\n _create() {\n this.$permissionsWidgetList = this.element.find('.permissions-widget-list');\n this.$dataField = this.element.find('input[type=hidden]');\n this.$eventRoleDropdown = this.element.find('.entry-role-dropdown');\n this.$categoryRoleDropdown = this.element.find('.entry-category-role-dropdown');\n this.$ipNetworkDropdown = this.element.find('.entry-ip-network-dropdown');\n this.$registrationFormDropdown = this.element.find('.entry-reg-form-dropdown');\n this.data = JSON.parse(this.$dataField.val());\n this._update();\n this._render();\n\n // Manage changes on the permissions dialog\n this.element.on('indico:permissionsChanged', (evt, permissions, principal) => {\n this._updateItem(principal, permissions);\n });\n\n // Manage changes on the event protection mode field\n this.element.on('indico:protectionModeChanged', (evt, isProtected) => {\n this.isEventProtected = isProtected;\n this._render();\n });\n\n // Manage adding users/groups to the acl\n const userSearchTrigger = triggerProps => (\n <button type=\"button\" className=\"i-button\" {...triggerProps}>\n <Translate>User</Translate>\n </button>\n );\n\n const groupSearchTrigger = triggerProps => (\n <button type=\"button\" className=\"i-button\" {...triggerProps}>\n <Translate>Group</Translate>\n </button>\n );\n\n const existing = JSON.parse(this.$dataField.val()).map(e => e[0].identifier);\n\n ReactDOM.render(\n <FavoritesProvider>\n {([favorites]) => (\n <>\n <UserSearch\n withExternalUsers\n favorites={favorites}\n existing={existing.filter(e => e.startsWith('User'))}\n onAddItems={e => {\n const items = e.map(({identifier, userId, name, firstName, lastName}) => ({\n identifier,\n name,\n id: userId,\n familyName: lastName,\n firstName,\n _type: 'Avatar',\n }));\n this._addItems(items, [READ_ACCESS_PERMISSIONS]);\n }}\n triggerFactory={userSearchTrigger}\n />\n <GroupSearch\n existing={existing.filter(e => e.startsWith('Group'))}\n onAddItems={e => {\n const items = e.map(({identifier, name, type, provider}) => {\n let id;\n if (type === PrincipalType.localGroup) {\n const splitIdentifier = identifier.split(':');\n id = splitIdentifier[splitIdentifier.length - 1];\n } else {\n id = name;\n }\n return {\n identifier,\n name,\n provider,\n _type: type === PrincipalType.localGroup ? 'LocalGroup' : 'MultipassGroup',\n id,\n };\n });\n this._addItems(items, [READ_ACCESS_PERMISSIONS]);\n }}\n triggerFactory={groupSearchTrigger}\n />\n </>\n )}\n </FavoritesProvider>,\n document.getElementById('js-add-user-group')\n );\n\n // Manage the creation of new roles\n $('.js-new-role').on('ajaxDialog:closed', (evt, data) => {\n if (data && data.role) {\n this.$eventRoleDropdown.data('items').push(data.role);\n this._addItems([data.role], [READ_ACCESS_PERMISSIONS]);\n }\n });\n\n // Apply ellipsis + tooltip on long names\n this.$permissionsWidgetList.on('mouseenter', '.entry-label', function() {\n const $this = $(this);\n if (this.offsetWidth < this.scrollWidth && !$this.attr('title')) {\n $this.attr('title', $this.attr('data-tooltip-text'));\n }\n });\n },\n });\n})(jQuery);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport {WTFSUIColorPicker} from 'indico/react/components';\n\nwindow.setupSUIColorPickerWidget = function setupSUIColorPickerWidget({\n fieldId,\n required,\n disabled,\n}) {\n // Make sure the dropdown is displayed above the dialog\n const field = $(`#${fieldId}`);\n field.closest('.ui-dialog-content').css('overflow', 'inherit');\n field.closest('.exclusivePopup').css('overflow', 'inherit');\n\n ReactDOM.render(\n <WTFSUIColorPicker fieldId={fieldId} required={required} disabled={disabled} />,\n document.getElementById(fieldId)\n );\n};\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport {WTFSearchDropdown} from 'indico/react/components';\n\nwindow.setupSearchDropdownWidget = function setupSearchDropdownWidget(props) {\n // Make sure the dropdown is displayed above the dialog\n const field = $(`#${props.fieldId}`);\n field.closest('.ui-dialog-content').css('overflow', 'inherit');\n field.closest('.exclusivePopup').css('overflow', 'inherit');\n\n ReactDOM.render(<WTFSearchDropdown fieldId={props.fieldId} {...props} />, field[0]);\n};\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\nimport tinymce from 'tinymce/tinymce';\n\nimport {getConfig} from 'indico/tinymce';\n\n(function(global) {\n global.setupTinyMCEWidget = async function setupTinyMCEWidget(options) {\n const {\n fieldId,\n images = true,\n imageUploadURL = null,\n forceAbsoluteURLs = false,\n height = 475,\n } = options;\n const contentCSS = JSON.parse(document.body.dataset.tinymceContentCss);\n\n const field = document.getElementById(fieldId);\n const old = tinymce.get(fieldId);\n if (old) {\n // TinyMCE keeps a list of instances by field ID, and without removing the old one\n // creating a new one on the same ID (e.g. inside a lazy-loaded dialog that's been\n // closed and then reopened) won't do anything\n tinymce.remove(old);\n }\n tinymce.init(getConfig(field, {images, imageUploadURL, forceAbsoluteURLs, height, contentCSS}));\n };\n})(window);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\nimport Clipboard from 'clipboard';\n\n$(document).ready(function() {\n /* Show a qTip with the given text under the given element. The qTip is\n * destroyed when hidden and thus will be shown only once. */\n function showQTip(element, text, hideAfterDelay) {\n var $element = $(element);\n var container = $('<span>').qtip({\n overwrite: true,\n position: {\n target: $element,\n },\n content: {\n text: text,\n },\n hide: {\n event: 'unfocus click',\n },\n events: {\n hide: function() {\n $(this).qtip('destroy');\n $element.removeData('no-qtip');\n },\n },\n });\n $element.data('no-qtip', true).trigger('indico:closeAutoTooltip');\n container.qtip('show');\n\n if (hideAfterDelay) {\n setTimeout(function() {\n container.qtip('hide');\n }, 1000);\n }\n }\n\n /* Handle clicks on .js-copy-to-clipboard with clipboard.js.\n * For simple usage, the clipboard-text data attribute will be copied to\n * the system clipboard. For other possibilities, see https://clipboardjs.com/\n * */\n var c = new Clipboard('.js-copy-to-clipboard');\n c.on('success', function(evt) {\n showQTip(evt.trigger, $T.gettext('Copied to clipboard'), true);\n });\n c.on('error', function(evt) {\n var copyShortcut = 'CTRL-C';\n if (/^Mac/i.test(navigator.platform)) {\n copyShortcut = '⌘-C';\n }\n copyShortcut = '<strong>' + copyShortcut + '</strong>';\n showQTip(evt.trigger, $T.gettext('Press {0} to copy').format(copyShortcut));\n });\n\n /* Allow to use clipboard.js on <a> with href attributes. */\n $(document).on('click', '.js-copy-to-clipboard', function(evt) {\n evt.preventDefault();\n });\n});\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n/* eslint-disable max-len */\n/* global getParamsFromSelectors:false, inlineAjaxForm:false, updateHtml:false */\n\nimport {$T} from '../../utils/i18n';\n\n(function(global) {\n $(document).ready(function() {\n setupActionLinks();\n setupAjaxForms();\n setupConfirmPopup();\n setupMathJax();\n setupSelectAllNone();\n setupAnchorLinks();\n setupToggleLinks();\n });\n\n global.getParamsFromSelectors = function getParamsFromSelectors() {\n var fieldParams = {};\n _.each(arguments, function(selector) {\n $(selector).each(function() {\n if (!(this.name in fieldParams)) {\n fieldParams[this.name] = [];\n }\n fieldParams[this.name].push($(this).val());\n });\n });\n return fieldParams;\n };\n\n global.getFormParams = function getFormParams($form) {\n return getParamsFromSelectors(\n $form.find(\n 'input[type=text]:not(:disabled), input[type=time]:not(:disabled), \\\n input[type=number]:not(:disabled), input[type=hidden]:not(:disabled), \\\n input:checked:not(:disabled), textarea:not(:disabled), \\\n select:not(:disabled)'\n )\n );\n };\n\n function setupSelectAllNone() {\n $('body').on('click', '[data-select-all]', function() {\n var selector = $(this).data('select-all');\n $(selector)\n .filter(':not(:checked)')\n .prop('checked', true)\n .trigger('change');\n });\n\n $('body').on('click', '[data-select-none]', function() {\n var selector = $(this).data('select-none');\n $(selector)\n .filter(':checked')\n .prop('checked', false)\n .trigger('change');\n });\n }\n\n function setupConfirmPopup() {\n $('body').on(\n 'click',\n '[data-confirm]:not(button[data-href]):not(input:button[data-href]):not(a[data-method][data-href]):not(a[data-ajax-dialog][data-href])',\n function() {\n var $this = $(this);\n\n function performAction() {\n var evt = $.Event('indico:confirmed');\n $this.trigger(evt);\n\n // Handle custom code\n if (evt.isDefaultPrevented()) {\n return;\n }\n\n if ($this.is('form')) {\n $this.submit();\n } else {\n window.location = $this.attr('href');\n }\n }\n\n var evtBefore = $.Event('indico:beforeConfirmed');\n $this.trigger(evtBefore);\n\n if (evtBefore.isDefaultPrevented()) {\n performAction();\n } else {\n confirmPrompt($(this).data('confirm'), $(this).data('title')).then(performAction);\n }\n\n return false;\n }\n );\n }\n\n function setupActionLinks() {\n var selectors = [\n 'button[data-href][data-method]',\n 'input:button[data-href][data-method]',\n 'a[data-href][data-method]',\n 'button[data-href][data-ajax-dialog]',\n 'input:button[data-href][data-ajax-dialog]',\n 'a[data-href][data-ajax-dialog]',\n 'button[data-content][data-ajax-dialog]',\n 'input:button[data-content][data-ajax-dialog]',\n 'a[data-content][data-ajax-dialog]',\n 'button[data-callback]',\n 'input:button[data-callback]',\n 'a[data-callback]'\n ];\n $('body').on('click', selectors.join(', '), function(e) {\n e.preventDefault();\n var $this = $(this);\n if ($this.hasClass('disabled')) {\n return;\n }\n var url = $this.data('href');\n var callback = $this.data('callback');\n var method = ($this.data('method') || 'GET').toUpperCase();\n var params = $this.data('params') || {};\n var paramsSelector = $this.data('params-selector');\n var update = $this.data('update');\n var ajax = $this.data('ajax') !== undefined;\n var replaceUpdate = $this.data('replace-update') !== undefined;\n var highlightUpdate = $this.data('highlight-update') !== undefined;\n var dialog = $this.data('ajax-dialog') !== undefined;\n var reload = $this.data('reload-after');\n var redirect = $this.data('redirect-after');\n var content = $this.data('content');\n\n if (!$.isPlainObject(params)) {\n throw new Error('Invalid params. Must be valid JSON if set.');\n }\n\n if (paramsSelector) {\n params = $.extend({}, getParamsFromSelectors(paramsSelector), params);\n }\n\n function execute() {\n var evt = $.Event('indico:confirmed');\n $this.trigger(evt);\n\n // Handle custom code\n if (evt.isDefaultPrevented()) {\n return;\n }\n\n // Handle AJAX dialog\n if (dialog) {\n var closeButton = $this.data('close-button');\n let title = $this.data('title');\n if (!title && title !== undefined) {\n // if `data-title` is present without a value, fall back to the title attr\n title = $this.attr('title') || $this.data('qtip-oldtitle');\n }\n ajaxDialog({\n trigger: $this,\n url: url,\n method: method,\n data: params,\n content: $(content).html(),\n title,\n subtitle: $this.data('subtitle'),\n closeButton: closeButton === undefined ? false : closeButton || true,\n dialogClasses: $this.data('dialog-classes'),\n hidePageHeader: $this.data('hide-page-header') !== undefined,\n confirmCloseUnsaved: $this.data('confirm-close-unsaved') !== undefined,\n onOpen: ({dialogElement}) => {\n dialogElement.trigger('indico:dialogOpen');\n },\n onClose: function(data, customData) {\n if (data) {\n handleFlashes(data, true, $this);\n if (update) {\n updateHtml(update, data, replaceUpdate, highlightUpdate);\n } else if (reload !== undefined && reload !== 'customData') {\n IndicoUI.Dialogs.Util.progress();\n location.reload();\n } else if (redirect !== undefined) {\n IndicoUI.Dialogs.Util.progress();\n location.href = redirect;\n }\n } else if (reload === 'customData' && customData) {\n IndicoUI.Dialogs.Util.progress();\n location.reload();\n }\n },\n });\n return;\n }\n\n // Handle html update or reload\n if (ajax || update || reload !== undefined || redirect !== undefined) {\n $.ajax({\n method: method,\n url: url,\n data: params,\n error: handleAjaxError,\n complete: IndicoUI.Dialogs.Util.progress(),\n success: function(data) {\n var successEvt = $.Event('declarative:success');\n $this.trigger(successEvt, [data]);\n if (successEvt.isDefaultPrevented()) {\n return;\n }\n if (update) {\n handleFlashes(data, true, $this);\n updateHtml(update, data, replaceUpdate, highlightUpdate);\n } else if (reload !== undefined) {\n IndicoUI.Dialogs.Util.progress();\n location.reload();\n } else if (redirect !== undefined) {\n IndicoUI.Dialogs.Util.progress();\n location.href = redirect;\n } else if (data.redirect) {\n if (!data.redirect_no_loading) {\n IndicoUI.Dialogs.Util.progress();\n }\n location.href = data.redirect;\n }\n },\n });\n return;\n }\n\n if (callback) {\n window[callback](params);\n return;\n }\n\n // Handle normal GET/POST\n if (method === 'GET') {\n location.href = build_url(url, params);\n } else if (method === 'POST') {\n var form = $('<form>', {\n action: url,\n method: method,\n });\n form.append(\n $('<input>', {\n type: 'hidden',\n name: 'csrf_token',\n value: $('#csrf-token').attr('content'),\n })\n );\n $.each(params, function(key, value) {\n form.append($('<input>', {type: 'hidden', name: key, value: value}));\n });\n form.appendTo('body').submit();\n }\n }\n\n var promptMsg = $this.data('confirm');\n var confirmed;\n if (!promptMsg) {\n confirmed = $.Deferred().resolve();\n } else {\n confirmed = confirmPrompt(promptMsg, $(this).data('title') || $T('Confirm action'));\n }\n confirmed.then(execute);\n });\n }\n\n function setupAjaxForms() {\n function _getOptions($elem, extra) {\n var updateOpts = $elem.data('update');\n return $.extend(\n {\n context: $elem,\n formContainer: $elem.data('form-container'),\n confirmCloseUnsaved: $elem.data('confirm-close-unsaved') !== undefined,\n update: updateOpts\n ? {\n element: $elem.data('update'),\n replace: $elem.data('replace-update') !== undefined,\n highlight: $elem.data('highlight-update') !== undefined,\n }\n : null,\n },\n extra\n );\n }\n\n function _handleClick(evt) {\n evt.preventDefault();\n var $this = $(this);\n if ($this.hasClass('disabled')) {\n return;\n }\n\n inlineAjaxForm(\n _getOptions($this, {\n load: {\n url: $this.data('href'),\n },\n scrollToForm: $this.data('scroll-to-form') !== undefined,\n })\n );\n\n function toggleDisabled(disabled) {\n if ($this.data('hide-trigger') !== undefined) {\n $this.toggle(!disabled);\n }\n if ($this.is('a')) {\n $this.toggleClass('disabled', disabled);\n } else {\n $this.prop('disabled', disabled);\n }\n\n if (disabled) {\n $this.trigger('indico:closeAutoTooltip');\n }\n }\n\n $this\n .on('ajaxForm:show', function() {\n toggleDisabled(true);\n })\n .on('ajaxForm:hide', function() {\n toggleDisabled(false);\n });\n }\n\n function _handleHtmlUpdate($elem) {\n $elem.find('form[data-ajax-form]').each(function() {\n var $this = $(this);\n inlineAjaxForm(\n _getOptions($this, {\n load: null,\n initiallyHidden: $this.data('initially-hidden') !== undefined,\n })\n );\n });\n }\n\n $('body').on('click', 'button[data-ajax-form], a[data-ajax-form]', _handleClick);\n $('body').on('indico:htmlUpdated', function(evt) {\n _handleHtmlUpdate($(evt.target));\n });\n _handleHtmlUpdate($('body'));\n }\n\n function setupMathJax() {\n var $elems = $('.js-mathjax');\n if ($elems.length) {\n $elems.mathJax();\n }\n }\n\n function setupAnchorLinks() {\n $('[data-anchor], [data-permalink]').each(function() {\n const $elem = $(this);\n const fragment = $elem.data('anchor');\n const permalink = $elem.data('permalink');\n const stripArg = $elem.data('anchor-strip-arg');\n\n // remove the field `stripArg` from the query string\n const params = new URLSearchParams(window.location.search);\n if (stripArg) {\n params.delete(stripArg);\n }\n const newQueryString = params.toString();\n const url = window.location.pathname + (newQueryString ? `?${newQueryString}` : '');\n\n $('<a>', {\n class: 'anchor-link',\n href: permalink || `${url}#${fragment}`,\n title: $elem.data('anchor-text') || $T.gettext('Direct link to this item'),\n })\n .html('¶')\n .appendTo($elem);\n });\n }\n\n function setupToggleLinks() {\n $('body').on('click', '[data-toggle]:not([data-toggle=dropdown])', function(evt) {\n evt.preventDefault();\n var $elem = $(this);\n var accordion = $elem.data('accordion');\n var toggleClass = $elem.data('toggle-class');\n var isVisible = $elem.hasClass('js-details-visible');\n\n function toggleDetails($trigger) {\n var $target = $($trigger.data('toggle'));\n var wasVisible = $trigger.hasClass('js-details-visible');\n $target.slideToggle('fast');\n $trigger.toggleClass('js-details-visible');\n if (toggleClass) {\n $(toggleClass.target).toggleClass(toggleClass.class);\n }\n $trigger.text(wasVisible ? $trigger.data('show-text') : $trigger.data('hide-text'));\n }\n\n if (!isVisible && accordion !== undefined) {\n $(accordion)\n .find('.js-details-visible')\n .each(function() {\n toggleDetails($(this));\n });\n }\n\n toggleDetails($elem);\n });\n }\n})(window);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n// -----------------------------------------------------------------------------\n// Indico-specific settings\n// -----------------------------------------------------------------------------\n\nimport {$T} from '../../utils/i18n';\n\n$.datepicker.setDefaults({\n autoSize: true,\n buttonText: '',\n dateFormat: 'dd/mm/yy',\n firstDay: 1,\n nextText: $T('Next'),\n prevText: $T('Previous'),\n showOn: 'both',\n});\n\n$.fn.qtip.defaults = $.extend(true, {}, $.fn.qtip.defaults, {\n position: {\n my: 'top left',\n at: 'bottom right',\n viewport: $(window),\n },\n style: {\n tip: {corner: true},\n },\n});\n\n$.extend($.colorbox.settings, {\n opacity: 0.6,\n});\n\n$.tablesorter.defaults.sortReset = true;\n\n$.ajaxSetup({\n traditional: true,\n beforeSend: function(xhr, settings) {\n 'use strict';\n if (!/^https?:.*/.test(settings.url)) {\n // Add CSRF token to local requests\n xhr.setRequestHeader('X-CSRF-Token', $('#csrf-token').attr('content'));\n }\n },\n});\n\n// Disabling autoDiscover, otherwise Dropzone will try to attach twice.\nif (window.Dropzone) {\n window.Dropzone.autoDiscover = false;\n}\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n/* eslint no-shadow: ['warn', {allow: ['file']}] */\n\nimport Dropzone from 'dropzone';\nimport 'dropzone/dist/dropzone.css';\n\n(function(global) {\n Dropzone.autoDiscover = false;\n global.Dropzone = Dropzone;\n\n // indicates whether default 'submit' handle was skipped\n let handlerSkipped = false;\n\n global.setupDropzone = function(element) {\n var $dz = $(element);\n var $form = $dz.closest('form');\n var $flashArea = $form.find('.flashed-messages');\n var options = {\n timeout: 0,\n clickable: element + ' .dropzone-inner',\n previewsContainer: element + ' .dropzone-previews',\n autoProcessQueue: false,\n\n init: function() {\n var $button = $form.find('input[type=\"submit\"], .js-dropzone-upload');\n var self = this;\n var files = $dz.data('value');\n\n function addFile(file) {\n var existingFile = {\n name: file.filename,\n id: file.id,\n size: file.size,\n accepted: true,\n };\n\n self.emit('addedfile', existingFile);\n $dz.find('.dz-progress').hide();\n self.files.push(existingFile);\n\n /* Disable opening the upload dialog when clicking on the file's preview element */\n $dz.find('.dz-preview').on('click', function(e) {\n e.stopPropagation();\n });\n\n // Check if the existing file is an image and add the image preview.\n if (file.content_type.match(/image\\/.*/) && file.url) {\n $dz.find('.dz-image > img').attr('src', file.url);\n $dz.find('.dz-image > img').attr('width', '120px');\n $dz\n .find('.dz-preview')\n .removeClass('dz-file-preview')\n .addClass('dz-image-preview');\n }\n }\n\n if (files) {\n if (options.uploadMultiple) {\n files.forEach(addFile);\n } else {\n addFile(files);\n }\n }\n\n // skip default ajaxForm submission when there are attachments\n // and it's ajax dialog to avoid double submission.\n $form.on('ajaxForm:validateBeforeSubmit', e => {\n const isAjaxDialog = !!$(e.target).closest('.exclusivePopup').length;\n if (self.getQueuedFiles().length && !handlerSkipped && isAjaxDialog) {\n e.preventDefault();\n handlerSkipped = true;\n }\n });\n\n $form.on('submit', function(e) {\n var evt = $.Event('ajaxForm:validateBeforeSubmit');\n $(this).trigger(evt);\n if (!evt.isDefaultPrevented()) {\n $button.prop('disabled', true);\n $.each(self.getRejectedFiles(), function(index, file) {\n self.removeFile(file);\n });\n if (self.getQueuedFiles().length) {\n e.preventDefault();\n e.stopPropagation();\n $dz.find('.dz-progress').show();\n self.processQueue();\n }\n }\n handlerSkipped = false;\n });\n\n self.on('addedfile', function(file) {\n if (!options.uploadMultiple && self.files.length > 1) {\n self.removeFile(self.files[0]);\n }\n\n // force change in form, so that we can process\n // the 'change' event\n $button.prop('disabled', false);\n $form.find('.change-trigger').val('added-file');\n $form.trigger('change');\n\n $dz.find('.dz-message').hide();\n $dz.find('.dz-progress').hide();\n $(file.previewElement).on('click', function(e) {\n e.stopPropagation();\n });\n });\n\n self.on('removedfile', function(file) {\n $button.prop('disabled', false);\n if (self.files.length === 0) {\n // force change in form, so that we can process the 'change' event\n $form.find('.change-trigger').val('no-file');\n $form.trigger('change');\n $dz.find('.dz-message').show();\n }\n\n if (options.editable) {\n var $field = $form.find('.deleted-files');\n var deletedFiles = JSON.parse($field.val());\n deletedFiles.push(file.id);\n $field.val(JSON.stringify(deletedFiles));\n }\n });\n\n self.on(options.uploadMultiple ? 'sendingmultiple' : 'sending', function() {\n $form.trigger('ajaxForm:beforeSubmit');\n });\n\n self.on(options.uploadMultiple ? 'successmultiple' : 'success', function(e, response) {\n if (options.handleFlashes) {\n handleFlashes(response, true, $flashArea);\n }\n\n $dz.data('value', response.content);\n $form.find('.change-trigger').val($dz.data('value') ? 'uploaded-file' : 'no-file');\n $form.trigger('indico:fieldsSaved', response);\n $form.trigger('ajaxForm:success', [response]);\n });\n\n self.on('error', function(e, msg, xhr) {\n if (xhr) {\n var evt = $.Event('ajaxForm:error');\n $form.trigger(evt, [xhr]);\n if (!evt.isDefaultPrevented()) {\n handleAjaxError(xhr);\n }\n }\n });\n },\n };\n\n _.extend(options, $dz.data('options'));\n var param = options.paramName;\n options.paramName = function() {\n return param;\n };\n\n // include the csrf token in case the dropzone is submitting data to a\n // seperate endpoint than the form's action\n if (options.url) {\n options.params = {\n csrf_token: $form.find('#csrf_token').val(),\n };\n $dz.dropzone(options);\n } else {\n $form.dropzone(options);\n }\n\n $form.data('dropzoneField', $dz[0]);\n };\n})(window);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\nimport showReactErrorDialog from 'indico/react/errors';\n\n(function(global) {\n global.handleAjaxError = function handleAjaxError(data) {\n if (\n 'responseText' in data &&\n data.readyState === 0 &&\n data.status === 0 &&\n !data.responseText\n ) {\n // if data is an XHR object and we don't have any readyState, status or response text\n // the request most likely failed due to a page change so we just ignore the failure.\n // this is not 100% reliable, an interrupted connection could yield the same result.\n // since showing an error dialog in that case won't be very useful either this drawback\n // is acceptable.\n return true;\n }\n if (data.responseText) {\n // $.ajax error callback, so data is the xhr object\n try {\n data = JSON.parse(data.responseText);\n } catch (e) {\n showReactErrorDialog({\n title: $T.gettext('Something went wrong'),\n message: '{0} ({1})'.format(data.statusText.toLowerCase(), data.status),\n });\n return true;\n }\n }\n // data.data.error is only needed for angular error handlers\n const error = data.error || (data.data && data.data.error);\n if (error) {\n showReactErrorDialog(error);\n return true;\n }\n };\n\n // Select the field of an i-form which has an error and display the tooltip.\n global.showFormErrors = function showFormErrors(context) {\n context = context || $('body');\n context\n .find('.i-form .has-error > .form-field, .i-form .has-error > .form-subfield')\n .each(function() {\n const $this = $(this);\n // Try a custom tooltip anchor\n let input = $this.find('[data-tooltip-anchor]');\n\n if (!input.length) {\n // Try the first non-hidden input field\n input = $this.children(':input:not(:hidden)').eq(0);\n }\n\n if (!input.length) {\n // Try the first element that's not a hidden input\n input = $this.children(':not(:input:hidden)').eq(0);\n }\n input.stickyTooltip('danger', () => $this.data('error'));\n });\n };\n})(window);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n/* global countWords:false, initForms:false, showFormErrors:false, toggleAclField:false */\n\n// eslint-disable-next-line import/unambiguous\n\nimport {Translate} from 'indico/react/i18n';\n\n(function(global) {\n function validatePasswordConfirmation(passwordField, confirmField) {\n if ('setCustomValidity' in confirmField[0]) {\n passwordField.add(confirmField).on('change input', function() {\n if (passwordField.val() !== confirmField.val()) {\n confirmField[0].setCustomValidity($T('The passwords do not match.'));\n } else {\n confirmField[0].setCustomValidity('');\n }\n });\n }\n }\n\n function hideFieldUnless(field, conditionField, requiredValues, checkedOnly) {\n conditionField.on('change', function() {\n const value = checkedOnly\n ? conditionField.filter(':checked').val() || false\n : conditionField.val();\n const active = !!(\n (!requiredValues.length && value) ||\n (requiredValues.length && _.contains(requiredValues, value))\n );\n field.closest('.form-group').toggle(active);\n let realField = field.is(':input') ? field : field.find(':input');\n if (realField.attr('type') === 'hidden') {\n // in case of custom widgets with multiple fields (e.g. the new react-based\n // date/time field) we need to select all inputs explicitly since the hidden\n // field is rather meaningless and the non-hidden fields break the form if they\n // are visually hidden but not actually disabled\n realField = field.closest('.form-group').find(':input');\n }\n if (realField.length && !field.data('initiallyDisabled')) {\n realField.prop('disabled', !active);\n }\n });\n }\n\n function validateLength($field) {\n if (!('setCustomValidity' in $field[0])) {\n return;\n }\n\n const minChars = $field.data('min-length');\n const maxChars = $field.data('max-length');\n const minWords = $field.data('min-words');\n const maxWords = $field.data('max-words');\n\n $field.on('change input', function() {\n let msg = '';\n const charCount = $field.val().trim().length;\n const wordCount = countWords($field.val());\n\n if ((minChars && charCount < minChars) || (maxChars && charCount > maxChars)) {\n if (!maxChars) {\n msg = $T\n .ngettext(\n 'Field must be at least {0} character long.',\n 'Field must be at least {0} characters long.',\n minChars\n )\n .format(minChars);\n } else if (!minChars) {\n msg = $T\n .ngettext(\n 'Field cannot be longer than {0} character.',\n 'Field cannot be longer than {0} characters.',\n maxChars\n )\n .format(maxChars);\n } else {\n msg = $T\n .gettext('Field must be between {0} and {1} characters long.')\n .format(minChars, maxChars);\n }\n } else if ((minWords && wordCount < minWords) || (maxWords && wordCount > maxWords)) {\n if (!maxWords) {\n msg = $T\n .ngettext(\n 'Field must contain at least {0} word.',\n 'Field must contain at least {0} words.',\n minWords\n )\n .format(minWords);\n } else if (!minWords) {\n msg = $T\n .ngettext(\n 'Field cannot contain more than {0} word.',\n 'Field cannot contain more than {0} words.',\n maxWords\n )\n .format(maxWords);\n } else {\n msg = $T\n .gettext('Field must contain between {0} and {1} words.')\n .format(minWords, maxWords);\n }\n }\n $field[0].setCustomValidity(msg);\n });\n }\n\n function isElementInView(elem) {\n const docViewTop = $(window).scrollTop();\n const docViewBottom = docViewTop + $(window).height();\n const elemTop = $(elem).offset().top;\n const elemBottom = elemTop + $(elem).height();\n return elemBottom <= docViewBottom && elemTop >= docViewTop;\n }\n\n function showSaveCornerMessage($form) {\n cornerMessage({\n actionLabel: $T.gettext('Save now'),\n progressMessage: $T.gettext('Saving...'),\n message: $T.gettext('Do not forget to save your changes!'),\n class: 'highlight save-corner-message',\n actionCallback() {\n $form.submit();\n },\n });\n }\n\n function hideSaveCornerMessage($cornerMessage) {\n $cornerMessage.fadeOut(300, function() {\n $cornerMessage.remove();\n });\n }\n\n global.initForms = function initForms(forms) {\n // ConfirmPassword validator\n forms.find('input[data-confirm-password]').each(function() {\n const confirmField = $(this);\n const confirmFieldName = confirmField.data('confirmPassword');\n const passwordField = $(this.form).find(`input[name=\"${confirmFieldName}\"]`);\n validatePasswordConfirmation(passwordField, confirmField);\n });\n\n // HiddenUnless validator\n forms.find(':input[data-hidden-unless]:disabled').data('initiallyDisabled', true);\n forms.find(':input[data-hidden-unless]').each(function() {\n const field = $(this);\n const data = field.data('hidden-unless');\n const conditionField = $(this.form).find(':input[name=\"{0}\"]'.format(data.field));\n hideFieldUnless(field, conditionField, data.values, data.checked_only);\n setTimeout(() => {\n // we defer this call since react-based fields may no have fully rendered yet,\n // so if we call it too early we end up disabling only the hidden fields but\n // not the actual inputs in the react field (which is a problem e.g. in case\n // of the WTFDateTimeField).\n conditionField.triggerHandler('change');\n }, 0);\n });\n\n // SoftLength/WordCount validators\n const selectors = '[data-min-words], [data-max-words], [data-min-length], [data-max-length]';\n forms\n .find('input, textarea')\n .filter(selectors)\n .each(function() {\n validateLength($(this));\n });\n\n // track modifications\n forms.find('[data-disabled-until-change]').prop('disabled', true);\n forms\n .each(function() {\n const $this = $(this);\n\n if ($this.data('initialized')) {\n console.warn('re-initialized form', this); // eslint-disable-line no-console\n }\n $this.data('initialized', true);\n\n function _resetData() {\n $this.data('initialData', $.param($this.serializeArray(), true));\n $this.data('fieldsChanged', false);\n }\n _resetData();\n\n $this.on('indico:fieldsSaved', function() {\n _resetData();\n $this.find('[data-disabled-until-change]').prop('disabled', true);\n });\n\n if ($this.data('confirm-close-unsaved') !== undefined) {\n const oldOnBeforeUnload = window.onbeforeunload;\n window.onbeforeunload = () =>\n $this.data('fieldsChanged')\n ? Translate.string('Are you sure you want to leave this page without saving?')\n : undefined;\n $this.on('submit', () => {\n window.onbeforeunload = oldOnBeforeUnload;\n });\n }\n })\n .on('change input', function() {\n const $this = $(this);\n const untouched = $.param($this.serializeArray(), true) === $this.data('initialData');\n const $cornerMessage = $('.save-corner-message');\n $this.find('[data-disabled-until-change]').prop('disabled', untouched);\n $this.closest('form').data('fieldsChanged', !untouched);\n if ($this.find('[data-save-reminder]').length && !$this.data('locked-event-disabled')) {\n if (\n !isElementInView($this.find('[data-save-reminder]')) &&\n !untouched &&\n !$cornerMessage.length\n ) {\n showSaveCornerMessage($this);\n } else if (untouched) {\n hideSaveCornerMessage($cornerMessage);\n }\n }\n });\n\n // Remove corner message when 'Save' button is visible on screen\n $(window)\n .off('scroll.initForms')\n .on(\n 'scroll.initForms',\n _.debounce(function() {\n const $form = forms.find('[data-save-reminder]').closest('form');\n if ($form.length) {\n const $cornerMessage = $('.save-corner-message');\n const untouched = $.param($form.serializeArray(), true) === $form.data('initialData');\n if (isElementInView($form.find('[data-save-reminder]'))) {\n hideSaveCornerMessage($cornerMessage);\n } else if (!untouched && !$cornerMessage.length) {\n showSaveCornerMessage($form);\n }\n }\n }, 100)\n );\n\n forms.find('fieldset.collapsible > legend').on('click', function(evt) {\n evt.preventDefault();\n const $this = $(this);\n const $collapseIcon = $this.find('div > span');\n $this.next('.fieldset-content').slideToggle();\n $collapseIcon.toggleClass('icon-next icon-expand');\n });\n\n forms.find('fieldset.collapsible.initially-collapsed').each(function() {\n const $this = $(this);\n if ($this.find('div.form-field[data-error]').length) {\n $this.find('legend').trigger('click');\n }\n });\n\n if (forms.closest('.event-locked').length) {\n const lockedForms = forms.filter('.disable-fields-if-locked');\n lockedForms.data('locked-event-disabled', true);\n lockedForms.find(':input:not([type=hidden]):not([data-button-back])').prop('disabled', true);\n lockedForms.find(':input:submit').hide();\n }\n };\n\n global.toggleAclField = function toggleAclField(aclField, state) {\n aclField\n .closest('.form-group')\n .find('input.i-button')\n .prop('disabled', state)\n .end()\n .find('a.i-button')\n .toggleClass('disabled', state)\n .end();\n };\n\n global.aclIfProtected = function aclIfProtected(\n protectionField,\n aclField,\n selfProtection,\n inheritedProtection,\n folderField,\n folderProtection\n ) {\n protectionField.on('change', function() {\n toggleAclField(aclField, !this.checked);\n\n if (selfProtection && inheritedProtection) {\n selfProtection.toggle(this.checked);\n inheritedProtection.toggle(!this.checked);\n if (folderField) {\n folderField.triggerHandler('change');\n } else {\n folderProtection.hide();\n }\n }\n });\n _.defer(function() {\n protectionField.triggerHandler('change');\n if (folderField) {\n folderField.triggerHandler('change');\n }\n });\n };\n\n global.messageIfFolderProtected = function messageIfFolderProtected(\n protectionField,\n folderField,\n protectionInfo,\n selfProtection,\n inheritedProtection,\n folderProtection\n ) {\n folderField.on('change', function() {\n const selectedFolder = $(this);\n if (protectionInfo[selectedFolder.val()] && !protectionField.prop('checked')) {\n selfProtection.hide();\n inheritedProtection.hide();\n folderProtection\n .find('.folder-name')\n .html(selectedFolder.children('option:selected').text());\n folderProtection.show();\n } else {\n folderProtection.hide();\n selfProtection.toggle(protectionField.prop('checked'));\n inheritedProtection.toggle(!protectionField.prop('checked'));\n }\n });\n _.defer(function() {\n folderField.triggerHandler('change');\n });\n };\n\n /* Enable or disable elements (typically buttons) based on the state of checkboxes.\n *\n * - checkboxContainer: Element or jQuery object containing the checkboxes to consider\n * - checkboxSelector: Selector to find the checkboxes inside the containers\n * - buttonSelector: Selector, jQuery object or element corresponding to the button(s) to be enabled/disabled\n * - extraCheckCallback: Function called with the checkboxes as argument.\n * If it returns false the buttons will be disabled.\n */\n global.enableIfChecked = function enableIfChecked(\n checkboxContainer,\n checkboxSelector,\n buttonSelector,\n extraCheckCallback\n ) {\n function _update(force) {\n const $checkboxes = $(checkboxContainer)\n .find(checkboxSelector)\n .filter(':checked');\n let checked = force || !!$checkboxes.length;\n if (extraCheckCallback && extraCheckCallback($checkboxes) === false) {\n checked = false;\n }\n $(buttonSelector)\n .prop('disabled', !checked)\n .toggleClass('disabled', !checked);\n }\n\n $(checkboxContainer)\n .on('change', checkboxSelector, function() {\n _update(this.checked);\n })\n .on('indico:syncEnableIfChecked', function() {\n _update();\n });\n\n _update();\n };\n\n /* Provide a \"select really everything\" option for paginated lists.\n * When selecting all rows in such a list a message is shown indicating\n * that only the current page is selected with the option to select all\n * items (no matter on which page).\n */\n global.paginatedSelectAll = function paginatedSelectAll(options) {\n options = $.extend(\n true,\n {\n // the container element used as context for all other selectors.\n // in case of dynamically updated rows, this must remain the same\n // all the time as events are bound to it\n containerSelector: null,\n // the selector for the row selection checkboxes. used within the\n // context of containerSelector\n checkboxSelector: null,\n // the selector for the (usually hidden) all-items-on-all-pages-selected\n // checkbox. used within the context of containerSelector\n allSelectedSelector: null,\n // the selector for the element where the message whether all items\n // on the current page or really all items are selected.\n // used within the global context, i.e. not restricted by the given\n // containerSelector.\n selectionMessageSelector: null,\n // the total number of rows. may also be a function.\n totalRows: 0,\n messages: {\n // message shown when all items on all pages are selected\n allSelected(total) {\n // never used with total == 1. empty string is invalid so we use `*` instead\n return $T.ngettext('*', 'All {0} rows are currently selected.').format(total);\n },\n // message shown when all items on the current page are selected\n pageSelected(selected, total) {\n // never used with total == 1\n return $T\n .ngettext(\n 'Only {0} out of {1} rows is currently selected',\n 'Only {0} out of {1} rows are currently selected.',\n selected\n )\n .format(selected, total);\n },\n },\n },\n options\n );\n\n const container = $(options.containerSelector);\n container.on('change', options.checkboxSelector, _update);\n _update();\n\n function _update() {\n const messageContainer = $(options.selectionMessageSelector).empty();\n const numChecked = container.find(`${options.checkboxSelector}:checked`).length;\n const numUnchecked = container.find(`${options.checkboxSelector}:not(:checked)`).length;\n const numRows = numChecked + numUnchecked;\n\n if (numChecked < numRows) {\n // not everything selected\n messageContainer.hide();\n _setAllSelected(false);\n } else if (numChecked === options.totalRows) {\n // everything selected and only one page\n messageContainer.hide();\n _setAllSelected(true);\n } else if (numChecked === numRows) {\n // all rows selected\n if (_getAllSelected()) {\n $('<span>', {\n html: options.messages.allSelected(options.totalRows),\n }).appendTo(messageContainer);\n messageContainer.append(' ');\n $('<a>', {\n href: '#',\n text: $T.gettext('Select only the current page.'),\n click(evt) {\n evt.preventDefault();\n _setAllSelected(false);\n _update();\n },\n }).appendTo(messageContainer);\n } else {\n $('<span>', {\n html: options.messages.pageSelected(numChecked, options.totalRows),\n }).appendTo(messageContainer);\n messageContainer.append(' ');\n $('<a>', {\n href: '#',\n text: $T.gettext('Click here to select them all.'),\n click(evt) {\n evt.preventDefault();\n _setAllSelected(true);\n _update();\n },\n }).appendTo(messageContainer);\n }\n messageContainer.show();\n }\n }\n\n function _getAllSelected() {\n return container.find(options.allSelectedSelector).prop('checked');\n }\n\n function _setAllSelected(selected) {\n container\n .find(options.allSelectedSelector)\n .prop('checked', selected)\n .trigger('change');\n }\n\n return {\n isEverythingSelected: _getAllSelected,\n };\n };\n\n global.getDropzoneFiles = function getDropzoneFiles($form) {\n const files = {};\n const dropzoneField = $form.data('dropzoneField');\n if (dropzoneField) {\n files[dropzoneField.id] = $form[0].dropzone.getUploadingFiles();\n }\n return files;\n };\n\n const DROPZONE_FILE_KEYS = [\n 'upload',\n 'status',\n 'previewElement',\n 'previewTemplate',\n '_removeLink',\n 'accepted',\n 'width',\n 'height',\n 'processing',\n 'xhr',\n ];\n\n global.setDropzoneFiles = function setDropzoneFiles($field, files) {\n const dropzone = $field.closest('form')[0].dropzone;\n _.defer(function() {\n files.forEach(function(file) {\n DROPZONE_FILE_KEYS.forEach(function(key) {\n delete file[key];\n });\n dropzone.addFile(file);\n });\n });\n };\n\n $(document).ready(function() {\n initForms($('form'));\n\n $('body').on('indico:htmlUpdated', function(evt) {\n const $target = $(evt.target);\n const $forms = $target.find('form');\n if ($forms.length) {\n initForms($forms);\n showFormErrors($target);\n }\n });\n });\n})(window);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n/* global ConfirmPopup:false, SpecialRemovePopup:false, AlertPopup:false */\n\nimport Palette from '../../utils/palette';\n\n(function(global) {\n global.confirmPrompt = function confirmPrompt(message, title) {\n var dfd = $.Deferred();\n message = $('<div>', {width: 400, text: message});\n new ConfirmPopup(title || $T('Please confirm'), message, function(confirmed) {\n if (confirmed) {\n dfd.resolve();\n } else {\n dfd.reject();\n }\n }).open();\n return dfd.promise();\n };\n\n global.choiceConfirmPrompt = function choiceConfirmPrompt(message, title, choice1, choice2) {\n var dfd = $.Deferred();\n message = $('<div>', {width: 400, html: message});\n new SpecialRemovePopup(\n title || $T('Please confirm'),\n message,\n function(action) {\n if (action === 0) {\n dfd.reject();\n } else {\n dfd.resolve(action);\n }\n },\n choice1,\n choice2\n ).open();\n return dfd.promise();\n };\n\n global.alertPopup = function alertPopup(message, title) {\n var dfd = $.Deferred();\n new AlertPopup(title, message, function() {\n dfd.resolve();\n }).open();\n return dfd;\n };\n\n global.handleFlashes = function handleFlashes(data, clear, element) {\n var container;\n if (!element || !element.length) {\n container = $('#flashed-messages');\n } else if (element.hasClass('flashed-messages')) {\n container = element;\n } else {\n container = element.closest('.ui-dialog-content').find('.flashed-messages');\n if (!container.length) {\n container = element.closest('.page-content').find('.flashed-messages');\n }\n }\n if (!container.length) {\n container = $('#flashed-messages');\n }\n if (clear === undefined || clear) {\n container.empty();\n }\n if (data.flashed_messages) {\n var flashed = $(data.flashed_messages.trim()).children();\n container.append(flashed);\n }\n };\n\n global.handleNotifications = function handleNotifications(data) {\n if (data && data.flashed_messages) {\n handleFlashes(data);\n }\n if (data && data.notifications) {\n _.each(data.notifications, function(notification) {\n cornerMessage({\n message: notification,\n duration: 10000,\n class: 'highlight',\n actionLabel: $T.gettext('Close'),\n });\n });\n }\n };\n\n global.cornerMessage = function cornerMessage(options) {\n // Create nice message in bottom right corner\n\n options = $.extend(\n {\n actionLabel: null, // the text of the action label\n actionCallback: null, // the callback that will be invoked\n message: '', // the message that will be displayed\n progressMessage: $T.gettext('Executing operation...'), // the message that will be displayed while executing\n // the action\n feedbackMessage: $T.gettext('Operation done!'), // the message that will be displayed once the action has\n // been successfully executed\n duration: 0, // the lifetime of the message (without being clicked, 0 = forever)\n feedbackDuration: 4000, // the lifetime of the feedback message (0 = forever)\n class: '', // a class that will be added to the message box (warning, error, success or highlight)\n },\n options\n );\n\n var box;\n\n function _disappear(when) {\n return setTimeout(function() {\n box.fadeOut(function() {\n box.remove();\n });\n }, when);\n }\n\n var container = $('#corner-message-container');\n var disappearHandler = options.duration ? _disappear(options.duration) : null;\n\n if (!container.length) {\n container = $('<div id=\"corner-message-container\">').appendTo('body');\n }\n\n box = $('<div class=\"corner-message\">').prependTo(container);\n $('<div class=\"corner-message-text\">')\n .text(options.message)\n .appendTo(box);\n\n if (options.class) {\n box.addClass(options.class);\n }\n\n if (options.actionLabel) {\n var text = $('<a class=\"corner-message-action\" href=\"#\">')\n .text(options.actionLabel)\n .appendTo(box);\n\n text.on('click', function(evt) {\n evt.preventDefault();\n\n if (disappearHandler) {\n clearTimeout(disappearHandler);\n }\n if (options.actionCallback) {\n var promise = options.actionCallback() || $.Deferred();\n\n box\n .addClass('progress')\n .find('.corner-message-text')\n .text(options.progressMessage);\n text.remove();\n\n promise\n .then(\n function() {\n box.find('.corner-message-text').text(options.feedbackMessage);\n box\n .removeClass(options.class)\n .addClass('success')\n .removeClass('progress');\n },\n function() {\n box.text($T.gettext('Operation failed!'));\n box.removeClass('progress success warning highlight').addClass('error');\n }\n )\n .always(function() {\n if (options.feedbackDuration) {\n _disappear(options.feedbackDuration);\n }\n });\n } else {\n _disappear(0);\n }\n });\n }\n };\n\n global.uniqueId = function uniqueId() {\n return '' + Math.round(new Date().getTime() + Math.random() * 100);\n };\n\n global.countWords = function countWords(value) {\n value = value.trim();\n return value ? value.split(/\\s+/).length : 0;\n };\n\n function _doUpdateHtml(target, html, replace, highlight) {\n var $target = $(target);\n if (replace) {\n var $html = $($.parseHTML(html, document, true));\n $target.replaceWith($html);\n $target = $html;\n } else {\n $target.html($.parseHTML(html, document, true));\n }\n $target.trigger('indico:htmlUpdated');\n if (highlight) {\n $target.effect('highlight', {color: Palette.highlight});\n }\n }\n\n global.updateHtml = function updateHtml(target, data, replace, highlight) {\n if ($.isPlainObject(target)) {\n for (var key in target) {\n if (!(key in data)) {\n console.error('Invalid key: ' + key); // eslint-disable-line no-console\n } else {\n _doUpdateHtml(target[key], data[key], replace, highlight);\n }\n }\n } else {\n _doUpdateHtml(target, data.html, replace, highlight);\n }\n };\n})(window);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\nimport './compat/jquery-ui';\n\nimport 'jquery-colorbox';\nimport 'jquery-colorbox/example1/colorbox.css';\n\nimport 'jquery-form';\n\n// moment.js locales\nimport 'moment/locale/cs';\nimport 'moment/locale/de';\nimport 'moment/locale/en-ca';\nimport 'moment/locale/es';\nimport 'moment/locale/fr';\nimport 'moment/locale/it';\nimport 'moment/locale/mn';\nimport 'moment/locale/pl';\nimport 'moment/locale/pt-br';\nimport 'moment/locale/tr';\nimport 'moment/locale/uk';\nimport 'moment/locale/zh-cn';\n// Last imported locale is used as fallback\nimport 'moment/locale/en-gb';\n\nimport 'tablesorter';\nimport Taggle from 'taggle';\n\nimport 'qtip2';\nimport 'qtip2/dist/jquery.qtip.css';\n\nimport 'vanderlee-colorpicker';\nimport 'vanderlee-colorpicker/jquery.colorpicker.css';\n\nimport './widgets';\n\n// i18n (Jed)\nimport {defaultI18n, $T} from '../utils/i18n';\n\n// Constructs that extend the behaviour\n// of the HTML\nimport './extensions/clipboard';\nimport './extensions/global';\n\n// Utility global functions\nimport './utils/ajaxdialog';\nimport './utils/ajaxform';\nimport './utils/declarative';\nimport './utils/defaults';\nimport './utils/dropzone';\nimport './utils/errors';\nimport './utils/forms';\nimport './utils/misc';\nimport './utils/routing';\nimport './utils/sortablelist';\n\n// jQuery-migrate should be muted when in production\nif (process.env.NODE_ENV !== 'development') {\n $.migrateMute = true;\n}\n$.migrateMute = true;\n// explicit tracebacks are not needed\n$.migrateTrace = false;\nrequire('jquery-migrate');\n\n// These global definitions are needed so that\n// legacy code can access them globally\nObject.assign(window, {\n _,\n moment,\n $T,\n i18n: defaultI18n,\n});\n\nwindow.Taggle = Taggle;\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n/* global ExclusivePopup:false, showFormErrors:false, initForms:false */\n/* eslint-disable max-len */\n\n(function(global, $) {\n 'use strict';\n\n // Ajaxifies a link to open the target page (which needs to be using jsonify_template or\n // WPJinjaMixin.render_template) in a modal dialog. Any forms on the page are ajaxified and should be using\n // redirect_or_jsonify() (when used with WPJinjaMixin) or jsonify_data (when used with jsonify_template)\n // in case of success (or just return a JSON response containing success=true and possibly flashed messages).\n // The link target MUST point to a page which is also valid when loaded directly in the browser since the\n // link could still be opened in a new tab manually. If you don't have a non-AJAX version, place the url in\n // data-href.\n $.fn.ajaxDialog = function jqAjaxDialog(options) {\n return this.on('click', function(e) {\n e.preventDefault();\n if ($(this).hasClass('disabled')) {\n return;\n }\n var href = $(this).attr('href');\n if (href === undefined || href === '#') {\n var dataHref = $(this).data('href');\n href = dataHref ? dataHref : href;\n }\n ajaxDialog(\n $.extend(\n {\n title: $(this).data('title'),\n },\n options,\n {\n url: href,\n trigger: this,\n }\n )\n );\n });\n };\n\n // See the documentation of $.fn.ajaxDialog - use this function if you want to open an ajax-based dialog\n // manually instead of triggering it from a link using its href.\n global.ajaxDialog = function ajaxDialog(options) {\n options = $.extend(\n {\n trigger: null, // element that opened the dialog\n title: null, // title of the dialog\n subtitle: null, // subtitle of the dialog\n closeButton: undefined, // include a close button at the bottom of the dialog. the inner text of the button\n // is configurable\n url: null, // url to get the content from\n content: null, // content of the dialog (used instead of the url option)\n method: 'GET', // http method to get the form/dialog\n data: null, // object or callable to add data when loading the form/dialog\n backSelector: '[data-button-back]', // elements in the form which will close the form\n clearFlashes: true, // clear existing flashed messages before showing new ones\n onClose: null, // callback to invoke after closing the dialog. first argument is null if closed manually,\n // otherwise the JSON returned by the server. if it returns false, the dialog will remain\n // open; if it returns a Deferred object, the dialog remain open until the object is resolved\n onOpen: null, // callback to invoke after opening the dialog.\n onLoadError: null, // callback to invoke when loading the dialog fails. receives the jqxhr object as an\n // argument. if the function returns false, the default error handler is not invoked.\n onError: null, // callback to invoke after triggering ajaxDialog:close event\n getExtraData: function() {}, // callback to add data to the form. receives the <form> element as `this`\n confirmCloseUnsaved: false, // ask the user to confirm closing the dialog with unsaved changes\n dialogClasses: '', // extra classes to add to the dialog canvas\n hidePageHeader: false, // if the default page header (title/subtitle/description) should be hidden\n fullyModal: false, // Makes the dialog the only scrollable element\n },\n options\n );\n\n var confirmCloseMessage = $T(\n 'You have unsaved changes. Do you really want to close the dialog without saving?'\n );\n var popup = null;\n var customData = null;\n var oldOnBeforeUnload = null;\n var ignoreOnBeforeUnload = false;\n var savedFiles = {};\n\n loadDialog();\n\n function loadDialog() {\n if (options.content) {\n showDialog({js: '', html: options.content});\n return;\n }\n $.ajax({\n type: options.method,\n url: options.url,\n data: $.isFunction(options.data) ? options.data() : options.data,\n cache: false, // IE caches GET AJAX requests. WTF.\n complete: IndicoUI.Dialogs.Util.progress(),\n error: function(xhr) {\n var handled = false;\n if (options.onLoadError && options.onLoadError(xhr) === false) {\n handled = true;\n }\n if (options.trigger) {\n var evt = $.Event('ajaxDialog:loadError');\n $(options.trigger).trigger(evt, [xhr]);\n if (evt.isDefaultPrevented()) {\n handled = true;\n }\n }\n if (!handled) {\n handleAjaxError(xhr);\n }\n },\n success: function(data, _, xhr) {\n if (handleAjaxError(data)) {\n return;\n }\n var loadedURL = xhr.getResponseHeader('X-Indico-URL');\n if (loadedURL) {\n // in case of a redirect we need to update the url used to submit the ajaxified\n // form. otherwise url normalization might fail during the POST requests.\n // we also remove the _=\\d+ cache buster since it's only relevant for the GET\n // request and added there automatically\n options.url = loadedURL\n .replace(/&_=\\d+/, '')\n .replace(/\\?_=\\d+$/, '')\n .replace(/\\?_=\\d+&/, '?');\n }\n showDialog(data);\n },\n });\n }\n\n function hasChangedFields() {\n var forms = popup.contentContainer.find('form');\n return (\n forms.length &&\n !!forms.filter(function() {\n return $(this).data('fieldsChanged');\n }).length\n );\n }\n\n function confirmClose() {\n return hasChangedFields()\n ? confirmPrompt(confirmCloseMessage, $T('Unsaved changes'))\n : $.Deferred().resolve();\n }\n\n function showDialog(dialogData) {\n if (popup) {\n _doCloseDialog();\n }\n popup = new ExclusivePopup(\n $.isFunction(options.title) ? options.title.call(options.trigger) : options.title,\n function() {\n closeDialog(null);\n return false;\n },\n false,\n false\n );\n\n popup.draw = function() {\n if (options.trigger && $(options.trigger).closest('.event-locked').length) {\n this.canvas.addClass('event-locked');\n }\n this.ExclusivePopup.prototype.draw.call(this, dialogData.html);\n if (options.subtitle) {\n this.canvas.prepend(\n $('<div>', {\n class: 'dialog-subtitle',\n text: options.subtitle,\n })\n );\n }\n if (options.closeButton !== undefined && options.closeButton !== false) {\n var text = options.closeButton === true ? $T.gettext('Close') : options.closeButton;\n this.contentContainer.append(\n $('<button>', {\n 'class': 'i-button big right',\n 'type': 'button',\n 'text': text,\n 'data-button-back': '',\n })\n );\n }\n };\n\n popup.postDraw = function() {\n ajaxifyForms();\n popup.canvas.on('ajaxDialog:setData', function(e, data) {\n customData = data;\n });\n popup.canvas.on('ajaxDialog:close', function(e, data, submitted) {\n closeDialog(data, submitted);\n });\n popup.canvas.on('ajaxDialog:reload', function() {\n loadDialog();\n });\n injectJS(dialogData.js);\n _onOpen();\n _.defer(function() {\n popup.canvas.focusFirstField();\n });\n\n return true;\n };\n\n var dialogClasses = _.union(['dialog-window', options.dialogClasses]);\n if (options.hidePageHeader) {\n dialogClasses.push('no-page-header');\n }\n popup.canvas.addClass(dialogClasses.join(' '));\n\n if (options.confirmCloseUnsaved) {\n oldOnBeforeUnload = window.onbeforeunload;\n window.onbeforeunload = function() {\n if (popup.isopen && !ignoreOnBeforeUnload && hasChangedFields()) {\n return confirmCloseMessage;\n }\n };\n }\n\n popup.open();\n }\n\n function closeDialog(callbackData, submitted) {\n var confirmDeferred =\n submitted || !options.confirmCloseUnsaved ? $.Deferred().resolve() : confirmClose();\n confirmDeferred.done(function() {\n ignoreOnBeforeUnload = true;\n var onCloseResult = _onClose(callbackData);\n if (onCloseResult === false) {\n ignoreOnBeforeUnload = false;\n return;\n } else if (!onCloseResult || onCloseResult === true) {\n onCloseResult = $.Deferred().resolve();\n }\n onCloseResult.then(\n function() {\n _doCloseDialog();\n if (options.trigger) {\n $(options.trigger).trigger('ajaxDialog:closed', [callbackData, customData]);\n }\n },\n function() {\n ignoreOnBeforeUnload = false;\n }\n );\n });\n }\n\n function _doCloseDialog() {\n popup.close();\n if (options.confirmCloseUnsaved) {\n window.onbeforeunload = oldOnBeforeUnload;\n }\n popup = null;\n }\n\n function _onOpen() {\n if (options.fullyModal) {\n $('html, body').addClass('prevent-scrolling');\n }\n if (options.onOpen) {\n options.onOpen(popup);\n }\n }\n\n function _onClose(callbackData) {\n if (options.fullyModal) {\n $('html, body').removeClass('prevent-scrolling');\n }\n if (!options.onClose) {\n return $.Deferred().resolve();\n } else {\n return options.onClose(callbackData, customData);\n }\n }\n\n function ajaxifyForms() {\n var killProgress = null;\n popup.contentContainer.on('click', options.backSelector, function(e) {\n e.preventDefault();\n closeDialog();\n });\n var forms = popup.contentContainer.find('form');\n showFormErrors(popup.resultContainer);\n initForms(forms);\n forms.filter(':not([data-no-ajax])').each(function() {\n var $this = $(this);\n $this\n .on('ajaxForm:beforeSubmit', function() {\n killProgress = IndicoUI.Dialogs.Util.progress();\n $.extend(savedFiles, getDropzoneFiles($this));\n })\n .on('ajaxForm:error', function(e, xhr) {\n if (killProgress) {\n killProgress();\n }\n e.preventDefault();\n if ($.isFunction(options.onError)) {\n options.onError.call($this, xhr);\n } else {\n handleAjaxError(xhr);\n }\n })\n .on('ajaxForm:success', function(e, data) {\n if (killProgress) {\n killProgress();\n }\n if (handleAjaxError(data)) {\n return;\n }\n\n handleFlashes(data, options.clearFlashes, options.trigger ? $(options.trigger) : null);\n\n if (data.close_dialog || data.success) {\n savedFiles = {};\n closeDialog(data, true);\n if (data.redirect) {\n if (!data.redirect_no_loading) {\n IndicoUI.Dialogs.Util.progress();\n }\n location.href = data.redirect;\n }\n } else if (data.html) {\n popup.contentContainer.html(data.html);\n $this.ready(function() {\n $.each(savedFiles, function(id, files) {\n setDropzoneFiles($('#' + id), files);\n });\n savedFiles = {};\n });\n ajaxifyForms();\n injectJS(data.js);\n }\n });\n // We often use forms with an empty action; those need to go to\n // their page and not the page that loaded the dialog!\n var action = $this.attr('action') || options.url;\n $this.ajaxForm({\n url: action,\n dataType: 'json',\n data: options.getExtraData.call(this, options.trigger),\n beforeSubmit: function() {\n var evt = $.Event('ajaxForm:validateBeforeSubmit');\n $this.trigger(evt);\n if (evt.isDefaultPrevented()) {\n return false;\n }\n $this.trigger('ajaxForm:beforeSubmit');\n },\n error: function(xhr) {\n $this.trigger('ajaxForm:error', [xhr]);\n },\n success: function(data) {\n $this.trigger('ajaxForm:success', [data]);\n },\n });\n });\n }\n\n function injectJS(js) {\n if (js) {\n $('body').append(js);\n }\n }\n };\n})(window, jQuery);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n/* global showFormErrors:false, initForms:false, confirmPrompt:false, updateHtml:false */\n/* global getDropzoneFiles:false, setDropzoneFiles:false */\n\n(function(global) {\n 'use strict';\n\n global.inlineAjaxForm = function inlineAjaxForm(options) {\n options = $.extend(\n true,\n {\n // the element used to trigger events etc. may also be a selector.\n // when using it, the element should not be inside any element\n // that will be updated by this function as events would\n // not bubble up properly. in many cases using the button that\n // triggers the loading of the form may be the most suitable\n // element unless it is being replaced with the form, in which case\n // its parent element may be a good candidate.\n context: null,\n // an element that triggers loading the form when clicked. if not set,\n // the form will be loaded immediately.\n trigger: null,\n // settings related to loading the form, can be set to null if the\n // form is already available on the page\n load: {\n url: null,\n method: 'GET',\n data: {},\n },\n // only applicable if the form is not loaded with ajax. setting it\n // to true will assume that the form is not visible/editable at the\n // beginning and thus not bind e.g. the onbeforeunload event. when\n // using this you most likely want to trigger `ajaxForm:externalShow`\n // and `ajaxForm:externalHide` on the `context` element when the form\n // becomes visible/accessible and/or hidden again\n initiallyHidden: false,\n // whether to scroll to the form after showing it\n scrollToForm: false,\n // the element whose contents will be replaced with the form after\n // loading it. may also be a selector.\n formContainer: null,\n // selector to match elements in the form which will act as a cancel\n // button reverting the form container to its previous state\n closeSelector: '[data-button-back]',\n // ask the user to confirm closing the form (or navigating away)\n // when there are unsaved changes\n confirmCloseUnsaved: false,\n // settings on what should be updated on successful submission.\n // set to null to not update anything.\n update: {\n // the element to update with html received after successfully\n // submitting the form. may also be a selector.\n element: null,\n // whether to replace the element itself instead of its contents\n replace: false,\n // whether to highlight the updated element for a short moment\n highlight: false,\n },\n },\n options\n );\n\n var formUrl = options.load ? options.load.url : location.href;\n var formContainer = $(options.formContainer);\n var formVisible = false;\n var oldContent = null;\n var savedFiles = {};\n var context = options.context ? $(options.context) : null;\n\n function triggerEvent(name) {\n if (!context) {\n return false;\n }\n var evt = $.Event(name);\n context.trigger(evt, [].slice.call(arguments, 1));\n return evt.isDefaultPrevented();\n }\n\n function updateFormUrl(xhr) {\n var loadedUrl = xhr.getResponseHeader('X-Indico-URL');\n if (loadedUrl) {\n // in case of a redirect we need to update the url used to submit\n // the ajaxified form. otherwise url normalization might fail during\n // the POST requests. we also remove the _=\\d+ cache buster since\n // it's only relevant for the GET request and added there automatically\n formUrl = loadedUrl\n .replace(/&_=\\d+/, '')\n .replace(/\\?_=\\d+$/, '')\n .replace(/\\?_=\\d+&/, '?');\n }\n }\n\n function loadForm() {\n $.ajax({\n url: options.load.url,\n method: options.load.method,\n data: options.load.data,\n cache: false,\n dataType: 'json',\n complete: IndicoUI.Dialogs.Util.progress(),\n error: function(xhr) {\n if (!triggerEvent('ajaxForm:loadError', xhr)) {\n handleAjaxError(xhr);\n }\n },\n success: function(data, _, xhr) {\n updateFormUrl(xhr);\n showForm(data);\n },\n });\n }\n\n function showForm(data) {\n var triggerShow = false;\n if (!formVisible) {\n oldContent = formContainer.contents().detach();\n formVisible = true;\n triggerShow = true;\n if (options.confirmCloseUnsaved) {\n $(window).on('beforeunload', onBeforeUnload);\n }\n }\n formContainer.html(data.html);\n formContainer.find(options.closeSelector).on('click', function(evt) {\n evt.preventDefault();\n var msg;\n if (options.confirmCloseUnsaved && (msg = onBeforeUnload()) !== undefined) {\n confirmPrompt(msg, $T.gettext('Unsaved changes')).then(hideForm);\n } else {\n hideForm();\n }\n });\n ajaxifyForms();\n if (data.js) {\n $('body').append(data.js);\n }\n if (triggerShow) {\n triggerEvent('ajaxForm:show');\n if (options.scrollToForm) {\n $('body, html').animate({\n scrollTop: formContainer.offset().top,\n });\n }\n }\n _.defer(function() {\n formContainer.focusFirstField();\n });\n }\n\n function hideForm() {\n if (options.confirmCloseUnsaved) {\n $(window).off('beforeunload', onBeforeUnload);\n }\n if (!formVisible || !options.load) {\n return;\n }\n formVisible = false;\n formContainer.html(oldContent);\n oldContent = null;\n triggerEvent('ajaxForm:hide');\n }\n\n function _bindEvents($form) {\n var killProgress;\n\n $form\n .on('ajaxForm:beforeSubmit', function() {\n killProgress = IndicoUI.Dialogs.Util.progress();\n // save files from dropzone fields so we can re-populate in case of failure\n $.extend(savedFiles, getDropzoneFiles($form));\n })\n .on('ajaxForm:error', function(evt, xhr) {\n if (killProgress) {\n killProgress();\n }\n evt.preventDefault();\n handleAjaxError(xhr);\n })\n .on('ajaxForm:success', function(evt, data) {\n if (killProgress) {\n killProgress();\n }\n\n if (data.success) {\n savedFiles = {};\n hideForm();\n var updateOpts = options.update;\n if (updateOpts) {\n updateHtml(updateOpts.element, data, updateOpts.replace, updateOpts.highlight);\n } else if (data.redirect) {\n if (!data.redirect_no_loading) {\n IndicoUI.Dialogs.Util.progress();\n }\n location.href = data.redirect;\n }\n handleFlashes(data);\n } else if (data.html) {\n showForm(data);\n // restore files in dropzone fields\n $form.ready(function() {\n $.each(savedFiles, function(id, files) {\n setDropzoneFiles($('#' + id), files);\n });\n savedFiles = {};\n });\n }\n });\n }\n\n function ajaxifyForms(noInit) {\n var forms = formContainer.find('form');\n if (!noInit) {\n showFormErrors(formContainer);\n initForms(forms);\n }\n forms.each(function() {\n var $this = $(this);\n _bindEvents($this);\n $this.ajaxForm(_getAjaxFormArgs($this));\n });\n }\n\n function _getAjaxFormArgs($form) {\n return {\n url: $form.attr('action') || formUrl,\n dataType: 'json',\n beforeSubmit: function() {\n if ($form.data('dropzoneField') && $form.get(0).dropzone.files.length !== 0) {\n // Dropzone takes care of the form submission\n return false;\n }\n var evt = $.Event('ajaxForm:validateBeforeSubmit');\n $form.trigger(evt);\n if (evt.isDefaultPrevented()) {\n return false;\n }\n $form.trigger('ajaxForm:beforeSubmit');\n },\n error: function(xhr) {\n $form.trigger('ajaxForm:error', [xhr]);\n },\n success: function(data) {\n $form.trigger('ajaxForm:success', [data]);\n },\n };\n }\n\n function hasChangedFields() {\n var forms = formContainer.find('form');\n return (\n !!forms.length &&\n !!forms.filter(function() {\n return $(this).data('fieldsChanged');\n }).length\n );\n }\n\n function onBeforeUnload() {\n if (hasChangedFields()) {\n return $T.gettext('You have unsaved changes that will be lost.');\n }\n }\n\n if (context) {\n context.on('ajaxForm:externalShow', function() {\n if (options.confirmCloseUnsaved) {\n $(window).on('beforeunload', onBeforeUnload);\n }\n });\n context.on('ajaxForm:externalHide', function(evt, deferred) {\n var msg;\n if (!options.confirmCloseUnsaved) {\n deferred.resolve();\n } else if ((msg = onBeforeUnload()) === undefined) {\n deferred.resolve();\n } else {\n confirmPrompt(msg, $T.gettext('Unsaved changes')).then(\n function() {\n deferred.resolve();\n },\n function() {\n deferred.reject();\n }\n );\n }\n if (options.confirmCloseUnsaved) {\n deferred.then(function() {\n $(window).off('beforeunload', onBeforeUnload);\n });\n }\n });\n }\n\n if (!options.load) {\n // we don't go through showForm for an immediately-visible form\n if (options.confirmCloseUnsaved && !options.initiallyHidden) {\n $(window).on('beforeunload', onBeforeUnload);\n }\n ajaxifyForms(true);\n } else if (options.trigger) {\n options.trigger.on('click', function(evt) {\n evt.preventDefault();\n loadForm();\n });\n } else {\n loadForm();\n }\n };\n})(window);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n(function(global) {\n // rule-based url building is based on werkzeug.contrib.jsrouting\n\n function BuildError(message) {\n var argString;\n if (arguments.length > 1) {\n argString = JSON.stringify(Array.prototype.slice.call(arguments, 1));\n argString = argString.substring(1, argString.length - 1);\n }\n this.name = 'BuildError';\n this.message = message + (argString ? ': ' + argString : '');\n // remove the following when http://code.google.com/p/chromium/issues/detail?id=228909 is fixed\n var err = new Error(this.message);\n err.name = this.name;\n return err;\n }\n BuildError.prototype = new Error();\n BuildError.prototype.constructor = BuildError;\n\n var converterFuncs = {\n // Put any converter functions for custom URL converters here. The key is the converter's python class name.\n // If there is no function, encodeURIComponent is used - so there's no need to put default converters here!\n ListConverter: function(value) {\n if (_.isArray(value)) {\n value = value.join('-');\n }\n return encodeURIComponent(value);\n },\n };\n\n function splitObj(obj) {\n // Splits an object into keys and values (and the object itself for convenience)\n var names = [];\n var values = [];\n for (var name in obj) {\n names.push(name);\n values.push(obj[name]);\n }\n return {names: names, values: values, original: obj};\n }\n\n function suitable(rule, args) {\n // Checks if a rule is suitable for the given arguments\n var defaultArgs = splitObj(rule.defaults || {});\n var diffArgNames = _.difference(rule.args, defaultArgs.names);\n var i;\n\n // If a rule arg that has no default value is missing, the rule is not suitable\n for (i = 0; i < diffArgNames.length; i++) {\n if (!~_.indexOf(args.names, diffArgNames[i])) {\n return false;\n }\n }\n\n if (_.difference(rule.args, args.names).length === 0) {\n if (!rule.defaults) {\n return true;\n }\n // If a default argument is provided with a different value, the rule is not suitable\n for (i = 0; i < defaultArgs.names.length; i++) {\n var key = defaultArgs.names[i];\n var value = defaultArgs.values[i];\n if (value !== args.original[key]) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n function build(rule, args) {\n var tmp = [];\n var processed = rule.args.slice();\n for (var i = 0; i < rule.trace.length; i++) {\n var part = rule.trace[i];\n if (part.is_dynamic) {\n var converter = converterFuncs[rule.converters[part.data]] || encodeURIComponent;\n var value = converter(args.original[part.data]);\n if (value === null) {\n return null;\n }\n tmp.push(value);\n processed.push(part.name);\n } else {\n tmp.push(part.data);\n }\n }\n tmp = tmp.join('');\n var pipe = tmp.indexOf('|');\n // if we had subdomain routes, the subdomain would come before the pipe\n var url = tmp.substring(pipe + 1);\n var unprocessed = _.difference(args.names, processed);\n return {url: url, unprocessed: unprocessed};\n }\n\n function fixParams(params) {\n var cleanParams = {};\n for (var key in params) {\n var value = params[key];\n if (value === '') {\n continue;\n }\n if (value === undefined || value === null) {\n // convert them to a string\n value = '' + value;\n }\n if (!_.isObject(value) || _.isArray(value)) {\n cleanParams[key] = value;\n }\n }\n return cleanParams;\n }\n\n function build_url(template, params, fragment) {\n // eslint-disable-line camelcase\n var qsParams, url;\n\n params = fixParams(params);\n\n if (typeof template === 'string') {\n url = template;\n qsParams = params || {};\n } else if (template.type === 'flask_rules') {\n var args = splitObj(params || {});\n for (var i = 0; i < template.rules.length; i++) {\n var rule = template.rules[i];\n if (suitable(rule, args)) {\n var res = build(rule, args);\n if (res === null) {\n continue;\n }\n url = res.url;\n qsParams = _.pick(params, res.unprocessed);\n break;\n }\n }\n\n if (!url) {\n throw new BuildError('Could not build an URL', template.endpoint, params);\n }\n\n if ($('html').data('static-site')) {\n // See url_to_static_filename() in modules/events/static/util.py\n url = url.replace(/^\\/event\\/\\d+/, '');\n if (url.indexOf('static/') === 0) {\n url = url.substring(7);\n }\n url = url\n .replace(/^\\/+/, '')\n .replace(/\\/$/, '')\n .replace(/\\//g, '--');\n if (!url.match(/.*\\.([^\\/]+)$/)) {\n url += '.html';\n }\n } else {\n url = Indico.Urls.BasePath + url;\n }\n } else {\n throw new BuildError('Invalid URL template', template);\n }\n\n if (!$('html').data('static-site')) {\n var qs = $.param(qsParams, true);\n if (qs) {\n url += (~url.indexOf('?') ? '&' : '?') + qs;\n }\n if (fragment) {\n url += '#' + fragment.replace(/^#/, '');\n }\n }\n return url;\n }\n\n global.BuildError = BuildError;\n global.build_url = build_url; // eslint-disable-line camelcase\n})(window);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n(function(global) {\n global.setupSortableList = function setupSortableList($wrapper) {\n /* Works with the sortable_lists and sortable_list macros defined in\n * web/templates/_sortable_list.html\n */\n\n if (\n $wrapper.filter('.disable-if-locked').closest('.event-locked').length ||\n $wrapper.closest('.disable-if-locked').closest('.event-locked').length\n ) {\n return;\n }\n\n // Render the lists sortable\n if ($wrapper.data('disable-dragging') === undefined) {\n var $lists = $wrapper.find('ul');\n $lists.sortable({\n connectWith: $lists,\n placeholder: 'i-label sortable-item placeholder',\n containment: $wrapper,\n tolerance: 'pointer',\n forcePlaceholderSize: true,\n });\n }\n\n // Move an item from the enabled list to the disabled one (or vice versa).\n function toggleEnabled($li) {\n var $list = $li.closest('ul');\n var targetClass = $list.hasClass('enabled') ? '.disabled' : '.enabled';\n var $destination = $list.closest('.js-sortable-list-widget').find('ul' + targetClass);\n $li.detach().appendTo($destination);\n }\n\n $wrapper.find('ul li .toggle-enabled').on('click', function() {\n toggleEnabled($(this).closest('li'));\n });\n\n // Prevents dragging the row when the action buttons are clicked.\n $wrapper.find('.actions').on('mousedown', function(evt) {\n evt.stopPropagation();\n });\n };\n})(window);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n(function($) {\n 'use strict';\n\n /*\n * This provides an untility for checkboxes (usually switch widgets) which immediately\n * save the state using an AJAX request. The checkbox is disabled during the AJAX request\n * to avoid the user from clicking multiple times and spamming unnecessary AJAX requests.\n *\n * The following data attributes may be set on the checkbox to configure the behavior:\n * - href: required unless specified in the function call, URL for the AJAX request\n * - method: optional, method for the AJAX request if it's not POST\n * - confirm_enable: optional, show confirmation prompt when checking the checkbox if set\n * - confirm_disable: optional, show confirmation prompt when unchecking the checkbox if set\n */\n $.fn.ajaxCheckbox = function ajaxCheckbox(options) {\n options = $.extend(\n {\n sendData: true, // if `enabled: '1/0'` should be sent in the request\n // all these options may also be functions which are invoked with `this` set to the checkbox\n method: null, // taken from data-method by default, can be any valid HTTP method\n href: null, // taken from data-href by default\n },\n options\n );\n\n function getOption(opt, ctx) {\n var value = options[opt];\n if (_.isFunction(value)) {\n return value.call(ctx);\n } else {\n return value;\n }\n }\n\n return this.on('click', function(e) {\n e.preventDefault();\n var self = this;\n var $this = $(this);\n var checked = this.checked;\n var message = checked ? $this.data('confirmEnable') : $this.data('confirmDisable');\n var deferred = message ? confirmPrompt(message) : $.Deferred().resolve();\n deferred.then(function() {\n // update check state and prevent changes until the request finished\n $this.prop('checked', checked).prop('disabled', true);\n var data = options.sendData\n ? {\n enabled: checked ? '1' : '0',\n }\n : null;\n $.ajax({\n url: getOption('href', self) || $this.data('href'),\n method: getOption('method', self) || $this.data('method') || 'POST',\n dataType: 'json',\n data: data,\n complete: function() {\n $this.prop('disabled', false);\n },\n error: function(data) {\n handleAjaxError(data);\n $this.prop('checked', !checked);\n },\n success: function(data) {\n $this\n .prop('checked', data.enabled)\n .trigger('ajaxCheckbox:changed', [data.enabled, data]);\n handleFlashes(data, true, $this);\n },\n });\n });\n });\n };\n})(jQuery);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n(function($) {\n 'use strict';\n\n $.widget('indico.clearableinput', {\n options: {\n alwaysClearable: false,\n clearClass: 'clearableinput',\n clearOnEscape: true,\n emptyvalue: '',\n focusOnClear: true,\n focusOnStart: false,\n onClear: function() {},\n onInput: function() {},\n },\n\n _create: function() {\n var self = this;\n\n self.buttonBox = $('<span>').addClass('button-box');\n self.clearIcon = $('<a>')\n .addClass('i-link danger icon-close')\n .click(function(evt) {\n self._clear();\n evt.stopPropagation();\n });\n\n var wrapper = $('<span>').addClass(self.options.clearClass);\n self.element\n .addClass('clearabletext')\n .wrap(wrapper)\n .on('input', function() {\n self._handleInput();\n })\n .on('keyup', function(e) {\n if (self.options.clearOnEscape) {\n if (e.key === 'Escape') {\n self.element.val('value');\n self._clear();\n }\n }\n });\n\n self.buttonBox.append(self.clearIcon);\n self.element.after(self.buttonBox);\n self._refreshClearIcon();\n\n if (self.options.focusOnStart) {\n self.element.focus();\n }\n },\n\n _clear: function() {\n var self = this;\n self.element\n .val(self.options.emptyvalue)\n .trigger('propertychange')\n .trigger('change');\n self._refreshClearIcon();\n self.options.onClear.call(self.element);\n if (self.options.focusOnClear) {\n self.element.focus();\n } else {\n self.element.blur();\n }\n },\n\n _handleInput: function() {\n var self = this;\n self.options.onInput.call(self.element);\n self._refreshClearIcon();\n },\n\n _refreshClearIcon: function() {\n var self = this;\n if (self.element.val() === self.options.emptyvalue && !self.options.alwaysClearable) {\n self.clearIcon.css('visibility', 'hidden');\n } else {\n self.clearIcon.css('visibility', 'visible');\n }\n },\n\n initSize: function(fontSize, lineHeight) {\n var self = this;\n if (self.size === undefined) {\n self.size = {\n fontSize: fontSize,\n lineHeight: lineHeight,\n };\n }\n self.clearIcon.css('font-size', self.size.fontSize);\n self.clearIcon.css('line-height', self.size.lineHeight);\n self.element.css('min-height', self.size.lineHeight);\n },\n\n setEmptyValue: function(value) {\n var self = this;\n self.options.emptyvalue = value;\n },\n\n setValue: function(value) {\n var self = this;\n self.element.val(value);\n self._refreshClearIcon();\n },\n\n setIconsVisibility: function(visibility) {\n var self = this;\n self.clearIcon.css('visibility', visibility);\n },\n });\n})(jQuery);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n(function($) {\n $.widget('indico.indicoColorpicker', {\n updateWidget: function() {\n this.$preview.toggleClass('no-value', !this.$colorInput.val().length);\n const val = this.$colorInput.val();\n if (!val) {\n this.$preview.attr('style', null);\n }\n },\n\n _create: function() {\n let oldValue;\n const $element = this.element;\n const $preview = (this.$preview = $element.find('.color-preview'));\n const $colorInput = (this.$colorInput = $element.find('input'));\n\n $colorInput.colorpicker({\n colorFormat: '#HEX',\n altField: $preview,\n open: () => {\n oldValue = $colorInput.val();\n },\n ok: () => {\n this.updateWidget();\n },\n select: () => {\n this.updateWidget();\n },\n cancel: () => {\n $colorInput.val(oldValue);\n this.updateWidget();\n $colorInput.trigger('cancel');\n },\n });\n\n this.updateWidget();\n },\n });\n})(jQuery);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n(function($) {\n $.widget('indico.dropdown', {\n options: {\n selector: '.i-button[data-toggle]',\n effect_on: 'slideDown',\n effect_off: 'fadeOut',\n time_on: 200,\n time_off: 200,\n positioning: {},\n relative_to: undefined,\n always_listen: false, // if set to true, will trigger 'menu_select' event even when there is a valid href\n },\n\n _close: function(elem, effect) {\n var ul = elem.next('ul');\n\n elem.removeClass('open');\n elem.removeData('no-qtip');\n\n this._effect('off', ul, effect);\n ul.find('ul').hide();\n elem.data('on', false);\n elem.parent().removeClass('selected');\n elem\n .siblings('ul')\n .find('a')\n .data('on', false);\n },\n\n _close_all: function(effect) {\n var self = this;\n\n this.element.find('a, button').each(function() {\n self._close($(this), effect);\n });\n },\n\n _open: function(elem) {\n var self = this;\n var sibl = elem.next('ul.i-dropdown');\n var positionReference = this.options.relative_to || elem;\n\n elem.addClass('open');\n elem.data('no-qtip', true).trigger('indico:closeAutoTooltip');\n\n this._effect('on', sibl);\n elem.data('on', true);\n elem.parent().addClass('selected');\n sibl.position(\n $.extend(\n {of: positionReference},\n this.options.positioning[sibl.data('level')] || {\n my: 'left top',\n at: 'left bottom',\n offset: '0px 0px',\n }\n )\n );\n this.element.find('a').each(function() {\n if (this !== elem.get(0)) {\n self._close($(this));\n }\n });\n },\n\n _menuize: function(elem) {\n var self = this;\n\n elem.find(this.options.selector).each(function() {\n var $this = $(this);\n if (\n !$this.attr('href') ||\n $this.attr('href') === '#' ||\n $this.data('ignore-href') !== undefined ||\n self.options.always_listen\n ) {\n $this.on('click', function(e) {\n if ($this.data('toggle') === 'dropdown') {\n if ($this.data('on')) {\n self._close($this);\n } else if (!$this.hasClass('disabled')) {\n self._open($this);\n }\n e.preventDefault();\n e.stopPropagation();\n } else {\n var result = $this.triggerHandler('menu_select', self.element);\n if (!result) {\n self._close_all();\n }\n e.preventDefault();\n }\n });\n }\n });\n\n elem.find('ul.i-dropdown > li > a').each(function() {\n var $this = $(this);\n if (\n !$this.attr('href') ||\n $this.attr('href') === '#' ||\n $this.data('ignore-href') !== undefined ||\n self.options.always_listen\n ) {\n $this.on('click', function(e) {\n e.preventDefault();\n if ($this.hasClass('disabled')) {\n return;\n }\n var result = $this.triggerHandler('menu_select', self.element);\n if (!result) {\n self._close_all();\n }\n });\n }\n });\n\n elem.find('ul.i-dropdown > li.toggle').each(function() {\n var li = $(this);\n var link = $('<a>', {\n href: '#',\n text: li.text(),\n class: 'icon-checkmark ' + (li.data('state') ? '' : 'inactive'),\n click: function(e) {\n e.preventDefault();\n var $this = $(this);\n var newState = !li.data('state');\n $this.toggleClass('inactive', !newState);\n li.data('state', newState);\n li.triggerHandler('menu_toggle', [newState]);\n },\n });\n li.html(link);\n });\n },\n\n _create: function() {\n var self = this;\n this._menuize(this.element);\n $(document).on('click', function(e) {\n // click outside? close menus.\n if ($(self.element).has(e.target).length === 0) {\n self._close_all();\n }\n });\n },\n\n _effect: function(st, elem, effect) {\n var func = effect === undefined ? this.options['effect_' + st] : effect;\n\n if (func === null) {\n // no pretty effects\n elem.hide();\n } else if (typeof func == 'function') {\n func.call(elem, this);\n } else {\n elem[func].call(elem, this.options['time_' + st]);\n }\n },\n\n close: function() {\n this._close_all(null);\n },\n });\n})(jQuery);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n/*\n * This widget extends an *existing* UI button to allow it to be disabled\n * and show a a tooltip while it is disabled.\n */\n(function($, undefined) {\n $.widget(\n 'indico.disabledButtonWithTooltip',\n $.extend({}, $.indico.disabledElementWithTooltip, {\n // Default options\n options: {\n elementClass: 'ui-dttbutton',\n },\n\n _create: function() {\n this.isUIButton = this.element.is('.ui-button');\n if (this.options.disabled === null) {\n this.options.disabled = this.isUIButton\n ? this.element.button('option', 'disabled')\n : false;\n }\n $.indico.disabledElementWithTooltip.prototype._create.apply(this, arguments);\n },\n\n _update: function() {\n if (this.isUIButton) {\n this.element.button(!this.options.disabled ? 'enable' : 'disable');\n } else {\n this.element.prop('disabled', this.options.disabled);\n }\n this.overlay.toggle(this.options.disabled);\n },\n\n destroy: function() {\n $.indico.disabledElementWithTooltip.prototype.destroy.apply(this, arguments);\n // restore ui-state-disabled since super's destroy removed it\n if (this.isUIButton) {\n this.element.button('option', 'disabled', this.options.disabled);\n }\n },\n\n _setOption: function(key, value) {\n if (key == 'disabled') {\n this.options.disabled = value;\n if (this.isUIButton) {\n // HACK HACK HACK: We only want the UI disabled class if it's an UI button.\n // Unfortunately there is no option to control this so we only call the super method\n // if we have an UI button.\n $.Widget.prototype._setOption.apply(this, arguments);\n }\n this._update();\n } else {\n $.Widget.prototype._setOption.apply(this, arguments);\n }\n },\n })\n );\n})(jQuery);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n/* eslint-disable import/unambiguous */\n/* global build_url:false, handleAjaxError:false */\n\n(function(global) {\n global.setupCategoryPickerWidget = function setupCategoryPickerWidget(options) {\n options = $.extend(\n true,\n {\n fieldId: null,\n navigatorCategoryId: null,\n requireEventCreationRights: false,\n requireCategoryManagementRights: false,\n showEventCreationWarning: false,\n },\n options\n );\n\n const $field = $(`#${options.fieldId}`);\n const $categoryTitle = $(`#category-title-${options.fieldId}`);\n const $categoryWarning = $(`#category-warning-${options.fieldId}`);\n const $dialogTrigger = $(`#categorynav-button-${options.fieldId}`);\n let hiddenData = $field.val() ? JSON.parse($field.val()) : {};\n let navigatorCategory = options.navigatorCategoryId;\n const actionOn = {};\n\n if (options.requireEventCreationRights) {\n actionOn.categoriesWithoutEventCreationRights = {disabled: true};\n }\n\n if (options.requireCategoryManagementRights) {\n actionOn.categoriesWithoutCategoryManagementRights = {disabled: true};\n }\n\n if (hiddenData) {\n $categoryTitle.text(hiddenData.title);\n $field.val(JSON.stringify(hiddenData));\n }\n\n // null when we are in the root category and the root only has subcategories\n // See RHCreateEvent._default_category\n if (navigatorCategory !== null) {\n $.ajax({\n url: build_url(Indico.Urls.Categories.info, {category_id: navigatorCategory}),\n dataType: 'json',\n error: handleAjaxError,\n success(data) {\n navigatorCategory = data;\n const {category} = navigatorCategory;\n updateWarningVisibility(category);\n },\n });\n }\n\n $field.on('indico:categorySelected', (evt, category) => {\n updateWarningVisibility(category);\n });\n\n $dialogTrigger.on('click', function(evt) {\n evt.preventDefault();\n $('<div>').categorynavigator({\n category: navigatorCategory,\n openInDialog: true,\n actionOn,\n onAction(category) {\n const event = $.Event('indico:categorySelected');\n const dfd = $.Deferred();\n updateWarningVisibility(category);\n $categoryTitle.text(category.title);\n hiddenData = {id: category.id, title: category.title};\n navigatorCategory = category.id;\n $field\n .val(JSON.stringify(hiddenData))\n .trigger('change')\n .trigger(event, [category, dfd]);\n if (event.isDefaultPrevented()) {\n return dfd;\n }\n },\n });\n });\n\n function updateWarningVisibility(category) {\n const hidden =\n !options.showEventCreationWarning ||\n !category || // unlisted event or no category selected\n !category.has_children ||\n category.has_events;\n $categoryWarning.toggleClass('hidden', hidden);\n }\n };\n})(window);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n(function(global) {\n global.setupColorPickerWidget = function setupColorPickerWidget(options) {\n options = $.extend(\n true,\n {\n fieldId: null,\n showField: true,\n },\n options\n );\n\n var $formField = $('#' + options.fieldId);\n var $colorField = $formField.closest('.i-color-field');\n\n $colorField.indicoColorpicker();\n if (options.showField) {\n $formField.clearableinput({\n focusOnClear: false,\n onClear: () => {\n $colorField.indicoColorpicker('updateWidget');\n },\n });\n } else {\n $formField.hide();\n }\n\n // Hack to set clearable input whenever the color changes\n $formField\n .on('change', () => {\n $formField.clearableinput('setValue', $formField.val());\n })\n .on('cancel', () => {\n $formField.clearableinput('setValue', $formField.val());\n });\n };\n})(window);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n(function(global) {\n 'use strict';\n\n global.setupLinkingWidget = function setupLinkingWidget(options) {\n options = $.extend(\n true,\n {\n fieldId: null,\n },\n options\n );\n\n function updateDropdownState() {\n var $this = $(this);\n if ($this.prop('checked')) {\n $this\n .closest('.i-radio')\n .siblings('.i-radio')\n .find('.i-linking-dropdown select')\n .prop('disabled', true);\n $this\n .siblings('.i-linking-dropdown')\n .find('select')\n .prop('disabled', false);\n }\n }\n\n var field = $('#' + options.fieldId);\n field\n .find('.i-linking > .i-linking-dropdown > select > option[value=\"\"]')\n .prop('disabled', true);\n field\n .find('.i-linking.i-radio > input[type=\"radio\"]')\n .off('change')\n .on('change', updateDropdownState)\n .each(updateDropdownState);\n };\n})(window);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n// eslint-disable-next-line import/unambiguous\n(function(global) {\n 'use strict';\n\n global.setupLocationWidget = function setupLocationWidget(options) {\n options = $.extend(\n true,\n {\n fieldId: null,\n inheritanceAllowed: false,\n venues: null,\n venueNames: null,\n venueMap: null,\n rooms: null,\n inheritedLocationData: null,\n parent: {\n type: '',\n title: '',\n },\n },\n options\n );\n\n var field = $('#' + options.fieldId);\n var helperText = field.closest('.form-field').find('.location-inheritance-field .info-helper');\n var venueInput = $('#location-venue-' + options.fieldId);\n var roomInput = $('#location-room-' + options.fieldId);\n var address = $('#location-address-' + options.fieldId);\n var usingDefault = $('#location-inheritance-' + options.fieldId);\n var hiddenData = field.val() ? JSON.parse(field.val()) : {}; // Contains all location related data sent to\n // the server\n var latestUsedField = null;\n var currentScrollPos = 0;\n var delta = 0;\n var validRoom = false;\n var validVenue = false;\n var preventGuessing = false;\n var roomJustCleared = false;\n var venueJustChanged = false;\n\n function initializeInputs() {\n address.val(hiddenData.address);\n roomInput.val(hiddenData.room_name);\n venueInput.val(hiddenData.venue_name);\n if (hiddenData.venue_id) {\n highlightOption(venueInput, venueInput.val());\n }\n if (hiddenData.room_id) {\n highlightOption(roomInput, roomInput.val());\n }\n if (options.inheritanceAllowed) {\n usingDefault.prop('checked', hiddenData.inheriting);\n }\n }\n\n function toggleDefaultLocation(isChecked, isInitStep) {\n if (!options.inheritanceAllowed) {\n return;\n }\n var message = $T\n .gettext('Using default location from: {0} ({1})')\n .format(options.parent.title, options.parent.type);\n var text = isChecked ? message : $T.gettext('Using custom location');\n helperText.attr('title', text);\n venueInput.prop('disabled', isChecked).toggleClass('disabled', isChecked);\n roomInput.prop('disabled', isChecked).toggleClass('disabled', isChecked);\n address.prop('disabled', isChecked).toggleClass('disabled', isChecked);\n field.closest('.i-location-field').toggleClass('disabled', isChecked);\n\n hiddenData.inheriting = isChecked;\n field.val(JSON.stringify(hiddenData));\n\n /* Prefill the disabled inputs with the inherited location when the default location is checked\n (clear them otherwise) */\n if (options.inheritedLocationData !== null) {\n if (!isInitStep) {\n if (isChecked) {\n hiddenData = $.extend({}, options.inheritedLocationData);\n hiddenData.inheriting = true;\n initializeInputs();\n } else {\n clearField(venueInput);\n address.val('');\n delete hiddenData.address;\n }\n field.val(JSON.stringify(hiddenData)).trigger('change');\n }\n }\n }\n\n function reorderCategories(venueName) {\n /* When the choice of venue changes, the rooms of the selected venue need to appear on the top of the\n room typeahead list, simply by updating the groupOrder option, moving the selected venue to the first\n position of the array. */\n var groupOrder = [venueName];\n for (var i = options.venueNames.length - 1; i >= 0; i--) {\n if (!~groupOrder.indexOf(options.venueNames[i])) {\n groupOrder.push(options.venueNames[i]);\n }\n }\n global.Typeahead['#' + roomInput.get(0).id].options.groupOrder = groupOrder;\n }\n\n function updateVenueOnRoomChange(item) {\n /* Override the venue based on the room selection */\n if (item.venue_id !== hiddenData.venue_id) {\n venueJustChanged = true;\n var venueName = item.group || options.venueMap[item.venue_id];\n var data = {item_name: venueName, venue_id: item.venue_id, room_id: item.id};\n venueInput.val(venueName).trigger('typeahead:click-on-option', data);\n }\n }\n\n function clearRoom() {\n delete hiddenData.room_id;\n delete hiddenData.room_name;\n roomInput.val('');\n roomInput.siblings('.keyword-highlighter').removeClass('visible');\n roomJustCleared = true;\n postSelectionActions(roomInput, '');\n }\n\n function clearVenue() {\n delete hiddenData.venue_id;\n delete hiddenData.venue_name;\n venueInput.val('');\n venueInput.siblings('.keyword-highlighter').removeClass('visible');\n venueJustChanged = true;\n postSelectionActions(venueInput, '');\n clearRoom();\n }\n\n function clearField(field) {\n if (field[0].id == venueInput[0].id) {\n clearVenue();\n } else if (field[0].id == roomInput[0].id) {\n clearRoom();\n }\n }\n\n function updateResultsList(node, resultHtmlList) {\n /* Make sure the result dropdown is displayed just below the input field */\n var resultsWrapper = node.siblings('.typeahead__result');\n resultsWrapper.css('top', node.outerHeight() + 'px');\n\n /* Create/delete the 'just-use' option based on the input */\n var justUse = node.parent().find('.just-use-option');\n if (node.val()) {\n if (!justUse.length) {\n justUse = $('<div>', {\n class: 'just-use-option',\n });\n var justUseLink = $('<a>').on('click', function() {\n node.trigger('typeahead:click-on-custom-option', {item_name: node.val()});\n });\n justUse.append(justUseLink);\n resultsWrapper.append(justUse);\n }\n justUse.find('a').text($T.gettext('Just use \"{0}\"').format(node.val()));\n } else {\n justUse.remove();\n }\n\n if (!resultHtmlList) {\n return;\n }\n\n /* Always mark the first option as active in order for the keyboard inputs to work */\n var firstOption = resultHtmlList.find('li.typeahead__item').first();\n if (!firstOption.length) {\n node\n .parent()\n .find('.just-use-option')\n .addClass('active');\n } else {\n resultHtmlList\n .find('li.typeahead__item')\n .first()\n .addClass('active');\n }\n return resultHtmlList;\n }\n\n function scrollResultsList(inputField) {\n var parent = inputField.parent();\n var activeOption = parent.find('.typeahead__result').find('.typeahead__item.active');\n var dropdownList = parent.find('.typeahead__list');\n if (activeOption.length != 0) {\n if (activeOption.position().top + activeOption.outerHeight() > dropdownList.outerHeight()) {\n delta =\n activeOption.position().top + activeOption.outerHeight() - dropdownList.outerHeight();\n currentScrollPos += delta;\n dropdownList.animate(\n {\n scrollTop: currentScrollPos,\n },\n 50\n );\n } else if (activeOption.position().top < dropdownList.position().top) {\n currentScrollPos += activeOption.position().top;\n dropdownList.animate(\n {\n scrollTop: currentScrollPos,\n },\n 50\n );\n }\n }\n parent.find('.just-use-option').toggleClass('active', !activeOption.length);\n }\n\n function postSelectionActions(inputField, value) {\n field.val(JSON.stringify(hiddenData)).trigger('change');\n if (inputField[0].id == venueInput[0].id) {\n latestVenueValue = value;\n } else if (inputField[0].id == roomInput[0].id) {\n latestRoomValue = value;\n }\n }\n\n function highlightOption(inputField, value) {\n var highlighter = inputField.siblings('.keyword-highlighter');\n highlighter.text(value).addClass('visible');\n }\n\n function cleanQuery(query) {\n return query ? query.trim() : '';\n }\n\n function findRoomInVenue(query, venue) {\n if (options.rooms[venue]) {\n return $.grep(options.rooms[venue].data, function(room) {\n return room.name.toUpperCase() == query.toUpperCase();\n });\n }\n return [];\n }\n\n function toggleOpenResultsList(inputField) {\n if (\n inputField[0].id == venueInput[0].id &&\n roomInput.closest('.typeahead__container').hasClass('result')\n ) {\n roomInput.trigger('typeahead:close-results-list');\n } else if (\n inputField[0].id == roomInput[0].id &&\n venueInput.closest('.typeahead__container').hasClass('result')\n ) {\n venueInput.trigger('typeahead:close-results-list');\n }\n }\n\n function resetSelectedOption() {\n if (latestUsedField[0].id == venueInput[0].id) {\n validVenue = true;\n venueInput.val(latestVenueValue);\n if (hiddenData.venue_id) {\n highlightOption(venueInput, latestVenueValue);\n }\n } else if (latestUsedField[0].id == roomInput[0].id) {\n validRoom = true;\n roomInput.val(latestRoomValue);\n if (hiddenData.room_id) {\n highlightOption(roomInput, latestRoomValue);\n }\n }\n }\n\n function handleKeystrokes(node) {\n node.on('keydown', function(evt) {\n var $this = $(this);\n var typeaheadField = $this.parent();\n var resultsAreOpen = typeaheadField.parent().hasClass('result');\n var activeItem = typeaheadField.find('.active');\n if ((evt.key === 'Tab' || evt.key === 'Enter') && activeItem.length && resultsAreOpen) {\n preventGuessing = true;\n if (evt.key === 'Enter') {\n evt.preventDefault();\n }\n evt.stopImmediatePropagation();\n activeItem.find('a').click();\n } else if (evt.key === 'Tab' && node.val()) {\n evt.stopImmediatePropagation();\n } else if (evt.key === 'Escape') {\n evt.preventDefault();\n evt.stopImmediatePropagation();\n resetSelectedOption();\n $this.trigger('typeahead:close-results-list');\n }\n });\n }\n\n initializeInputs();\n\n var latestVenueValue = venueInput.val();\n var latestRoomValue = roomInput.val();\n\n if (options.inheritanceAllowed) {\n usingDefault.on('click', function() {\n toggleDefaultLocation(this.checked);\n });\n toggleDefaultLocation(usingDefault.prop('checked'), true);\n }\n\n venueInput.typeahead({\n input: '#location-venue-' + options.fieldId,\n source: options.venues,\n minLength: 0,\n searchOnFocus: true,\n resultContainer:\n '#' +\n venueInput\n .siblings('.typeahead__result')\n .find('.results-list-container')\n .attr('id'),\n template: '<span id=\"location-venue-{{id}}\">{{name}}</span>',\n // Used to keep the dropdown list open while there are no results (required by the 'just-use' option)\n // It has to return a truthy value\n emptyTemplate: function() {\n return ' ';\n },\n display: 'name',\n hint: true,\n cancelButton: false,\n callback: {\n onInit: function(node) {\n // XXX: setting this affects all instances of typeahead, but we want to be protected\n // from XSS everywhere anyway\n this.helper.cleanStringFromScript = v => $('<span />').text(v).html();\n this.query = this.rawQuery = node.val(); // Updates the results dropdown on init\n handleKeystrokes(node);\n },\n onClickBefore: function() {\n // Used in the onHideLayout callback to identify the reason of the dropdown closure\n validVenue = true;\n },\n onClickAfter: function(node, a, item) {\n venueInput.trigger('typeahead:click-on-option', {\n item_name: item.name,\n venue_id: item.id,\n });\n },\n onLayoutBuiltBefore: function(node, query, result, resultHtmlList) {\n return updateResultsList(node, resultHtmlList);\n },\n onSearch: function(node, query) {\n this.query = cleanQuery(query);\n },\n onShowLayout: function() {\n toggleOpenResultsList(this.node);\n venueInput.siblings('.keyword-highlighter').removeClass('visible');\n currentScrollPos = 0;\n },\n onHideLayout: function(node) {\n var venueValue = venueInput.val();\n if (!validVenue && node.val() && !preventGuessing) {\n /* Try to guess the choice of the user in case the results dropdown closes without a\n selection (i.e. clicking outside). If an exact match is found, select it, otherwise\n use the 'just-use' option */\n var result = $.grep(options.venues.data, function(venue) {\n return venue.name.toUpperCase() == venueValue.toUpperCase();\n });\n if (result.length) {\n venueInput.trigger('typeahead:click-on-option', {\n item_name: result[0].name,\n venue_id: result[0].id,\n });\n } else {\n venueInput.trigger('typeahead:click-on-custom-option', {item_name: venueValue});\n }\n } else if (!node.val()) {\n clearField(venueInput);\n }\n preventGuessing = false;\n validVenue = false;\n },\n onResult: function(node, query, result, resultCount) {\n node\n .parent()\n .find('.just-use-option')\n .toggleClass('active', !resultCount);\n },\n },\n });\n\n roomInput.typeahead({\n input: '#location-room-' + options.fieldId,\n source: options.rooms,\n minLength: 0,\n searchOnFocus: true,\n group: true,\n hint: true,\n cancelButton: false,\n maxItem: 0,\n resultContainer:\n '#' +\n roomInput\n .siblings('.typeahead__result')\n .find('.results-list-container')\n .attr('id'),\n template: '<span id=\"location-room-{{id}}\">{{name}}</span>',\n // Used to keep the dropdown list open while there are no results (required by the 'just-use' option)\n // It has to return a truthy value\n emptyTemplate: function() {\n return ' ';\n },\n display: 'name',\n callback: {\n onInit: function(node) {\n // XXX: setting this affects all instances of typeahead, but we want to be protected\n // from XSS everywhere anyway\n this.helper.cleanStringFromScript = v => $('<span />').text(v).html();\n this.query = this.rawQuery = node.val();\n handleKeystrokes(node);\n },\n onClickBefore: function() {\n validRoom = true;\n },\n onClickAfter: function(node, a, item) {\n roomInput.trigger('typeahead:click-on-option', item);\n },\n onLayoutBuiltBefore: function(node, query, result, resultHtmlList) {\n return updateResultsList(node, resultHtmlList);\n },\n onSearch: function(node, query) {\n this.query = cleanQuery(query);\n },\n onShowLayout: function() {\n toggleOpenResultsList(this.node);\n roomInput.siblings('.keyword-highlighter').removeClass('visible');\n currentScrollPos = 0;\n },\n onHideLayout: function(node) {\n if (!validRoom && node.val() && !preventGuessing) {\n var result = [];\n var venueValue = venueInput.val();\n var roomValue = roomInput.val();\n if (venueValue) {\n result = findRoomInVenue(roomValue, venueValue);\n } else {\n for (var i = 0; i < options.venueNames.length && !result.length; i++) {\n result = findRoomInVenue(roomValue, options.venueNames[i]);\n }\n }\n if (result.length) {\n roomInput.trigger('typeahead:click-on-option', result[0]);\n } else {\n roomInput.trigger('typeahead:click-on-custom-option', {item_name: roomValue});\n }\n } else if (!node.val()) {\n clearField(roomInput);\n }\n preventGuessing = false;\n validRoom = false;\n },\n onResult: function(node, query, result, resultCount) {\n node\n .parent()\n .find('.just-use-option')\n .toggleClass('active', !resultCount);\n },\n },\n });\n\n venueInput\n .on('typeahead:click-on-option', function(e, data) {\n reorderCategories(data.item_name);\n /* The room needs to be cleared when the venue changes */\n if (hiddenData.venue_id && data.venue_id != hiddenData.venue_id && !data.room_id) {\n clearField(roomInput);\n }\n hiddenData.venue_name = data.item_name;\n hiddenData.venue_id = data.venue_id;\n postSelectionActions(venueInput, data.item_name);\n highlightOption(venueInput, data.item_name);\n venueInput.attr('title', data.item_name);\n })\n .on('typeahead:click-on-custom-option', function(e, data) {\n if (hiddenData.room_id) {\n clearField(roomInput);\n }\n delete hiddenData.venue_id;\n hiddenData.venue_name = data.item_name;\n postSelectionActions(venueInput, data.item_name);\n venueInput.val(data.item_name);\n validVenue = true;\n venueInput.attr('title', data.item_name);\n venueInput.focus();\n venueInput.trigger('typeahead:close-results-list');\n });\n\n roomInput\n .on('typeahead:click-on-option', function(e, data) {\n updateVenueOnRoomChange(data);\n hiddenData.room_id = data.id;\n hiddenData.room_name = data.name;\n postSelectionActions(roomInput, data.name);\n highlightOption(roomInput, data.name);\n roomInput.attr('title', data.name);\n })\n .on('typeahead:click-on-custom-option', function(e, data) {\n delete hiddenData.room_id;\n hiddenData.room_name = data.item_name;\n postSelectionActions(roomInput, data.item_name);\n roomInput.val(data.item_name);\n validRoom = true;\n roomInput.attr('title', data.item_name);\n roomInput.focus();\n roomInput.trigger('typeahead:close-results-list');\n });\n\n $('#' + options.fieldId + '-wrapper .i-location-input-field')\n .on('typeahead:close-results-list', function() {\n global.Typeahead['#' + this.id].hideLayout();\n })\n .on('typeahead:open-results-list', function() {\n global.Typeahead['#' + this.id].showLayout();\n })\n .on('focus.typeahead', function() {\n /* In case the input is cleared, this ensures that the results dropdown will contain all available\n options. */\n var $this = $(this);\n if (roomJustCleared && $this[0].id == roomInput[0].id) {\n $this.trigger('input.typeahead');\n roomJustCleared = false;\n }\n if (venueJustChanged && $this[0].id == venueInput[0].id) {\n $this.trigger('input.typeahead');\n venueJustChanged = false;\n }\n // Make sure the results dropdown are displayed above the dialog.\n field.closest('.ui-dialog-content').css('overflow', 'inherit');\n field.closest('.exclusivePopup').css('overflow', 'inherit');\n\n latestUsedField = $(this);\n })\n .on('keydown', function(evt) {\n if (evt.key === 'ArrowUp' || evt.key === 'ArrowDown') {\n scrollResultsList($(this));\n }\n })\n .on('click', function() {\n /* Since focus remains on the field after selection, we need special handling for the click event in\n order to reopen the results list */\n if (\n !$(this)\n .closest('.typeahead__container')\n .hasClass('result')\n ) {\n $(this)\n .trigger('focus.typeahead')\n .trigger('input');\n }\n });\n\n $('#' + options.fieldId + '-wrapper .toggle-results-list').on('click', function() {\n var container = $(this)\n .parent()\n .parent();\n var input = container.find('.i-location-input-field').eq(0);\n input.trigger(\n container.hasClass('result') ? 'typeahead:close-results-list' : 'focus.typeahead'\n );\n });\n\n address.on('keyup input', function() {\n hiddenData.address = address.val();\n field.val(JSON.stringify(hiddenData)).trigger('change');\n });\n\n $('#' + options.fieldId + '-wrapper .keyword-highlighter').on('click', function() {\n /* Focus will trigger the results dropdown to open */\n $(this)\n .parent()\n .find('.i-location-input-field')\n .eq(0)\n .trigger('focus.typeahead');\n });\n };\n})(window);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n/* global countWords:false */\n\n(function(global) {\n function getLimitClass(remaining, max) {\n if (remaining < 0) {\n return 'limit-exceeded';\n } else if (remaining <= max * 0.2) {\n return 'limit-close';\n } else {\n return '';\n }\n }\n\n function updateLimits($field, options) {\n var $maxLengthInfo = $('#{0}-max-length-info'.format(options.fieldId));\n var value = $field.val().trim();\n $maxLengthInfo.empty();\n if (options.maxLength) {\n var charsLeft = options.maxLength - value.length;\n $('<span>', {\n html: $T\n .ngettext('<strong>1</strong> char left', '<strong>{0}</strong> chars left', charsLeft)\n .format(charsLeft),\n class: getLimitClass(charsLeft, options.maxLength),\n }).appendTo($maxLengthInfo);\n }\n if (options.maxWords) {\n var wordCount = countWords(value);\n var wordsLeft = options.maxWords - wordCount;\n $('<span>', {\n html: $T\n .ngettext('<strong>1</strong> word left', '<strong>{0}</strong> words left', wordsLeft)\n .format(wordsLeft),\n class: getLimitClass(wordsLeft, options.maxWords),\n }).appendTo($maxLengthInfo);\n }\n }\n\n function setupHelpTooltips($field) {\n var $container = $field.closest('[data-field-id]');\n ['markdown-info', 'latex-info', 'wmd-help-button'].forEach(function(name) {\n var content = $container.find('.{0}-text'.format(name));\n $container\n .find('.' + name)\n .qtip({\n content: content.html(),\n hide: {\n event: 'unfocus',\n },\n show: {\n solo: true,\n },\n style: {\n classes: 'informational markdown-help-qtip',\n },\n })\n .on('click', function(evt) {\n evt.preventDefault();\n });\n });\n }\n\n global.setupMarkdownWidget = function setupMarkdownWidget(options) {\n options = $.extend(\n true,\n {\n fieldId: null,\n useMarkdownEditor: false,\n maxLength: 0,\n maxWords: 0,\n },\n options\n );\n\n if (options.useMarkdownEditor) {\n var $field = $('#' + options.fieldId);\n $field.pagedown();\n\n if (options.maxLength || options.maxWords) {\n updateLimits($field, options);\n $field.on('change input', function() {\n updateLimits($(this), options);\n });\n }\n\n $field\n .on('focusin', function() {\n $field.parent().addClass('focused');\n })\n .on('focusout', function() {\n $field.parent().removeClass('focused');\n });\n\n setupHelpTooltips($field);\n }\n };\n})(window);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n/* global repositionTooltips:False */\n\n(function(global) {\n 'use strict';\n\n global.setupMultipleItemsWidget = function setupMultipleItemsWidget(options) {\n options = $.extend(\n true,\n {\n fieldId: null,\n uuidField: null,\n columns: null,\n sortable: false,\n columnChoices: null,\n },\n options\n );\n\n var widget = $('#' + options.fieldId + '-widget');\n var widgetBody = widget.children('table').children('tbody');\n var field = $('#' + options.fieldId);\n var data = JSON.parse(field.val());\n var addButton = $('#' + options.fieldId + '-add-button');\n var deleteButton = $('<a>', {\n class: 'action-icon icon-remove js-remove-row',\n href: '#',\n title: $T('Delete'),\n });\n var saveButton = $('<a>', {\n class: 'action-icon icon-floppy js-save-row',\n href: '#',\n title: $T('Save'),\n });\n var editButton = $('<a>', {\n class: 'action-icon icon-edit js-edit-row',\n href: '#',\n title: $T('Edit'),\n });\n var cancelButton = $('<a>', {\n class: 'action-icon icon-close js-cancel-edit',\n href: '#',\n title: $T('Cancel'),\n });\n var initialIndex;\n\n if (!data.length) {\n createRow();\n }\n\n data.forEach(function(item) {\n createRow(item);\n });\n\n if (options.sortable) {\n fixWidths();\n\n widget.find('tbody').sortable({\n axis: 'y',\n containment: 'parent',\n cursor: 'move',\n distance: 10,\n handle: '.sort-handle',\n items: '> tr',\n tolerance: 'pointer',\n forceHelperSize: true,\n forcePlaceholderSize: true,\n helper: function(e, item) {\n var originals = item.children();\n var helper = item.clone();\n helper.children().each(function(i) {\n $(this).width(originals.eq(i).width());\n });\n return helper;\n },\n start: function(e, ui) {\n initialIndex = ui.item.index();\n },\n update: function(e, ui) {\n _.move(data, initialIndex, ui.item.index());\n updateField();\n },\n });\n }\n\n widget\n .on('click', '.js-remove-row', function(e) {\n e.preventDefault();\n removeRow($(this).closest('tr'));\n })\n .on('click', '.js-save-row', function(e) {\n e.preventDefault();\n var row = $(this).closest('tr');\n var item = {};\n var requiredFieldIsEmpty = false;\n var invalidNumber = false;\n if (options.uuidField && row.data('uuid')) {\n item[options.uuidField] = row.data('uuid');\n }\n options.columns.forEach(function(col, i) {\n var inputField = row.find('.js-table-input').eq(i);\n var value = inputField.val().trim();\n if (!value && inputField.data('required')) {\n requiredFieldIsEmpty = true;\n inputField.addClass('hasError');\n } else if (inputField.attr('type') === 'checkbox') {\n item[col.id] = inputField.prop('checked');\n } else {\n item[col.id] = value;\n inputField.removeClass('hasError');\n }\n if (inputField.attr('type') === 'number' && !requiredFieldIsEmpty) {\n value = parseFloat(value);\n if (\n (inputField.attr('min') && value < parseFloat(inputField.attr('min'))) ||\n (inputField.attr('max') && value > parseFloat(inputField.attr('max')))\n ) {\n invalidNumber = true;\n inputField.addClass('hasError');\n inputField.trigger('multipleItemsWidget:showNumberError');\n } else {\n inputField.removeClass('hasError');\n inputField.trigger('multipleItemsWidget:hideNumberError');\n }\n }\n });\n if (requiredFieldIsEmpty) {\n row.trigger('multipleItemsWidget:showRequiredError');\n } else {\n row.trigger('multipleItemsWidget:hideRequiredError');\n }\n if (!requiredFieldIsEmpty && !invalidNumber) {\n if (row.data('hasItem')) {\n data[row.index()] = item;\n } else {\n data.push(item);\n row.data('hasItem', true);\n }\n updateField();\n updateRow(row, false, false);\n }\n })\n .on('click', '.js-add-row', function(e) {\n e.preventDefault();\n createRow();\n })\n .on('click', '.js-cancel-edit', function(e) {\n e.preventDefault();\n var row = $(this).closest('tr');\n if (!row.data('hasItem')) {\n removeRow(row);\n } else {\n updateRow(row, false, false);\n }\n })\n .on('click', '.js-edit-row', function(e) {\n e.preventDefault();\n var row = $(this).closest('tr');\n updateRow(row, true, false);\n })\n .on('keypress', 'input', function(e) {\n if (e.keyCode === 13) {\n e.preventDefault();\n $(this)\n .closest('tr')\n .find('.js-save-row')\n .trigger('click');\n } else if (e.keyCode === 27) {\n e.preventDefault();\n $(this)\n .closest('tr')\n .find('.js-cancel-edit')\n .trigger('click');\n }\n });\n\n function fixWidths() {\n if (!options.sortable) {\n return;\n }\n widget\n .find('tbody > tr > td, tbody > tr, tbody')\n .each(function() {\n // remove the fixed width to allow regular table sizing\n $(this).width('');\n })\n .each(function() {\n // fix the iwdth to avoid ugly changes during sorting\n var $this = $(this);\n $this.width($this.width());\n });\n }\n\n function rowsChanged(moveTooltips) {\n if (options.sortable) {\n widget.find('tbody.ui-sortable').sortable('refresh');\n }\n fixWidths();\n addButton.prop('disabled', !!widget.find('.js-table-input').length);\n if (moveTooltips === undefined || moveTooltips) {\n repositionTooltips();\n }\n }\n\n function makeColData(item, col, forceEditable) {\n if (item && !forceEditable) {\n if (col.type === 'select') {\n return {text: options.columnChoices[col.id][item[col.id]]};\n } else if (col.type === 'checkbox') {\n return {\n html: $('<span>', {\n class: 'icon-checkbox-{0}'.format(item[col.id] ? 'checked' : 'unchecked'),\n }),\n css: {\n 'text-align': 'center',\n },\n };\n } else {\n return {text: item[col.id]};\n }\n } else if (col.type === 'select') {\n var sel = $('<select>', {\n 'class': 'js-table-input',\n 'data-required': col.required,\n });\n sel.append($('<option>')); // Default empty option\n for (var choiceID in options.columnChoices[col.id]) {\n sel.append(\n $('<option>', {\n value: choiceID,\n text: options.columnChoices[col.id][choiceID],\n selected: item ? item[col.id] === choiceID : false,\n })\n );\n }\n return {html: sel};\n } else if (col.type === 'checkbox') {\n return {\n html: $('<input>', {\n type: 'checkbox',\n class: 'js-table-input',\n value: '1',\n checked: item ? item[col.id] : false,\n }),\n };\n } else if (col.type === 'number') {\n var numberInput = $('<input>', {\n 'type': 'number',\n 'class': 'js-table-input',\n 'value': item ? item[col.id] : '',\n 'placeholder': col.caption,\n 'data-required': col.required,\n 'min': col.min,\n 'max': col.max,\n 'step': col.step ? col.step : 'any',\n });\n initNumberErrorMessage(numberInput, col.min, col.max);\n return {html: numberInput};\n } else if (col.type === 'textarea') {\n return {\n html: $('<textarea>', {\n 'class': 'js-table-input multiline',\n 'value': item ? item[col.id] : '',\n 'placeholder': col.caption,\n 'data-required': col.required,\n }),\n };\n } else {\n // Assuming the type is 'text'\n return {\n html: $('<input>', {\n 'type': 'text',\n 'class': 'js-table-input',\n 'value': item ? item[col.id] : '',\n 'placeholder': col.caption,\n 'data-required': col.required,\n }),\n };\n }\n }\n\n function initNumberErrorMessage($element, min, max) {\n $element.qtip({\n style: {\n classes: 'qtip-danger',\n },\n content: {\n text: function() {\n if (min && max) {\n return $T.gettext('Must be between {0} and {1}').format(min, max);\n } else if (min) {\n return $T.gettext('Must be above {0}').format(min);\n } else {\n return $T.gettext('Must be below {0}').format(max);\n }\n },\n },\n show: {\n event: 'multipleItemsWidget:showNumberError',\n },\n hide: {\n event: 'multipleItemsWidget:hideNumberError',\n },\n });\n }\n\n function initRequiredErrorMessage($element) {\n $element.qtip({\n style: {\n classes: 'qtip-danger',\n },\n content: {\n text: $T('Please fill in the required fields.'),\n },\n position: {\n my: 'left middle',\n at: 'right middle',\n adjust: {x: 15},\n },\n show: {\n event: 'multipleItemsWidget:showRequiredError',\n },\n hide: {\n event: 'multipleItemsWidget:hideRequiredError',\n },\n });\n }\n\n function createRow(item) {\n var row = $('<tr>');\n initRequiredErrorMessage(row);\n row.data('hasItem', !!item);\n if (options.uuidField && item) {\n row.data('uuid', item[options.uuidField]);\n }\n if (options.sortable) {\n $('<td>', {class: 'sort-handle'}).appendTo(row);\n }\n options.columns.forEach(function(col) {\n var column = $('<td>', makeColData(item, col));\n if (col.type === 'textarea') {\n column.addClass('multiline');\n }\n column.appendTo(row);\n });\n $('<td>', {\n html: item\n ? deleteButton.clone().add(editButton.clone())\n : cancelButton.clone().add(saveButton.clone()),\n class: 'js-action-col',\n }).appendTo(row);\n widgetBody.append(row);\n rowsChanged();\n }\n\n function updateRow(row, editMode, moveTooltips) {\n row.children('td:not(.sort-handle):not(.js-action-col)').each(function(i) {\n var column = $('<td>', makeColData(data[row.index()], options.columns[i], editMode));\n if (options.columns[i].type === 'textarea') {\n column.addClass('multiline');\n }\n $(this).replaceWith(column);\n });\n if (editMode) {\n row.children('.js-action-col').html(cancelButton.clone().add(saveButton.clone()));\n } else {\n row.children('.js-action-col').html(deleteButton.clone().add(editButton.clone()));\n }\n rowsChanged(moveTooltips);\n }\n\n function removeRow(row) {\n if (row.data('hasItem')) {\n data.splice(row.index(), 1);\n updateField();\n }\n row.remove();\n rowsChanged(false);\n }\n\n function updateField() {\n field.val(JSON.stringify(data)).trigger('change');\n }\n };\n})(window);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n(function(global) {\n 'use strict';\n\n global.setupOverrideMultipleItemsWidget = function setupOverrideMultipleItemsWidget(options) {\n options = $.extend(\n true,\n {\n fieldId: null,\n },\n options\n );\n\n var widget = $('#' + options.fieldId + '-widget');\n var field = $('#' + options.fieldId);\n var data = JSON.parse(field.val());\n\n widget.on('input change', 'input', function() {\n var $this = $(this);\n if (data[$this.data('key')] === undefined) {\n data[$this.data('key')] = {};\n }\n data[$this.data('key')][$this.data('field')] = $this.val();\n updateField();\n });\n\n widget.find('input').each(function() {\n var $this = $(this);\n var rowData = data[$this.data('key')] || {};\n $this.val(rowData[$this.data('field')] || '');\n });\n\n function updateField() {\n field.val(JSON.stringify(data));\n }\n };\n})(window);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n/* eslint-disable import/unambiguous */\n\n(function($, undefined) {\n $.fn.hasCSS = function(propertyName, value) {\n return this.css(propertyName) === value;\n };\n\n $.fn.resettableRadioButtons = function() {\n /*\n * Allows deselecting a radio button by clicking it or its label again.\n * Based on http://stackoverflow.com/a/6246260/298479\n */\n var ns = '.resettable_radio_buttons';\n var labels = this.map(function() {\n var parentLabel = $(this).closest('label');\n if (parentLabel.length) {\n return parentLabel[0];\n } else if (this.id) {\n return $('label[for=\"{0}\"]'.format(this.id))[0];\n }\n }).get();\n return this.add\n .call(this, labels)\n .on('mousedown', function() {\n var $this = $(this);\n var radio = $this.is('label') ? document.getElementById(this.htmlFor) : this;\n if (radio.checked) {\n function _mouseout() {\n $this.off(ns);\n }\n function _mouseup() {\n _.defer(function() {\n radio.checked = false;\n });\n $this.off(ns);\n }\n $this.one('mouseout' + ns, _mouseout);\n $this.one('mouseup' + ns, _mouseup);\n }\n })\n .end();\n };\n\n $.fn.copyURLTooltip = function(url, hideEvent = 'mouseleave') {\n /*\n * Creates a tooltip with a URL in a text input with indication on how\n * to copy it.\n */\n var dialogMessage = $('<div>', {\n class: 'dialog-message',\n }).html($T.gettext('You can copy the URL below using CTRL + C (⌘ + C on OSX):'));\n\n var clipboardDialog = $('<div>', {\n class: 'clipboard-dialog',\n css: {display: 'none'},\n })\n .append(dialogMessage)\n .append(\n $('<input>', {\n type: 'text',\n readonly: true,\n value: url,\n })\n );\n\n return this.qtip({\n content: {\n text: clipboardDialog,\n },\n position: {\n my: 'top center',\n at: 'bottom center',\n },\n hide: {\n event: hideEvent,\n fixed: true,\n delay: 700,\n },\n show: {\n event: false,\n ready: true,\n },\n events: {\n show: function() {\n var tip = $(this);\n _.defer(function() {\n tip\n .find('input:text')\n .focus()\n .select();\n });\n },\n },\n });\n };\n\n $.fn.focusFirstField = function focusTabbable() {\n return this.each(function() {\n var $this = $(this);\n var elem = $this.find('[autofocus]');\n if (!elem.length) {\n elem = $this.find(':input:tabbable');\n }\n if (!elem.length) {\n elem = $this;\n }\n elem.eq(0).focus();\n });\n };\n\n var __gotoToday = $.datepicker._gotoToday;\n\n $.extend($.datepicker, {\n /* Select the current date, don't just show it ### */\n _gotoToday: function(id) {\n var target = $(id);\n if (this._isDisabledDatepicker(target[0])) {\n return;\n }\n\n _.bind(__gotoToday, this)(id);\n\n this._setDateDatepicker(target, new Date());\n this._selectDate(id, this._getDateDatepicker(target));\n },\n });\n\n $.extend($.ui, {\n sticky: function(arg1, arg2) {\n if (arg2 !== undefined) {\n var className = arg1,\n options = arg2;\n } else {\n if (typeof arg1 == 'string') {\n var className = arg1,\n options = {};\n } else {\n var className = null,\n options = arg1;\n }\n }\n\n var scrolling = {};\n\n var visible = function(elem) {\n var eloffset = elem.data('original-offset');\n var windowpos = $(window).scrollTop();\n\n if (!eloffset) {\n eloffset = elem.offset();\n elem.data('original-offset', eloffset);\n }\n\n if (windowpos > eloffset.top) {\n elem.addClass('sticky-scrolling');\n return false;\n } else {\n elem.removeClass('sticky-scrolling');\n return true;\n }\n };\n\n $(window).scroll(function(event) {\n $(className || '.ui-follow-scroll').each(function() {\n var now_scrolling = !visible($(this));\n\n if (scrolling[this] !== now_scrolling) {\n if (now_scrolling === false) {\n options.normal.call(this, event);\n } else {\n options.sticky.call(this, event);\n }\n scrolling[this] = now_scrolling;\n }\n });\n });\n },\n });\n\n // Simple solution for updating containment on resize\n $.widget('indico.reset_resizable', $.ui.resizable, {\n widgetEventPrefix: 'resize',\n _create: function() {\n this.element.data('ui-resizable', this);\n this._super();\n },\n resetContainment: function() {\n var element = this.containerElement,\n p = [];\n\n $(['Top', 'Right', 'Left', 'Bottom']).each(function(i, name) {\n p[i] = parseInt(element.css('padding' + name), 10) || 0;\n });\n\n this.containerSize = {\n height: element.innerHeight() - p[3],\n width: element.innerWidth() - p[1],\n };\n this.parentData.width = this.containerSize.width;\n this.parentData.height = this.containerSize.height;\n },\n });\n\n $.widget('indico.super_draggable', $.ui.draggable, {\n widgetEventPrefix: 'drag',\n _create: function() {\n this.element.data('ui-draggable', this);\n this._super();\n },\n _setContainment: function(newWidth, newHeight) {\n this.helperProportions.width = newWidth || $(this.element).width();\n //this.helperProportions.height = newHeight || $(this.element).height();\n $.ui.draggable.prototype._setContainment.call(this);\n },\n });\n\n // Extension of `droppable` that better handles enabling/disabling droppables while a draggable\n // is on top\n $.widget('indico.super_droppable', $.ui.droppable, {\n widgetEventPrefix: 'drop',\n _create: function() {\n this.element.data('ui-droppable', this);\n this._super();\n },\n disable: function() {\n // \"artificially\" set `isover` to 0, so that if a draggable comes over again we fire `over`\n var data = this.element.data('ui-droppable');\n data.isover = 0;\n data.isout = 1;\n // do as if the draggable was out\n this._out();\n return this._setOption('disabled', true);\n },\n enable: function() {\n return this._setOption('disabled', false);\n },\n });\n\n $.widget('indico.disabledElementWithTooltip', {\n // Default options\n options: {\n disabled: null,\n tooltip: null,\n tooltipClass: 'tooltipError',\n elementClass: 'ui-disabled-element',\n },\n\n _create: function() {\n var self = this;\n if (this.options.disabled === null) {\n this.options.disabled = false;\n }\n // Wrap the element in a span and create an overlay so we can get mouse events for the disabled button\n this.element.addClass(this.options.elementClass).wrap('<span/>');\n var wrapper = this.element.closest('span');\n wrapper.css({\n display: 'inline-block',\n position: 'relative',\n });\n this.overlay = $('<div/>')\n .css({\n position: 'absolute',\n top: 0,\n left: 0,\n height: '100%',\n width: '100%',\n })\n .appendTo(wrapper);\n\n this.overlay.qtip({\n content: {\n text: self.options.tooltip,\n },\n position: {\n target: this.element,\n },\n });\n this._update();\n },\n\n _update: function() {\n this.element.prop('disabled', 'disabled');\n this.overlay.toggle(this.options.disabled);\n },\n\n destroy: function() {\n if (!this.element.hasClass(this.options.elementClass)) {\n return;\n }\n this.overlay.remove();\n this.element.removeClass(this.options.elementClass).unwrap();\n $.Widget.prototype.destroy.apply(this, arguments);\n },\n\n _setOption: function(key, value) {\n if (key == 'disabled') {\n this.options.disabled = value;\n this._update();\n } else {\n $.Widget.prototype._setOption.apply(this, arguments);\n }\n },\n });\n\n //Extract a param from the current url\n $.urlParam = function(name) {\n var results = new RegExp('[\\\\?&]' + name + '=([^&#]*)').exec(window.location.href);\n if (!results) {\n return null;\n }\n return results[1] || null;\n };\n\n // Based on code from http://detectmobilebrowsers.com/\n (function(ua, target) {\n target.mobileBrowser =\n /(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/i.test(\n ua\n ) ||\n /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(\n ua.substr(0, 4)\n );\n })(navigator.userAgent || navigator.vendor || window.opera, $);\n})(jQuery);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n(function($) {\n $.widget('indico.multitextfield', {\n options: {\n fieldsCaption: 'field',\n parameterManager: undefined,\n parameterType: 'text',\n sortable: false,\n valueField: undefined, // A (hidden) field of which the value is a dict of all input fields values\n fieldName: undefined, // String used as a key to an input field value\n },\n\n _create: function() {\n this.info = [];\n this.valueField = this.options.valueField;\n this.fieldName = this.options.fieldName;\n if (this.valueField) {\n this.field = this.valueField;\n this.data = this.field.val() ? JSON.parse(this.field.val()) : [];\n }\n\n this.element.addClass('multi-text-fields');\n this._createList();\n this._handleEvents();\n this._drawList();\n },\n\n destroy: function() {\n this.element.off('focusout click keyup propertychange paste');\n this.element.removeClass('multi-text-fields');\n this.list.remove();\n },\n\n _createList: function() {\n var self = this;\n self.list = $('<ul></ul>');\n self.element.append(self.list);\n\n if (self.options.sortable) {\n self.list.sortable({\n axis: 'y',\n containment: 'parent',\n cursor: 'move',\n distance: 10,\n handle: '.handle',\n items: 'li:not(:last-child)',\n tolerance: 'pointer',\n start: function(e, ui) {\n self.start_index = ui.item.index();\n ui.item.find('input').blur();\n },\n update: function(e, ui) {\n _.move(self.info, self.start_index, ui.item.index());\n if (self.valueField) {\n _.move(self.data, self.start_index, ui.item.index());\n self._updateValueField(self.data);\n }\n },\n });\n }\n },\n\n _handleEvents: function() {\n var self = this;\n\n self.element.on('focusout', 'input', function() {\n self._updateField(this);\n self._drawNewItem();\n });\n\n self.element.on('click', 'a', function(e) {\n e.preventDefault();\n self._deleteItem($(this).closest('li'));\n });\n\n self.element.on('keyup propertychange paste input', 'input', function(e) {\n // Enter\n if (e.type == 'keyup' && e.which == 13) {\n $(this).blur();\n $(this)\n .parent()\n .next()\n .find('input')\n .focus();\n }\n\n if (\n self.valueField &&\n $(this)\n .val()\n .trim()\n ) {\n var oldDataItem =\n self.data[\n $(this)\n .parent()\n .index()\n ];\n self.data[\n $(this)\n .parent()\n .index()\n ] = self._updateDataItem($(this).val(), oldDataItem);\n self._updateValueField(self.data);\n }\n\n if ($(this).val() === '' && !$(this).prop('required')) {\n self._deleteNewItem($(this).closest('li'));\n }\n\n self._drawNewItem();\n });\n\n self.element.on('keydown', 'input', function(e) {\n // ESC\n if (e.which == 27) {\n e.stopPropagation();\n var value = self._getField($(this).data('id')).value;\n $(this).val(value);\n $(this).blur();\n $(this).trigger('propertychange');\n }\n });\n },\n\n _drawList: function() {\n var i = 0;\n var self = this;\n var list = self.list;\n\n self._reinitList();\n\n if (self.valueField) {\n for (i = 0; i < self.data.length; ++i) {\n var obj = {id: i, value: self.data[i][self.fieldName], required: true};\n list.append(self._item(obj));\n self.info[i] = obj;\n }\n } else {\n for (i = 0; i < self.info.length; ++i) {\n list.append(self._item(self.info[i]));\n }\n }\n\n self._drawNewItem();\n },\n\n _reinitList: function() {\n this.next_id = -1;\n this.new_item = undefined;\n\n this.list.find('li').each(function() {\n $(this).remove();\n });\n },\n\n _drawNewItem: function() {\n if (this.new_item === undefined || this.new_item.find('input').val() !== '') {\n this.new_item = this._item(this._addNewFieldInfo());\n this.list.append(this.new_item);\n this.element.scrollTop(this.element[0].scrollHeight);\n this._scrollFix();\n }\n },\n\n _deleteNewItem: function(item) {\n if (item.next()[0] == this.new_item[0]) {\n if (this.valueField) {\n this.data.splice(item.index(), 1);\n this._updateValueField(this.data);\n }\n this._deleteNewFieldInfo();\n this.new_item.remove();\n this.new_item = item;\n this._removeFieldFromPM(item.find('input'));\n this._scrollFix();\n }\n },\n\n _deleteItem: function(item) {\n if (item[0] != this.new_item[0]) {\n if (this.valueField) {\n this.data.splice(item.index(), 1);\n this._updateValueField(this.data);\n }\n var id = item.find('input').data('id');\n var index = this._getFieldIndex(id);\n this.info.splice(index, 1);\n this._removeFieldFromPM(item.find('input'));\n item.remove();\n this._scrollFix();\n }\n },\n\n _addNewFieldInfo: function() {\n var id = this._nextId();\n var field = {id: id, value: ''};\n this.info.push(field);\n return field;\n },\n\n _deleteNewFieldInfo: function() {\n this._prevId();\n this.info.pop();\n },\n\n _getField: function(id) {\n for (var i = 0; i < this.info.length; ++i) {\n if (this.info[i]['id'] == id) {\n return this.info[i];\n }\n }\n\n return undefined;\n },\n\n _getFieldIndex: function(id) {\n for (var i = 0; i < this.info.length; ++i) {\n if (this.info[i]['id'] == id) {\n return i;\n }\n }\n\n return undefined;\n },\n\n _addFieldToPM: function(input) {\n if (this.options.parameterManager !== undefined) {\n var parameterType = this.options.parameterType;\n this.options.parameterManager.remove(input);\n this.options.parameterManager.add(input, parameterType, false);\n }\n },\n\n _removeFieldFromPM: function(input) {\n if (this.options.parameterManager !== undefined) {\n this.options.parameterManager.remove(input);\n }\n },\n\n _item: function(field) {\n field = field || this._addNewFieldInfo();\n\n var id = field['id'];\n var value = field['value'];\n var placeholder = field.required\n ? ''\n : $T.gettext('Type to add {0}').format(this.options.fieldsCaption);\n\n var item = $('<li></li>');\n\n if (this.options.sortable) {\n item.append($(\"<span class='handle'></span>\"));\n }\n\n var newInput = $('<input>', {\n type: 'text',\n required: field.required,\n data: {\n id: id,\n },\n value: value,\n placeholder: placeholder,\n });\n\n this._validateValue(newInput);\n item.append(newInput);\n\n item.append(\n $('<a>', {\n class: 'i-button-remove icon-remove',\n title: $T('Delete'),\n href: '#',\n tabindex: '-1',\n })\n );\n\n item.find('a.i-button-remove').qtip({\n position: {\n at: 'top center',\n my: 'bottom center',\n target: item.find('a'),\n },\n hide: {\n event: 'mouseleave',\n },\n });\n\n return item;\n },\n\n _updateField: function(input) {\n input = $(input);\n if (input.val() === '' && !input.prop('required')) {\n var item = input.closest('li');\n this._deleteItem(item);\n } else {\n this._getField(input.data('id'))['value'] = input.val();\n this._addFieldToPM(input);\n }\n },\n\n _nextId: function() {\n return this.next_id--;\n },\n\n _prevId: function() {\n return this.next_id === 0 ? this.next_id : this.next_id++;\n },\n\n _scrollFix: function() {\n if (this.element[0].clientHeight + 1 < this.element[0].scrollHeight) {\n this.element.find('input').addClass('width-scrolling');\n } else {\n this.element.find('input').removeClass('width-scrolling');\n }\n },\n\n getInfo: function() {\n return this.info.slice().splice(0, this.info.length - 1);\n },\n\n setInfo: function(info) {\n this.info = info;\n this._drawList();\n },\n\n _updateValueField: function(newData) {\n this.field.val(JSON.stringify(newData)).trigger('change');\n this.data = newData;\n },\n\n _updateDataItem: function(value, oldDataItem) {\n if (!oldDataItem) {\n oldDataItem = {};\n }\n oldDataItem[this.fieldName] = value;\n return oldDataItem;\n },\n\n _validateValue: function(field) {\n if ('setCustomValidity' in field[0]) {\n field.on('change input', function() {\n if (!field.val() || field.val().trim()) {\n field[0].setCustomValidity('');\n } else {\n field[0].setCustomValidity($T('Empty values are not allowed.'));\n }\n });\n }\n },\n });\n})(jQuery);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n(function($) {\n 'use strict';\n\n $.widget('indico.nullableselector', {\n options: {\n nullvalue: '__None',\n },\n\n _create: function() {\n var self = this;\n var element = self.element;\n var opt = self.options;\n\n element.toggleClass('no-value', element.val() === opt.nullvalue);\n element.on('change', function() {\n $(this).toggleClass('no-value', $(this).val() === opt.nullvalue);\n });\n },\n });\n})(jQuery);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n(function($) {\n 'use strict';\n\n $.widget('indico.palettepicker', {\n options: {\n availableColors: [],\n onSelect: null,\n numColumns: 5,\n selectedColor: null,\n qtipConstructor: null,\n },\n\n _create: function() {\n var self = this;\n var element = this.element;\n var paletteTable = $('<table>', {class: 'palette-picker'});\n var availableColors = this.options.availableColors;\n var tr = this._createTableRow();\n\n self._paletteTable = paletteTable;\n\n $.each(availableColors, function(index, color) {\n var td = $('<td>', {\n class: 'palette-color',\n data: {color: color},\n });\n\n var colorBox = $('<div>', {\n css: {background: '#' + color.background},\n class: 'background-box',\n });\n\n colorBox.append(\n $('<div>', {\n css: {background: '#' + color.text},\n class: 'text-box',\n })\n );\n\n td.append(colorBox);\n tr.append(td);\n\n if ((index + 1) % self.options.numColumns === 0) {\n paletteTable.append(tr);\n tr = self._createTableRow();\n }\n });\n\n if (tr.children().length) {\n paletteTable.append(tr);\n }\n\n paletteTable.on('click', '.palette-color', function() {\n var $this = $(this);\n var color = $this.data('color');\n var backgroundColor = '#' + color.background;\n var textColor = '#' + color.text;\n var styleObject = element[0].style;\n\n self.options.selectedColor = color;\n self._updateSelection();\n\n styleObject.setProperty('color', textColor, 'important');\n styleObject.setProperty('background', backgroundColor, 'important');\n\n if (self.options.onSelect) {\n self.options.onSelect.call(element, backgroundColor, textColor);\n }\n\n element.qtip('hide');\n });\n\n var qtipOptions = {\n prerender: false,\n overwrite: false,\n suppress: false,\n style: {\n classes: 'palette-picker-qtip',\n },\n position: {\n my: 'top center',\n at: 'bottom center',\n target: element,\n adjust: {\n mouse: false,\n scroll: false,\n },\n },\n content: {\n text: paletteTable,\n },\n show: {\n event: 'click',\n solo: true,\n },\n hide: {\n event: 'unfocus',\n },\n events: {\n show: self._updateSelection.bind(self),\n },\n };\n if (self.options.qtipConstructor) {\n self.options.qtipConstructor(element, qtipOptions);\n } else {\n element.qtip(qtipOptions);\n }\n },\n\n _createTableRow: function() {\n return $('<tr>', {height: 13});\n },\n\n _updateSelection: function() {\n var selectedColor = this.options.selectedColor;\n this._paletteTable.find('.palette-color').each(function() {\n var $this = $(this);\n var color = $this.data('color');\n if (\n selectedColor !== null &&\n color.background === selectedColor.background &&\n color.text === selectedColor.text\n ) {\n $this.addClass('selected');\n } else {\n $this.removeClass('selected');\n }\n });\n },\n });\n})(jQuery);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n(function($) {\n 'use strict';\n\n $.widget('indico.paperemailsettingswidget', {\n options: {\n containerElement: null,\n multipleRecipientOptions: [\n 'notify_on_added_to_event',\n 'notify_on_assigned_contrib',\n 'notify_on_paper_submission',\n ],\n singleRecipientOptions: ['notify_judge_on_review', 'notify_author_on_judgment'],\n },\n\n _initCheckboxes: function(data) {\n var self = this;\n var elementID = self.element.prop('id');\n var multipleRecipientOptions = self.options.multipleRecipientOptions;\n var singleRecipientOptions = self.options.singleRecipientOptions;\n\n multipleRecipientOptions.forEach(function(condition) {\n data[condition].forEach(function(role) {\n $('#{0}-{1}-{2}'.format(elementID, condition, role)).prop('checked', true);\n });\n });\n singleRecipientOptions.forEach(function(condition) {\n $('#{0}-{1}'.format(elementID, condition)).prop('checked', data[condition]);\n });\n },\n\n _create: function() {\n var self = this;\n var element = self.element;\n var $container = self.options.containerElement;\n var hiddenData = element.val() ? JSON.parse(element.val()) : {};\n\n self._initCheckboxes(hiddenData);\n\n $container.find('.multiple-recipients input').on('change', function() {\n var setting = hiddenData[this.name];\n if (this.checked) {\n setting.push(this.value);\n } else {\n setting.splice(setting.indexOf(this.value), 1);\n }\n element.val(JSON.stringify(hiddenData));\n });\n\n $container.find('.single-recipient input').on('change', function() {\n hiddenData[this.name] = this.checked;\n element.val(JSON.stringify(hiddenData));\n });\n },\n });\n})(jQuery);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n(function($) {\n $.widget('indico.qbubble', {\n defaultQtipOptions: {\n overwrite: true,\n suppress: false,\n position: {\n my: 'top center',\n at: 'bottom center',\n adjust: {\n mouse: false,\n scroll: false,\n },\n },\n show: {\n event: 'click',\n solo: true,\n },\n hide: {\n event: 'unfocus click',\n },\n },\n\n _create: function() {\n var self = this;\n var classes = self.options.style ? self.options.style.classes : '';\n\n self.element.qtip(\n $.extend(true, {}, self.defaultQtipOptions, self.options, {\n style: {classes: 'qbubble ' + classes},\n })\n );\n\n this._on({\n click: function(evt) {\n evt.preventDefault();\n },\n });\n },\n\n api: function() {\n var self = this;\n return self.element.qtip('api');\n },\n\n destroy: function() {\n var self = this;\n self.element.qtip('destroy');\n },\n\n hide: function() {\n var self = this;\n self.element.qtip('hide');\n },\n\n option: function(entry, value) {\n var self = this;\n self.element.qtip('option', entry, value);\n },\n\n createNested: function(elem, nestedQtipOptions) {\n var self = this;\n var originalHideCallback = nestedQtipOptions.events && nestedQtipOptions.events.hide;\n var originalShowCallback = nestedQtipOptions.events && nestedQtipOptions.events.show;\n $.extend(true, nestedQtipOptions, {\n events: {\n show: function(evt, api) {\n if (originalShowCallback) {\n originalShowCallback(evt, api);\n }\n if (!evt.defaultPrevented) {\n self._hasNestedOpen = true;\n self.element.qtip('disable');\n }\n },\n hide: function(evt, api) {\n if (originalHideCallback) {\n originalHideCallback(evt, api);\n }\n if (!evt.defaultPrevented) {\n self._hasNestedOpen = false;\n self.element.qtip('enable');\n }\n },\n },\n });\n elem.qbubble(nestedQtipOptions);\n },\n });\n})(jQuery);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n(function($) {\n function _listValue(option) {\n if (option === '') {\n return [];\n } else {\n var parsedValue = parseInt(option, 10);\n return [isNaN(parsedValue) ? option : parsedValue];\n }\n }\n\n function _optionValue(option) {\n if (option.length === 0) {\n return '';\n } else {\n return option[0];\n }\n }\n\n function _findConditionByName(ruleContext, conditionName) {\n return ruleContext.$element.find('.rule-condition').filter(function() {\n return $(this).attr('data-condition') === conditionName;\n });\n }\n\n $.widget('indico.rulelistwidget', {\n options: {\n containerElement: null, // the actual widget containing element\n conditionChoices: {}, // specification of all possible condition values\n conditionTypes: [], // condition types, in order\n },\n\n _renderRuleCondition: function(ruleContext, condition) {\n var self = this;\n\n var $select = $('<select>')\n .append(\n _.map(condition.options, function(elem) {\n var optionTitle = elem[1];\n var id = elem[0];\n return $('<option>', {\n value: id,\n }).text(optionTitle);\n })\n )\n .on('change', function() {\n self._optionSelected(ruleContext, condition, $(this).val());\n self.element.trigger('change');\n });\n\n if (condition.required) {\n var $opt = $('<option>', {\n value: '',\n text: $T.gettext('Select an option'),\n });\n $select.prepend($opt).val('');\n $opt.prop('disabled', true);\n }\n\n var $html = $('<div>', {\n class: 'rule-condition',\n }).attr('data-condition', condition.value);\n\n if (condition.labelText) {\n $html.append($('<label>').text(condition.labelText));\n }\n return $html.append($select);\n },\n\n _optionSelected: function(ruleContext, condition, newOption) {\n ruleContext.rule[condition.value] = _listValue(newOption);\n this._checkConditionIncompatibility(ruleContext);\n this.element.trigger('change');\n },\n\n _onChange: function() {\n // Simplify rule data by removing \"field: any\"\n this.ruleData.forEach(function(rule) {\n _.keys(rule).forEach(function(k) {\n if (_.isEqual(rule[k], ['*'])) {\n delete rule[k];\n }\n });\n });\n\n this.element.val(JSON.stringify(this.ruleData));\n },\n\n _checkConditionIncompatibility: function(ruleContext) {\n ruleContext.$element.find('.rule-condition').show();\n\n this.conditionSpec.forEach(function(condition) {\n var $condition = _findConditionByName(ruleContext, condition.value);\n var newOption = $condition.find('select').val();\n\n if (condition.compatibleWith) {\n var compatibleConditions = condition.compatibleWith[newOption];\n ruleContext.$element.find('.rule-condition').each(function() {\n var $this = $(this);\n var conditionName = $this.data('condition');\n if (this === $condition.get(0)) {\n return;\n }\n if (_.contains(compatibleConditions, conditionName)) {\n $this.show();\n } else {\n $this.hide();\n delete ruleContext.rule[conditionName];\n }\n });\n }\n });\n },\n\n _setConditionOption: function(ruleContext, conditionName, value) {\n var $condition = _findConditionByName(ruleContext, conditionName);\n var $select = $condition.find('select');\n var isRequired = this.options.conditionChoices[conditionName].required;\n\n if (!isRequired && value === undefined) {\n // if the condition is not required, we can set a default (normally 'any')\n value = this.options.conditionChoices[conditionName].options[0][0];\n }\n\n if (value !== undefined) {\n $select.val(_optionValue(value));\n }\n },\n\n _checkPlaceholder: function() {\n var $placeholder = this.options.containerElement.find('.no-rules-placeholder');\n $placeholder.toggle(!this.ruleData.length);\n },\n\n _addRule: function($ruleList, rule) {\n var self = this;\n var ruleContext = {\n $element: $('<li>', {class: 'rule'}),\n rule: rule,\n };\n var $removeButton = $('<a>', {class: 'i-link icon-remove rule-remove-button'});\n\n ruleContext.$element\n .append(\n _.map(this.conditionSpec, function(condition) {\n return self._renderRuleCondition(ruleContext, condition);\n }),\n $removeButton\n )\n .appendTo($ruleList);\n\n ruleContext.$element.data('ruleContext', ruleContext);\n\n this.conditionSpec.forEach(function(condition) {\n self._setConditionOption(ruleContext, condition.value, rule[condition.value]);\n });\n this._checkConditionIncompatibility(ruleContext);\n this._checkPlaceholder();\n this.element.trigger('change');\n },\n\n _removeRule: function($elem) {\n var rule = $elem.data('ruleContext').rule;\n this.ruleData = _.without(this.ruleData, _.find(this.ruleData, _.partial(_.isEqual, rule)));\n $elem.remove();\n this._checkPlaceholder();\n this.element.trigger('change');\n },\n\n _addNewRule: function($ruleList) {\n var newRule = {};\n this.ruleData.push(newRule);\n this._addRule($ruleList, newRule);\n },\n\n _create: function() {\n var self = this;\n var $container = this.options.containerElement;\n var $addNewRuleButton = $container.find('.js-add-new-rule');\n var $ruleList = this.options.containerElement.find('.rule-list');\n\n this.ruleData = JSON.parse(this.element.val());\n\n this.conditionSpec = _.map(this.options.conditionTypes, function(type) {\n var item = self.options.conditionChoices[type];\n item['value'] = type;\n return item;\n });\n\n $addNewRuleButton.on('click', function(e) {\n self._addNewRule($ruleList);\n e.preventDefault();\n });\n\n $container.on('click', '.rule-remove-button', function() {\n var $elem = $(this).closest('.rule');\n self._removeRule($elem);\n });\n\n // Initialize widget using rule data from field\n this.ruleData.forEach(function(rule) {\n self._addRule($ruleList, rule);\n });\n\n this.element.on('change', this._onChange.bind(this));\n },\n });\n})(jQuery);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n(function($) {\n $.widget('indico.scrollblocker', {\n options: {\n overflowType: 'scroll',\n },\n\n _create: function() {\n var element = this.element;\n var options = this.options;\n\n $('body').on('mousewheel wheel', function(e) {\n var blocker = $(e.target)\n .parentsUntil(element.parent())\n .filter(function() {\n return $(this).hasCSS('overflow-y', options.overflowType);\n });\n\n if (blocker.length > 0) {\n var wheelup = (e.originalEvent.wheelDelta || -e.originalEvent.deltaY) / 120 > 0;\n\n if (blocker.scrollTop() === 0 && wheelup) {\n return false;\n }\n\n if (\n blocker.scrollTop() + 1 >= blocker.prop('scrollHeight') - blocker.outerHeight() &&\n !wheelup\n ) {\n return false;\n }\n }\n\n return true;\n });\n },\n });\n})(jQuery);\n","// This file is part of Indico.\n// Copyright (C) 2002 - 2024 CERN\n//\n// Indico is free software; you can redistribute it and/or\n// modify it under the terms of the MIT License; see the\n// LICENSE file for more details.\n\n(function($, global) {\n 'use strict';\n\n $.fn.stickyTooltip = function(category, content) {\n return this.qtip({\n content: {\n text: content,\n },\n position: {\n my: 'left middle',\n at: 'middle right',\n },\n hide: {\n event: 'click unfocus',\n },\n style: {\n classes: 'qtip-' + category,\n },\n show: {\n when: false,\n ready: true,\n },\n });\n };\n\n global.repositionTooltips = function repositionTooltips() {\n $('.qtip').qtip('reposition');\n };\n})(jQuery, window);\n","/*!\n * clipboard.js v2.0.11\n * https://clipboardjs.com/\n *\n * Licensed MIT © Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 686:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"default\": function() { return /* binding */ clipboard; }\n});\n\n// EXTERNAL MODULE: ./node_modules/tiny-emitter/index.js\nvar tiny_emitter = __webpack_require__(279);\nvar tiny_emitter_default = /*#__PURE__*/__webpack_require__.n(tiny_emitter);\n// EXTERNAL MODULE: ./node_modules/good-listener/src/listen.js\nvar listen = __webpack_require__(370);\nvar listen_default = /*#__PURE__*/__webpack_require__.n(listen);\n// EXTERNAL MODULE: ./node_modules/select/src/select.js\nvar src_select = __webpack_require__(817);\nvar select_default = /*#__PURE__*/__webpack_require__.n(src_select);\n;// CONCATENATED MODULE: ./src/common/command.js\n/**\n * Executes a given operation type.\n * @param {String} type\n * @return {Boolean}\n */\nfunction command(type) {\n try {\n return document.execCommand(type);\n } catch (err) {\n return false;\n }\n}\n;// CONCATENATED MODULE: ./src/actions/cut.js\n\n\n/**\n * Cut action wrapper.\n * @param {String|HTMLElement} target\n * @return {String}\n */\n\nvar ClipboardActionCut = function ClipboardActionCut(target) {\n var selectedText = select_default()(target);\n command('cut');\n return selectedText;\n};\n\n/* harmony default export */ var actions_cut = (ClipboardActionCut);\n;// CONCATENATED MODULE: ./src/common/create-fake-element.js\n/**\n * Creates a fake textarea element with a value.\n * @param {String} value\n * @return {HTMLElement}\n */\nfunction createFakeElement(value) {\n var isRTL = document.documentElement.getAttribute('dir') === 'rtl';\n var fakeElement = document.createElement('textarea'); // Prevent zooming on iOS\n\n fakeElement.style.fontSize = '12pt'; // Reset box model\n\n fakeElement.style.border = '0';\n fakeElement.style.padding = '0';\n fakeElement.style.margin = '0'; // Move element out of screen horizontally\n\n fakeElement.style.position = 'absolute';\n fakeElement.style[isRTL ? 'right' : 'left'] = '-9999px'; // Move element to the same position vertically\n\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n fakeElement.style.top = \"\".concat(yPosition, \"px\");\n fakeElement.setAttribute('readonly', '');\n fakeElement.value = value;\n return fakeElement;\n}\n;// CONCATENATED MODULE: ./src/actions/copy.js\n\n\n\n/**\n * Create fake copy action wrapper using a fake element.\n * @param {String} target\n * @param {Object} options\n * @return {String}\n */\n\nvar fakeCopyAction = function fakeCopyAction(value, options) {\n var fakeElement = createFakeElement(value);\n options.container.appendChild(fakeElement);\n var selectedText = select_default()(fakeElement);\n command('copy');\n fakeElement.remove();\n return selectedText;\n};\n/**\n * Copy action wrapper.\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @return {String}\n */\n\n\nvar ClipboardActionCopy = function ClipboardActionCopy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n var selectedText = '';\n\n if (typeof target === 'string') {\n selectedText = fakeCopyAction(target, options);\n } else if (target instanceof HTMLInputElement && !['text', 'search', 'url', 'tel', 'password'].includes(target === null || target === void 0 ? void 0 : target.type)) {\n // If input type doesn't support `setSelectionRange`. Simulate it. https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n selectedText = fakeCopyAction(target.value, options);\n } else {\n selectedText = select_default()(target);\n command('copy');\n }\n\n return selectedText;\n};\n\n/* harmony default export */ var actions_copy = (ClipboardActionCopy);\n;// CONCATENATED MODULE: ./src/actions/default.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n/**\n * Inner function which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n * @param {Object} options\n */\n\nvar ClipboardActionDefault = function ClipboardActionDefault() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // Defines base properties passed from constructor.\n var _options$action = options.action,\n action = _options$action === void 0 ? 'copy' : _options$action,\n container = options.container,\n target = options.target,\n text = options.text; // Sets the `action` to be performed which can be either 'copy' or 'cut'.\n\n if (action !== 'copy' && action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n } // Sets the `target` property using an element that will be have its content copied.\n\n\n if (target !== undefined) {\n if (target && _typeof(target) === 'object' && target.nodeType === 1) {\n if (action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n } // Define selection strategy based on `text` property.\n\n\n if (text) {\n return actions_copy(text, {\n container: container\n });\n } // Defines which selection strategy based on `target` property.\n\n\n if (target) {\n return action === 'cut' ? actions_cut(target) : actions_copy(target, {\n container: container\n });\n }\n};\n\n/* harmony default export */ var actions_default = (ClipboardActionDefault);\n;// CONCATENATED MODULE: ./src/clipboard.js\nfunction clipboard_typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { clipboard_typeof = function _typeof(obj) { return typeof obj; }; } else { clipboard_typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return clipboard_typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (clipboard_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\n\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\nfunction getAttributeValue(suffix, element) {\n var attribute = \"data-clipboard-\".concat(suffix);\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n}\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\n\n\nvar Clipboard = /*#__PURE__*/function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n var _super = _createSuper(Clipboard);\n\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n function Clipboard(trigger, options) {\n var _this;\n\n _classCallCheck(this, Clipboard);\n\n _this = _super.call(this);\n\n _this.resolveOptions(options);\n\n _this.listenClick(trigger);\n\n return _this;\n }\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n _createClass(Clipboard, [{\n key: \"resolveOptions\",\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = clipboard_typeof(options.container) === 'object' ? options.container : document.body;\n }\n /**\n * Adds a click event listener to the passed trigger.\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n */\n\n }, {\n key: \"listenClick\",\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = listen_default()(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n /**\n * Defines a new `ClipboardAction` on each click event.\n * @param {Event} e\n */\n\n }, {\n key: \"onClick\",\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n var action = this.action(trigger) || 'copy';\n var text = actions_default({\n action: action,\n container: this.container,\n target: this.target(trigger),\n text: this.text(trigger)\n }); // Fires an event based on the copy operation result.\n\n this.emit(text ? 'success' : 'error', {\n action: action,\n text: text,\n trigger: trigger,\n clearSelection: function clearSelection() {\n if (trigger) {\n trigger.focus();\n }\n\n window.getSelection().removeAllRanges();\n }\n });\n }\n /**\n * Default `action` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultAction\",\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n /**\n * Default `target` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: \"defaultTarget\",\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n /**\n * Allow fire programmatically a copy action\n * @param {String|HTMLElement} target\n * @param {Object} options\n * @returns Text copied.\n */\n\n }, {\n key: \"defaultText\",\n\n /**\n * Default `text` lookup function.\n * @param {Element} trigger\n */\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n /**\n * Destroy lifecycle.\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.listener.destroy();\n }\n }], [{\n key: \"copy\",\n value: function copy(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n container: document.body\n };\n return actions_copy(target, options);\n }\n /**\n * Allow fire programmatically a cut action\n * @param {String|HTMLElement} target\n * @returns Text cutted.\n */\n\n }, {\n key: \"cut\",\n value: function cut(target) {\n return actions_cut(target);\n }\n /**\n * Returns the support of the given action, or all actions if no action is\n * given.\n * @param {String} [action]\n */\n\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n return support;\n }\n }]);\n\n return Clipboard;\n}((tiny_emitter_default()));\n\n/* harmony default export */ var clipboard = (Clipboard);\n\n/***/ }),\n\n/***/ 828:\n/***/ (function(module) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n\n\n/***/ }),\n\n/***/ 438:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar closest = __webpack_require__(828);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n\n/***/ 879:\n/***/ (function(__unused_webpack_module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n && ('length' in value)\n && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n\n\n/***/ }),\n\n/***/ 370:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar is = __webpack_require__(879);\nvar delegate = __webpack_require__(438);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n\n/***/ 817:\n/***/ (function(module) {\n\nfunction select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n\n selectedText = element.value;\n }\n else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n }\n else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n\n/***/ 279:\n/***/ (function(module) {\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\nmodule.exports.TinyEmitter = E;\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/************************************************************************/\n/******/ \t// module exports must be returned from runtime so entry inlining is disabled\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(686);\n/******/ })()\n.default;\n});","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 3099:\n/***/ (function(module) {\n\nmodule.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n\n\n/***/ }),\n\n/***/ 6077:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(111);\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n\n\n/***/ }),\n\n/***/ 1223:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(5112);\nvar create = __webpack_require__(30);\nvar definePropertyModule = __webpack_require__(3070);\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n\n\n/***/ }),\n\n/***/ 1530:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar charAt = __webpack_require__(8710).charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n\n\n/***/ }),\n\n/***/ 5787:\n/***/ (function(module) {\n\nmodule.exports = function (it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n } return it;\n};\n\n\n/***/ }),\n\n/***/ 9670:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(111);\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n\n\n/***/ }),\n\n/***/ 4019:\n/***/ (function(module) {\n\nmodule.exports = typeof ArrayBuffer !== 'undefined' && typeof DataView !== 'undefined';\n\n\n/***/ }),\n\n/***/ 260:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar NATIVE_ARRAY_BUFFER = __webpack_require__(4019);\nvar DESCRIPTORS = __webpack_require__(9781);\nvar global = __webpack_require__(7854);\nvar isObject = __webpack_require__(111);\nvar has = __webpack_require__(6656);\nvar classof = __webpack_require__(648);\nvar createNonEnumerableProperty = __webpack_require__(8880);\nvar redefine = __webpack_require__(1320);\nvar defineProperty = __webpack_require__(3070).f;\nvar getPrototypeOf = __webpack_require__(9518);\nvar setPrototypeOf = __webpack_require__(7674);\nvar wellKnownSymbol = __webpack_require__(5112);\nvar uid = __webpack_require__(9711);\n\nvar Int8Array = global.Int8Array;\nvar Int8ArrayPrototype = Int8Array && Int8Array.prototype;\nvar Uint8ClampedArray = global.Uint8ClampedArray;\nvar Uint8ClampedArrayPrototype = Uint8ClampedArray && Uint8ClampedArray.prototype;\nvar TypedArray = Int8Array && getPrototypeOf(Int8Array);\nvar TypedArrayPrototype = Int8ArrayPrototype && getPrototypeOf(Int8ArrayPrototype);\nvar ObjectPrototype = Object.prototype;\nvar isPrototypeOf = ObjectPrototype.isPrototypeOf;\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');\n// Fixing native typed arrays in Opera Presto crashes the browser, see #595\nvar NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';\nvar TYPED_ARRAY_TAG_REQIRED = false;\nvar NAME;\n\nvar TypedArrayConstructorsList = {\n Int8Array: 1,\n Uint8Array: 1,\n Uint8ClampedArray: 1,\n Int16Array: 2,\n Uint16Array: 2,\n Int32Array: 4,\n Uint32Array: 4,\n Float32Array: 4,\n Float64Array: 8\n};\n\nvar BigIntArrayConstructorsList = {\n BigInt64Array: 8,\n BigUint64Array: 8\n};\n\nvar isView = function isView(it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return klass === 'DataView'\n || has(TypedArrayConstructorsList, klass)\n || has(BigIntArrayConstructorsList, klass);\n};\n\nvar isTypedArray = function (it) {\n if (!isObject(it)) return false;\n var klass = classof(it);\n return has(TypedArrayConstructorsList, klass)\n || has(BigIntArrayConstructorsList, klass);\n};\n\nvar aTypedArray = function (it) {\n if (isTypedArray(it)) return it;\n throw TypeError('Target is not a typed array');\n};\n\nvar aTypedArrayConstructor = function (C) {\n if (setPrototypeOf) {\n if (isPrototypeOf.call(TypedArray, C)) return C;\n } else for (var ARRAY in TypedArrayConstructorsList) if (has(TypedArrayConstructorsList, NAME)) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (C === TypedArrayConstructor || isPrototypeOf.call(TypedArrayConstructor, C))) {\n return C;\n }\n } throw TypeError('Target is not a typed array constructor');\n};\n\nvar exportTypedArrayMethod = function (KEY, property, forced) {\n if (!DESCRIPTORS) return;\n if (forced) for (var ARRAY in TypedArrayConstructorsList) {\n var TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor.prototype, KEY)) {\n delete TypedArrayConstructor.prototype[KEY];\n }\n }\n if (!TypedArrayPrototype[KEY] || forced) {\n redefine(TypedArrayPrototype, KEY, forced ? property\n : NATIVE_ARRAY_BUFFER_VIEWS && Int8ArrayPrototype[KEY] || property);\n }\n};\n\nvar exportTypedArrayStaticMethod = function (KEY, property, forced) {\n var ARRAY, TypedArrayConstructor;\n if (!DESCRIPTORS) return;\n if (setPrototypeOf) {\n if (forced) for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && has(TypedArrayConstructor, KEY)) {\n delete TypedArrayConstructor[KEY];\n }\n }\n if (!TypedArray[KEY] || forced) {\n // V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable\n try {\n return redefine(TypedArray, KEY, forced ? property : NATIVE_ARRAY_BUFFER_VIEWS && Int8Array[KEY] || property);\n } catch (error) { /* empty */ }\n } else return;\n }\n for (ARRAY in TypedArrayConstructorsList) {\n TypedArrayConstructor = global[ARRAY];\n if (TypedArrayConstructor && (!TypedArrayConstructor[KEY] || forced)) {\n redefine(TypedArrayConstructor, KEY, property);\n }\n }\n};\n\nfor (NAME in TypedArrayConstructorsList) {\n if (!global[NAME]) NATIVE_ARRAY_BUFFER_VIEWS = false;\n}\n\n// WebKit bug - typed arrays constructors prototype is Object.prototype\nif (!NATIVE_ARRAY_BUFFER_VIEWS || typeof TypedArray != 'function' || TypedArray === Function.prototype) {\n // eslint-disable-next-line no-shadow -- safe\n TypedArray = function TypedArray() {\n throw TypeError('Incorrect invocation');\n };\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME], TypedArray);\n }\n}\n\nif (!NATIVE_ARRAY_BUFFER_VIEWS || !TypedArrayPrototype || TypedArrayPrototype === ObjectPrototype) {\n TypedArrayPrototype = TypedArray.prototype;\n if (NATIVE_ARRAY_BUFFER_VIEWS) for (NAME in TypedArrayConstructorsList) {\n if (global[NAME]) setPrototypeOf(global[NAME].prototype, TypedArrayPrototype);\n }\n}\n\n// WebKit bug - one more object in Uint8ClampedArray prototype chain\nif (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !== TypedArrayPrototype) {\n setPrototypeOf(Uint8ClampedArrayPrototype, TypedArrayPrototype);\n}\n\nif (DESCRIPTORS && !has(TypedArrayPrototype, TO_STRING_TAG)) {\n TYPED_ARRAY_TAG_REQIRED = true;\n defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {\n return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;\n } });\n for (NAME in TypedArrayConstructorsList) if (global[NAME]) {\n createNonEnumerableProperty(global[NAME], TYPED_ARRAY_TAG, NAME);\n }\n}\n\nmodule.exports = {\n NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,\n TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,\n aTypedArray: aTypedArray,\n aTypedArrayConstructor: aTypedArrayConstructor,\n exportTypedArrayMethod: exportTypedArrayMethod,\n exportTypedArrayStaticMethod: exportTypedArrayStaticMethod,\n isView: isView,\n isTypedArray: isTypedArray,\n TypedArray: TypedArray,\n TypedArrayPrototype: TypedArrayPrototype\n};\n\n\n/***/ }),\n\n/***/ 3331:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(7854);\nvar DESCRIPTORS = __webpack_require__(9781);\nvar NATIVE_ARRAY_BUFFER = __webpack_require__(4019);\nvar createNonEnumerableProperty = __webpack_require__(8880);\nvar redefineAll = __webpack_require__(2248);\nvar fails = __webpack_require__(7293);\nvar anInstance = __webpack_require__(5787);\nvar toInteger = __webpack_require__(9958);\nvar toLength = __webpack_require__(7466);\nvar toIndex = __webpack_require__(7067);\nvar IEEE754 = __webpack_require__(1179);\nvar getPrototypeOf = __webpack_require__(9518);\nvar setPrototypeOf = __webpack_require__(7674);\nvar getOwnPropertyNames = __webpack_require__(8006).f;\nvar defineProperty = __webpack_require__(3070).f;\nvar arrayFill = __webpack_require__(1285);\nvar setToStringTag = __webpack_require__(8003);\nvar InternalStateModule = __webpack_require__(9909);\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length';\nvar WRONG_INDEX = 'Wrong index';\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\nvar $ArrayBuffer = NativeArrayBuffer;\nvar $DataView = global[DATA_VIEW];\nvar $DataViewPrototype = $DataView && $DataView[PROTOTYPE];\nvar ObjectPrototype = Object.prototype;\nvar RangeError = global.RangeError;\n\nvar packIEEE754 = IEEE754.pack;\nvar unpackIEEE754 = IEEE754.unpack;\n\nvar packInt8 = function (number) {\n return [number & 0xFF];\n};\n\nvar packInt16 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF];\n};\n\nvar packInt32 = function (number) {\n return [number & 0xFF, number >> 8 & 0xFF, number >> 16 & 0xFF, number >> 24 & 0xFF];\n};\n\nvar unpackInt32 = function (buffer) {\n return buffer[3] << 24 | buffer[2] << 16 | buffer[1] << 8 | buffer[0];\n};\n\nvar packFloat32 = function (number) {\n return packIEEE754(number, 23, 4);\n};\n\nvar packFloat64 = function (number) {\n return packIEEE754(number, 52, 8);\n};\n\nvar addGetter = function (Constructor, key) {\n defineProperty(Constructor[PROTOTYPE], key, { get: function () { return getInternalState(this)[key]; } });\n};\n\nvar get = function (view, count, index, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = bytes.slice(start, start + count);\n return isLittleEndian ? pack : pack.reverse();\n};\n\nvar set = function (view, count, index, conversion, value, isLittleEndian) {\n var intIndex = toIndex(index);\n var store = getInternalState(view);\n if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);\n var bytes = getInternalState(store.buffer).bytes;\n var start = intIndex + store.byteOffset;\n var pack = conversion(+value);\n for (var i = 0; i < count; i++) bytes[start + i] = pack[isLittleEndian ? i : count - i - 1];\n};\n\nif (!NATIVE_ARRAY_BUFFER) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n setInternalState(this, {\n bytes: arrayFill.call(new Array(byteLength), 0),\n byteLength: byteLength\n });\n if (!DESCRIPTORS) this.byteLength = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = getInternalState(buffer).byteLength;\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n setInternalState(this, {\n buffer: buffer,\n byteLength: byteLength,\n byteOffset: offset\n });\n if (!DESCRIPTORS) {\n this.buffer = buffer;\n this.byteLength = byteLength;\n this.byteOffset = offset;\n }\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, 'byteLength');\n addGetter($DataView, 'buffer');\n addGetter($DataView, 'byteLength');\n addGetter($DataView, 'byteOffset');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments.length > 1 ? arguments[1] : undefined);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackInt32(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined)) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 23);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments.length > 1 ? arguments[1] : undefined), 52);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packInt8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packInt16, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packInt32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packFloat32, value, arguments.length > 2 ? arguments[2] : undefined);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packFloat64, value, arguments.length > 2 ? arguments[2] : undefined);\n }\n });\n} else {\n /* eslint-disable no-new -- required for testing */\n if (!fails(function () {\n NativeArrayBuffer(1);\n }) || !fails(function () {\n new NativeArrayBuffer(-1);\n }) || fails(function () {\n new NativeArrayBuffer();\n new NativeArrayBuffer(1.5);\n new NativeArrayBuffer(NaN);\n return NativeArrayBuffer.name != ARRAY_BUFFER;\n })) {\n /* eslint-enable no-new -- required for testing */\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new NativeArrayBuffer(toIndex(length));\n };\n var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE];\n for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) {\n createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);\n }\n }\n ArrayBufferPrototype.constructor = $ArrayBuffer;\n }\n\n // WebKit bug - the same parent prototype for typed arrays and data view\n if (setPrototypeOf && getPrototypeOf($DataViewPrototype) !== ObjectPrototype) {\n setPrototypeOf($DataViewPrototype, ObjectPrototype);\n }\n\n // iOS Safari 7.x bug\n var testView = new $DataView(new $ArrayBuffer(2));\n var nativeSetInt8 = $DataViewPrototype.setInt8;\n testView.setInt8(0, 2147483648);\n testView.setInt8(1, 2147483649);\n if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataViewPrototype, {\n setInt8: function setInt8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n nativeSetInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, { unsafe: true });\n}\n\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\n\nmodule.exports = {\n ArrayBuffer: $ArrayBuffer,\n DataView: $DataView\n};\n\n\n/***/ }),\n\n/***/ 1048:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toObject = __webpack_require__(7908);\nvar toAbsoluteIndex = __webpack_require__(1400);\nvar toLength = __webpack_require__(7466);\n\nvar min = Math.min;\n\n// `Array.prototype.copyWithin` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.copywithin\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n\n\n/***/ }),\n\n/***/ 1285:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toObject = __webpack_require__(7908);\nvar toAbsoluteIndex = __webpack_require__(1400);\nvar toLength = __webpack_require__(7466);\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n\n\n/***/ }),\n\n/***/ 8533:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $forEach = __webpack_require__(2092).forEach;\nvar arrayMethodIsStrict = __webpack_require__(9341);\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n\n\n/***/ }),\n\n/***/ 8457:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar bind = __webpack_require__(9974);\nvar toObject = __webpack_require__(7908);\nvar callWithSafeIterationClosing = __webpack_require__(3411);\nvar isArrayIteratorMethod = __webpack_require__(7659);\nvar toLength = __webpack_require__(7466);\nvar createProperty = __webpack_require__(6135);\nvar getIteratorMethod = __webpack_require__(1246);\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n\n\n/***/ }),\n\n/***/ 1318:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toIndexedObject = __webpack_require__(5656);\nvar toLength = __webpack_require__(7466);\nvar toAbsoluteIndex = __webpack_require__(1400);\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n\n\n/***/ }),\n\n/***/ 2092:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar bind = __webpack_require__(9974);\nvar IndexedObject = __webpack_require__(8361);\nvar toObject = __webpack_require__(7908);\nvar toLength = __webpack_require__(7466);\nvar arraySpeciesCreate = __webpack_require__(5417);\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterOut }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_OUT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_OUT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push.call(target, value); // filterOut\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterOut` method\n // https://github.com/tc39/proposal-array-filtering\n filterOut: createMethod(7)\n};\n\n\n/***/ }),\n\n/***/ 6583:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toIndexedObject = __webpack_require__(5656);\nvar toInteger = __webpack_require__(9958);\nvar toLength = __webpack_require__(7466);\nvar arrayMethodIsStrict = __webpack_require__(9341);\n\nvar min = Math.min;\nvar nativeLastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!nativeLastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return nativeLastIndexOf.apply(this, arguments) || 0;\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n return -1;\n} : nativeLastIndexOf;\n\n\n/***/ }),\n\n/***/ 1194:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(7293);\nvar wellKnownSymbol = __webpack_require__(5112);\nvar V8_VERSION = __webpack_require__(7392);\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n\n\n/***/ }),\n\n/***/ 9341:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fails = __webpack_require__(7293);\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n\n\n/***/ }),\n\n/***/ 3671:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar aFunction = __webpack_require__(3099);\nvar toObject = __webpack_require__(7908);\nvar IndexedObject = __webpack_require__(8361);\nvar toLength = __webpack_require__(7466);\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n\n\n/***/ }),\n\n/***/ 5417:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(111);\nvar isArray = __webpack_require__(3157);\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n\n\n/***/ }),\n\n/***/ 3411:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(9670);\nvar iteratorClose = __webpack_require__(9212);\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n};\n\n\n/***/ }),\n\n/***/ 7072:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n\n\n/***/ }),\n\n/***/ 4326:\n/***/ (function(module) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ 648:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(1694);\nvar classofRaw = __webpack_require__(4326);\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n\n\n/***/ }),\n\n/***/ 9920:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar has = __webpack_require__(6656);\nvar ownKeys = __webpack_require__(3887);\nvar getOwnPropertyDescriptorModule = __webpack_require__(1236);\nvar definePropertyModule = __webpack_require__(3070);\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n\n\n/***/ }),\n\n/***/ 8544:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(7293);\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n/***/ }),\n\n/***/ 4994:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar IteratorPrototype = __webpack_require__(3383).IteratorPrototype;\nvar create = __webpack_require__(30);\nvar createPropertyDescriptor = __webpack_require__(9114);\nvar setToStringTag = __webpack_require__(8003);\nvar Iterators = __webpack_require__(7497);\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n\n\n/***/ }),\n\n/***/ 8880:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(9781);\nvar definePropertyModule = __webpack_require__(3070);\nvar createPropertyDescriptor = __webpack_require__(9114);\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n\n/***/ 9114:\n/***/ (function(module) {\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n/***/ }),\n\n/***/ 6135:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toPrimitive = __webpack_require__(7593);\nvar definePropertyModule = __webpack_require__(3070);\nvar createPropertyDescriptor = __webpack_require__(9114);\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n\n\n/***/ }),\n\n/***/ 654:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar createIteratorConstructor = __webpack_require__(4994);\nvar getPrototypeOf = __webpack_require__(9518);\nvar setPrototypeOf = __webpack_require__(7674);\nvar setToStringTag = __webpack_require__(8003);\nvar createNonEnumerableProperty = __webpack_require__(8880);\nvar redefine = __webpack_require__(1320);\nvar wellKnownSymbol = __webpack_require__(5112);\nvar IS_PURE = __webpack_require__(1913);\nvar Iterators = __webpack_require__(7497);\nvar IteratorsCore = __webpack_require__(3383);\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n\n\n/***/ }),\n\n/***/ 9781:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(7293);\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n\n\n/***/ }),\n\n/***/ 317:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar isObject = __webpack_require__(111);\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ 8324:\n/***/ (function(module) {\n\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n\n\n/***/ }),\n\n/***/ 8113:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(5005);\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n\n\n/***/ }),\n\n/***/ 7392:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar userAgent = __webpack_require__(8113);\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n\n\n/***/ }),\n\n/***/ 748:\n/***/ (function(module) {\n\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n\n\n/***/ }),\n\n/***/ 2109:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar getOwnPropertyDescriptor = __webpack_require__(1236).f;\nvar createNonEnumerableProperty = __webpack_require__(8880);\nvar redefine = __webpack_require__(1320);\nvar setGlobal = __webpack_require__(3505);\nvar copyConstructorProperties = __webpack_require__(9920);\nvar isForced = __webpack_require__(4705);\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n\n\n/***/ }),\n\n/***/ 7293:\n/***/ (function(module) {\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ 7007:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n// TODO: Remove from `core-js@4` since it's moved to entry points\n__webpack_require__(4916);\nvar redefine = __webpack_require__(1320);\nvar fails = __webpack_require__(7293);\nvar wellKnownSymbol = __webpack_require__(5112);\nvar regexpExec = __webpack_require__(2261);\nvar createNonEnumerableProperty = __webpack_require__(8880);\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$<a>') !== '7';\n});\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\nvar REPLACE = wellKnownSymbol('replace');\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nmodule.exports = function (KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !(\n REPLACE_SUPPORTS_NAMED_GROUPS &&\n REPLACE_KEEPS_$0 &&\n !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n )) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }, {\n REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return regexMethod.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return regexMethod.call(string, this); }\n );\n }\n\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n};\n\n\n/***/ }),\n\n/***/ 9974:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar aFunction = __webpack_require__(3099);\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ 5005:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar path = __webpack_require__(857);\nvar global = __webpack_require__(7854);\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n\n\n/***/ }),\n\n/***/ 1246:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar classof = __webpack_require__(648);\nvar Iterators = __webpack_require__(7497);\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n\n\n/***/ }),\n\n/***/ 8554:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(9670);\nvar getIteratorMethod = __webpack_require__(1246);\n\nmodule.exports = function (it) {\n var iteratorMethod = getIteratorMethod(it);\n if (typeof iteratorMethod != 'function') {\n throw TypeError(String(it) + ' is not iterable');\n } return anObject(iteratorMethod.call(it));\n};\n\n\n/***/ }),\n\n/***/ 647:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toObject = __webpack_require__(7908);\n\nvar floor = Math.floor;\nvar replace = ''.replace;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n\n\n/***/ }),\n\n/***/ 7854:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n /* global globalThis -- safe */\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof __webpack_require__.g == 'object' && __webpack_require__.g) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n\n\n/***/ }),\n\n/***/ 6656:\n/***/ (function(module) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ 3501:\n/***/ (function(module) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ 490:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(5005);\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n\n/***/ }),\n\n/***/ 4664:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(9781);\nvar fails = __webpack_require__(7293);\nvar createElement = __webpack_require__(317);\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ 1179:\n/***/ (function(module) {\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nvar pack = function (number, mantissaLength, bytes) {\n var buffer = new Array(bytes);\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var rt = mantissaLength === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var sign = number < 0 || number === 0 && 1 / number < 0 ? 1 : 0;\n var index = 0;\n var exponent, mantissa, c;\n number = abs(number);\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number != number || number === Infinity) {\n // eslint-disable-next-line no-self-compare -- NaN check\n mantissa = number != number ? 1 : 0;\n exponent = eMax;\n } else {\n exponent = floor(log(number) / LN2);\n if (number * (c = pow(2, -exponent)) < 1) {\n exponent--;\n c *= 2;\n }\n if (exponent + eBias >= 1) {\n number += rt / c;\n } else {\n number += rt * pow(2, 1 - eBias);\n }\n if (number * c >= 2) {\n exponent++;\n c /= 2;\n }\n if (exponent + eBias >= eMax) {\n mantissa = 0;\n exponent = eMax;\n } else if (exponent + eBias >= 1) {\n mantissa = (number * c - 1) * pow(2, mantissaLength);\n exponent = exponent + eBias;\n } else {\n mantissa = number * pow(2, eBias - 1) * pow(2, mantissaLength);\n exponent = 0;\n }\n }\n for (; mantissaLength >= 8; buffer[index++] = mantissa & 255, mantissa /= 256, mantissaLength -= 8);\n exponent = exponent << mantissaLength | mantissa;\n exponentLength += mantissaLength;\n for (; exponentLength > 0; buffer[index++] = exponent & 255, exponent /= 256, exponentLength -= 8);\n buffer[--index] |= sign * 128;\n return buffer;\n};\n\nvar unpack = function (buffer, mantissaLength) {\n var bytes = buffer.length;\n var exponentLength = bytes * 8 - mantissaLength - 1;\n var eMax = (1 << exponentLength) - 1;\n var eBias = eMax >> 1;\n var nBits = exponentLength - 7;\n var index = bytes - 1;\n var sign = buffer[index--];\n var exponent = sign & 127;\n var mantissa;\n sign >>= 7;\n for (; nBits > 0; exponent = exponent * 256 + buffer[index], index--, nBits -= 8);\n mantissa = exponent & (1 << -nBits) - 1;\n exponent >>= -nBits;\n nBits += mantissaLength;\n for (; nBits > 0; mantissa = mantissa * 256 + buffer[index], index--, nBits -= 8);\n if (exponent === 0) {\n exponent = 1 - eBias;\n } else if (exponent === eMax) {\n return mantissa ? NaN : sign ? -Infinity : Infinity;\n } else {\n mantissa = mantissa + pow(2, mantissaLength);\n exponent = exponent - eBias;\n } return (sign ? -1 : 1) * mantissa * pow(2, exponent - mantissaLength);\n};\n\nmodule.exports = {\n pack: pack,\n unpack: unpack\n};\n\n\n/***/ }),\n\n/***/ 8361:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(7293);\nvar classof = __webpack_require__(4326);\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n\n\n/***/ }),\n\n/***/ 9587:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(111);\nvar setPrototypeOf = __webpack_require__(7674);\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n typeof (NewTarget = dummy.constructor) == 'function' &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n\n\n/***/ }),\n\n/***/ 2788:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar store = __webpack_require__(5465);\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n\n\n/***/ }),\n\n/***/ 9909:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar NATIVE_WEAK_MAP = __webpack_require__(8536);\nvar global = __webpack_require__(7854);\nvar isObject = __webpack_require__(111);\nvar createNonEnumerableProperty = __webpack_require__(8880);\nvar objectHas = __webpack_require__(6656);\nvar shared = __webpack_require__(5465);\nvar sharedKey = __webpack_require__(6200);\nvar hiddenKeys = __webpack_require__(3501);\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n\n\n/***/ }),\n\n/***/ 7659:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(5112);\nvar Iterators = __webpack_require__(7497);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n\n/***/ }),\n\n/***/ 3157:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar classof = __webpack_require__(4326);\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n\n\n/***/ }),\n\n/***/ 4705:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(7293);\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n\n\n/***/ }),\n\n/***/ 111:\n/***/ (function(module) {\n\nmodule.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ 1913:\n/***/ (function(module) {\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ 7850:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(111);\nvar classof = __webpack_require__(4326);\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n\n\n/***/ }),\n\n/***/ 9212:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(9670);\n\nmodule.exports = function (iterator) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) {\n return anObject(returnMethod.call(iterator)).value;\n }\n};\n\n\n/***/ }),\n\n/***/ 3383:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fails = __webpack_require__(7293);\nvar getPrototypeOf = __webpack_require__(9518);\nvar createNonEnumerableProperty = __webpack_require__(8880);\nvar has = __webpack_require__(6656);\nvar wellKnownSymbol = __webpack_require__(5112);\nvar IS_PURE = __webpack_require__(1913);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif ((!IS_PURE || NEW_ITERATOR_PROTOTYPE) && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n\n/***/ }),\n\n/***/ 7497:\n/***/ (function(module) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ 133:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(7293);\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n /* global Symbol -- required for testing */\n return !String(Symbol());\n});\n\n\n/***/ }),\n\n/***/ 590:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(7293);\nvar wellKnownSymbol = __webpack_require__(5112);\nvar IS_PURE = __webpack_require__(1913);\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || searchParams.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://теÑÑ‚').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\n});\n\n\n/***/ }),\n\n/***/ 8536:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar inspectSource = __webpack_require__(2788);\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n\n\n/***/ }),\n\n/***/ 1574:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar DESCRIPTORS = __webpack_require__(9781);\nvar fails = __webpack_require__(7293);\nvar objectKeys = __webpack_require__(1956);\nvar getOwnPropertySymbolsModule = __webpack_require__(5181);\nvar propertyIsEnumerableModule = __webpack_require__(5296);\nvar toObject = __webpack_require__(7908);\nvar IndexedObject = __webpack_require__(8361);\n\nvar nativeAssign = Object.assign;\nvar defineProperty = Object.defineProperty;\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !nativeAssign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n /* global Symbol -- required for testing */\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : nativeAssign;\n\n\n/***/ }),\n\n/***/ 30:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(9670);\nvar defineProperties = __webpack_require__(6048);\nvar enumBugKeys = __webpack_require__(748);\nvar hiddenKeys = __webpack_require__(3501);\nvar html = __webpack_require__(490);\nvar documentCreateElement = __webpack_require__(317);\nvar sharedKey = __webpack_require__(6200);\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject -- old IE */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ 6048:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(9781);\nvar definePropertyModule = __webpack_require__(3070);\nvar anObject = __webpack_require__(9670);\nvar objectKeys = __webpack_require__(1956);\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n\n\n/***/ }),\n\n/***/ 3070:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(9781);\nvar IE8_DOM_DEFINE = __webpack_require__(4664);\nvar anObject = __webpack_require__(9670);\nvar toPrimitive = __webpack_require__(7593);\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n/***/ }),\n\n/***/ 1236:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(9781);\nvar propertyIsEnumerableModule = __webpack_require__(5296);\nvar createPropertyDescriptor = __webpack_require__(9114);\nvar toIndexedObject = __webpack_require__(5656);\nvar toPrimitive = __webpack_require__(7593);\nvar has = __webpack_require__(6656);\nvar IE8_DOM_DEFINE = __webpack_require__(4664);\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n\n\n/***/ }),\n\n/***/ 8006:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\nvar internalObjectKeys = __webpack_require__(6324);\nvar enumBugKeys = __webpack_require__(748);\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n\n\n/***/ }),\n\n/***/ 5181:\n/***/ (function(__unused_webpack_module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ 9518:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar has = __webpack_require__(6656);\nvar toObject = __webpack_require__(7908);\nvar sharedKey = __webpack_require__(6200);\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(8544);\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n\n\n/***/ }),\n\n/***/ 6324:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar has = __webpack_require__(6656);\nvar toIndexedObject = __webpack_require__(5656);\nvar indexOf = __webpack_require__(1318).indexOf;\nvar hiddenKeys = __webpack_require__(3501);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n/***/ }),\n\n/***/ 1956:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar internalObjectKeys = __webpack_require__(6324);\nvar enumBugKeys = __webpack_require__(748);\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ 5296:\n/***/ (function(__unused_webpack_module, exports) {\n\n\"use strict\";\n\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ 7674:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/* eslint-disable no-proto -- safe */\nvar anObject = __webpack_require__(9670);\nvar aPossiblePrototype = __webpack_require__(6077);\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n\n\n/***/ }),\n\n/***/ 288:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(1694);\nvar classof = __webpack_require__(648);\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n\n\n/***/ }),\n\n/***/ 3887:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar getBuiltIn = __webpack_require__(5005);\nvar getOwnPropertyNamesModule = __webpack_require__(8006);\nvar getOwnPropertySymbolsModule = __webpack_require__(5181);\nvar anObject = __webpack_require__(9670);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n\n\n/***/ }),\n\n/***/ 857:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\n\nmodule.exports = global;\n\n\n/***/ }),\n\n/***/ 2248:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar redefine = __webpack_require__(1320);\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n\n\n/***/ }),\n\n/***/ 1320:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar createNonEnumerableProperty = __webpack_require__(8880);\nvar has = __webpack_require__(6656);\nvar setGlobal = __webpack_require__(3505);\nvar inspectSource = __webpack_require__(2788);\nvar InternalStateModule = __webpack_require__(9909);\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var state;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) {\n createNonEnumerableProperty(value, 'name', key);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n\n\n/***/ }),\n\n/***/ 7651:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar classof = __webpack_require__(4326);\nvar regexpExec = __webpack_require__(2261);\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n\n if (classof(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\n\n\n/***/ }),\n\n/***/ 2261:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar regexpFlags = __webpack_require__(7066);\nvar stickyHelpers = __webpack_require__(2999);\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\n// eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = String(str).slice(re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n\n\n/***/ }),\n\n/***/ 7066:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar anObject = __webpack_require__(9670);\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n\n\n/***/ }),\n\n/***/ 2999:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar fails = __webpack_require__(7293);\n\n// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\nfunction RE(s, f) {\n return RegExp(s, f);\n}\n\nexports.UNSUPPORTED_Y = fails(function () {\n // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n var re = RE('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\nexports.BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = RE('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n\n\n/***/ }),\n\n/***/ 4488:\n/***/ (function(module) {\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ 3505:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar createNonEnumerableProperty = __webpack_require__(8880);\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n\n\n/***/ }),\n\n/***/ 6340:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar getBuiltIn = __webpack_require__(5005);\nvar definePropertyModule = __webpack_require__(3070);\nvar wellKnownSymbol = __webpack_require__(5112);\nvar DESCRIPTORS = __webpack_require__(9781);\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n\n\n/***/ }),\n\n/***/ 8003:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar defineProperty = __webpack_require__(3070).f;\nvar has = __webpack_require__(6656);\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n\n\n/***/ }),\n\n/***/ 6200:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar shared = __webpack_require__(2309);\nvar uid = __webpack_require__(9711);\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ 5465:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar setGlobal = __webpack_require__(3505);\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n\n\n/***/ }),\n\n/***/ 2309:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar IS_PURE = __webpack_require__(1913);\nvar store = __webpack_require__(5465);\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.9.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ 6707:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(9670);\nvar aFunction = __webpack_require__(3099);\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);\n};\n\n\n/***/ }),\n\n/***/ 8710:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(9958);\nvar requireObjectCoercible = __webpack_require__(4488);\n\n// `String.prototype.{ codePointAt, at }` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n\n\n/***/ }),\n\n/***/ 3197:\n/***/ (function(module) {\n\n\"use strict\";\n\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n for (; delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\n// eslint-disable-next-line max-statements -- TODO\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n output.push(delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n for (var k = base; /* no condition */; k += base) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n return output.join('');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = input.toLowerCase().replace(regexSeparators, '\\u002E').split('.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n encoded.push(regexNonASCII.test(label) ? 'xn--' + encode(label) : label);\n }\n return encoded.join('.');\n};\n\n\n/***/ }),\n\n/***/ 6091:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar fails = __webpack_require__(7293);\nvar whitespaces = __webpack_require__(1361);\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n\n\n/***/ }),\n\n/***/ 3111:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar requireObjectCoercible = __webpack_require__(4488);\nvar whitespaces = __webpack_require__(1361);\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n\n\n/***/ }),\n\n/***/ 1400:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(9958);\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n\n/***/ }),\n\n/***/ 7067:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(9958);\nvar toLength = __webpack_require__(7466);\n\n// `ToIndex` abstract operation\n// https://tc39.es/ecma262/#sec-toindex\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length or index');\n return length;\n};\n\n\n/***/ }),\n\n/***/ 5656:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = __webpack_require__(8361);\nvar requireObjectCoercible = __webpack_require__(4488);\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n\n\n/***/ }),\n\n/***/ 9958:\n/***/ (function(module) {\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.es/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n\n\n/***/ }),\n\n/***/ 7466:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(9958);\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ 7908:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar requireObjectCoercible = __webpack_require__(4488);\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n\n\n/***/ }),\n\n/***/ 4590:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toPositiveInteger = __webpack_require__(3002);\n\nmodule.exports = function (it, BYTES) {\n var offset = toPositiveInteger(it);\n if (offset % BYTES) throw RangeError('Wrong offset');\n return offset;\n};\n\n\n/***/ }),\n\n/***/ 3002:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(9958);\n\nmodule.exports = function (it) {\n var result = toInteger(it);\n if (result < 0) throw RangeError(\"The argument can't be less than 0\");\n return result;\n};\n\n\n/***/ }),\n\n/***/ 7593:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(111);\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ 1694:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n\n\n/***/ }),\n\n/***/ 9843:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar global = __webpack_require__(7854);\nvar DESCRIPTORS = __webpack_require__(9781);\nvar TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = __webpack_require__(3832);\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar ArrayBufferModule = __webpack_require__(3331);\nvar anInstance = __webpack_require__(5787);\nvar createPropertyDescriptor = __webpack_require__(9114);\nvar createNonEnumerableProperty = __webpack_require__(8880);\nvar toLength = __webpack_require__(7466);\nvar toIndex = __webpack_require__(7067);\nvar toOffset = __webpack_require__(4590);\nvar toPrimitive = __webpack_require__(7593);\nvar has = __webpack_require__(6656);\nvar classof = __webpack_require__(648);\nvar isObject = __webpack_require__(111);\nvar create = __webpack_require__(30);\nvar setPrototypeOf = __webpack_require__(7674);\nvar getOwnPropertyNames = __webpack_require__(8006).f;\nvar typedArrayFrom = __webpack_require__(7321);\nvar forEach = __webpack_require__(2092).forEach;\nvar setSpecies = __webpack_require__(6340);\nvar definePropertyModule = __webpack_require__(3070);\nvar getOwnPropertyDescriptorModule = __webpack_require__(1236);\nvar InternalStateModule = __webpack_require__(9909);\nvar inheritIfRequired = __webpack_require__(9587);\n\nvar getInternalState = InternalStateModule.get;\nvar setInternalState = InternalStateModule.set;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar round = Math.round;\nvar RangeError = global.RangeError;\nvar ArrayBuffer = ArrayBufferModule.ArrayBuffer;\nvar DataView = ArrayBufferModule.DataView;\nvar NATIVE_ARRAY_BUFFER_VIEWS = ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS;\nvar TYPED_ARRAY_TAG = ArrayBufferViewCore.TYPED_ARRAY_TAG;\nvar TypedArray = ArrayBufferViewCore.TypedArray;\nvar TypedArrayPrototype = ArrayBufferViewCore.TypedArrayPrototype;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar isTypedArray = ArrayBufferViewCore.isTypedArray;\nvar BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\nvar WRONG_LENGTH = 'Wrong length';\n\nvar fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\nvar addGetter = function (it, key) {\n nativeDefineProperty(it, key, { get: function () {\n return getInternalState(this)[key];\n } });\n};\n\nvar isArrayBuffer = function (it) {\n var klass;\n return it instanceof ArrayBuffer || (klass = classof(it)) == 'ArrayBuffer' || klass == 'SharedArrayBuffer';\n};\n\nvar isTypedArrayIndex = function (target, key) {\n return isTypedArray(target)\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n};\n\nvar wrappedGetOwnPropertyDescriptor = function getOwnPropertyDescriptor(target, key) {\n return isTypedArrayIndex(target, key = toPrimitive(key, true))\n ? createPropertyDescriptor(2, target[key])\n : nativeGetOwnPropertyDescriptor(target, key);\n};\n\nvar wrappedDefineProperty = function defineProperty(target, key, descriptor) {\n if (isTypedArrayIndex(target, key = toPrimitive(key, true))\n && isObject(descriptor)\n && has(descriptor, 'value')\n && !has(descriptor, 'get')\n && !has(descriptor, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !descriptor.configurable\n && (!has(descriptor, 'writable') || descriptor.writable)\n && (!has(descriptor, 'enumerable') || descriptor.enumerable)\n ) {\n target[key] = descriptor.value;\n return target;\n } return nativeDefineProperty(target, key, descriptor);\n};\n\nif (DESCRIPTORS) {\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n getOwnPropertyDescriptorModule.f = wrappedGetOwnPropertyDescriptor;\n definePropertyModule.f = wrappedDefineProperty;\n addGetter(TypedArrayPrototype, 'buffer');\n addGetter(TypedArrayPrototype, 'byteOffset');\n addGetter(TypedArrayPrototype, 'byteLength');\n addGetter(TypedArrayPrototype, 'length');\n }\n\n $({ target: 'Object', stat: true, forced: !NATIVE_ARRAY_BUFFER_VIEWS }, {\n getOwnPropertyDescriptor: wrappedGetOwnPropertyDescriptor,\n defineProperty: wrappedDefineProperty\n });\n\n module.exports = function (TYPE, wrapper, CLAMPED) {\n var BYTES = TYPE.match(/\\d+$/)[0] / 8;\n var CONSTRUCTOR_NAME = TYPE + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + TYPE;\n var SETTER = 'set' + TYPE;\n var NativeTypedArrayConstructor = global[CONSTRUCTOR_NAME];\n var TypedArrayConstructor = NativeTypedArrayConstructor;\n var TypedArrayConstructorPrototype = TypedArrayConstructor && TypedArrayConstructor.prototype;\n var exported = {};\n\n var getter = function (that, index) {\n var data = getInternalState(that);\n return data.view[GETTER](index * BYTES + data.byteOffset, true);\n };\n\n var setter = function (that, index, value) {\n var data = getInternalState(that);\n if (CLAMPED) value = (value = round(value)) < 0 ? 0 : value > 0xFF ? 0xFF : value & 0xFF;\n data.view[SETTER](index * BYTES + data.byteOffset, value, true);\n };\n\n var addElement = function (that, index) {\n nativeDefineProperty(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n\n if (!NATIVE_ARRAY_BUFFER_VIEWS) {\n TypedArrayConstructor = wrapper(function (that, data, offset, $length) {\n anInstance(that, TypedArrayConstructor, CONSTRUCTOR_NAME);\n var index = 0;\n var byteOffset = 0;\n var buffer, byteLength, length;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new ArrayBuffer(byteLength);\n } else if (isArrayBuffer(data)) {\n buffer = data;\n byteOffset = toOffset(offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - byteOffset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + byteOffset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (isTypedArray(data)) {\n return fromList(TypedArrayConstructor, data);\n } else {\n return typedArrayFrom.call(TypedArrayConstructor, data);\n }\n setInternalState(that, {\n buffer: buffer,\n byteOffset: byteOffset,\n byteLength: byteLength,\n length: length,\n view: new DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n TypedArrayConstructorPrototype = TypedArrayConstructor.prototype = create(TypedArrayPrototype);\n } else if (TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS) {\n TypedArrayConstructor = wrapper(function (dummy, data, typedArrayOffset, $length) {\n anInstance(dummy, TypedArrayConstructor, CONSTRUCTOR_NAME);\n return inheritIfRequired(function () {\n if (!isObject(data)) return new NativeTypedArrayConstructor(toIndex(data));\n if (isArrayBuffer(data)) return $length !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES), $length)\n : typedArrayOffset !== undefined\n ? new NativeTypedArrayConstructor(data, toOffset(typedArrayOffset, BYTES))\n : new NativeTypedArrayConstructor(data);\n if (isTypedArray(data)) return fromList(TypedArrayConstructor, data);\n return typedArrayFrom.call(TypedArrayConstructor, data);\n }(), dummy, TypedArrayConstructor);\n });\n\n if (setPrototypeOf) setPrototypeOf(TypedArrayConstructor, TypedArray);\n forEach(getOwnPropertyNames(NativeTypedArrayConstructor), function (key) {\n if (!(key in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, key, NativeTypedArrayConstructor[key]);\n }\n });\n TypedArrayConstructor.prototype = TypedArrayConstructorPrototype;\n }\n\n if (TypedArrayConstructorPrototype.constructor !== TypedArrayConstructor) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, 'constructor', TypedArrayConstructor);\n }\n\n if (TYPED_ARRAY_TAG) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, TYPED_ARRAY_TAG, CONSTRUCTOR_NAME);\n }\n\n exported[CONSTRUCTOR_NAME] = TypedArrayConstructor;\n\n $({\n global: true, forced: TypedArrayConstructor != NativeTypedArrayConstructor, sham: !NATIVE_ARRAY_BUFFER_VIEWS\n }, exported);\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructor)) {\n createNonEnumerableProperty(TypedArrayConstructor, BYTES_PER_ELEMENT, BYTES);\n }\n\n if (!(BYTES_PER_ELEMENT in TypedArrayConstructorPrototype)) {\n createNonEnumerableProperty(TypedArrayConstructorPrototype, BYTES_PER_ELEMENT, BYTES);\n }\n\n setSpecies(CONSTRUCTOR_NAME);\n };\n} else module.exports = function () { /* empty */ };\n\n\n/***/ }),\n\n/***/ 3832:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/* eslint-disable no-new -- required for testing */\nvar global = __webpack_require__(7854);\nvar fails = __webpack_require__(7293);\nvar checkCorrectnessOfIteration = __webpack_require__(7072);\nvar NATIVE_ARRAY_BUFFER_VIEWS = __webpack_require__(260).NATIVE_ARRAY_BUFFER_VIEWS;\n\nvar ArrayBuffer = global.ArrayBuffer;\nvar Int8Array = global.Int8Array;\n\nmodule.exports = !NATIVE_ARRAY_BUFFER_VIEWS || !fails(function () {\n Int8Array(1);\n}) || !fails(function () {\n new Int8Array(-1);\n}) || !checkCorrectnessOfIteration(function (iterable) {\n new Int8Array();\n new Int8Array(null);\n new Int8Array(1.5);\n new Int8Array(iterable);\n}, true) || fails(function () {\n // Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill\n return new Int8Array(new ArrayBuffer(2), 1, undefined).length !== 1;\n});\n\n\n/***/ }),\n\n/***/ 3074:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar aTypedArrayConstructor = __webpack_require__(260).aTypedArrayConstructor;\nvar speciesConstructor = __webpack_require__(6707);\n\nmodule.exports = function (instance, list) {\n var C = speciesConstructor(instance, instance.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n};\n\n\n/***/ }),\n\n/***/ 7321:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar toObject = __webpack_require__(7908);\nvar toLength = __webpack_require__(7466);\nvar getIteratorMethod = __webpack_require__(1246);\nvar isArrayIteratorMethod = __webpack_require__(7659);\nvar bind = __webpack_require__(9974);\nvar aTypedArrayConstructor = __webpack_require__(260).aTypedArrayConstructor;\n\nmodule.exports = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var i, length, result, step, iterator, next;\n if (iteratorMethod != undefined && !isArrayIteratorMethod(iteratorMethod)) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n O = [];\n while (!(step = next.call(iterator)).done) {\n O.push(step.value);\n }\n }\n if (mapping && argumentsLength > 2) {\n mapfn = bind(mapfn, arguments[2], 2);\n }\n length = toLength(O.length);\n result = new (aTypedArrayConstructor(this))(length);\n for (i = 0; length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n};\n\n\n/***/ }),\n\n/***/ 9711:\n/***/ (function(module) {\n\nvar id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n\n\n/***/ }),\n\n/***/ 3307:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar NATIVE_SYMBOL = __webpack_require__(133);\n\nmodule.exports = NATIVE_SYMBOL\n /* global Symbol -- safe */\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n\n\n/***/ }),\n\n/***/ 5112:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar shared = __webpack_require__(2309);\nvar has = __webpack_require__(6656);\nvar uid = __webpack_require__(9711);\nvar NATIVE_SYMBOL = __webpack_require__(133);\nvar USE_SYMBOL_AS_UID = __webpack_require__(3307);\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name)) {\n if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];\n else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n\n\n/***/ }),\n\n/***/ 1361:\n/***/ (function(module) {\n\n// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n\n\n/***/ }),\n\n/***/ 8264:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar global = __webpack_require__(7854);\nvar arrayBufferModule = __webpack_require__(3331);\nvar setSpecies = __webpack_require__(6340);\n\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar ArrayBuffer = arrayBufferModule[ARRAY_BUFFER];\nvar NativeArrayBuffer = global[ARRAY_BUFFER];\n\n// `ArrayBuffer` constructor\n// https://tc39.es/ecma262/#sec-arraybuffer-constructor\n$({ global: true, forced: NativeArrayBuffer !== ArrayBuffer }, {\n ArrayBuffer: ArrayBuffer\n});\n\nsetSpecies(ARRAY_BUFFER);\n\n\n/***/ }),\n\n/***/ 2222:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar fails = __webpack_require__(7293);\nvar isArray = __webpack_require__(3157);\nvar isObject = __webpack_require__(111);\nvar toObject = __webpack_require__(7908);\nvar toLength = __webpack_require__(7466);\nvar createProperty = __webpack_require__(6135);\nvar arraySpeciesCreate = __webpack_require__(5417);\nvar arrayMethodHasSpeciesSupport = __webpack_require__(1194);\nvar wellKnownSymbol = __webpack_require__(5112);\nvar V8_VERSION = __webpack_require__(7392);\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n\n\n/***/ }),\n\n/***/ 7327:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar $filter = __webpack_require__(2092).filter;\nvar arrayMethodHasSpeciesSupport = __webpack_require__(1194);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n/***/ }),\n\n/***/ 2772:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar $indexOf = __webpack_require__(1318).indexOf;\nvar arrayMethodIsStrict = __webpack_require__(9341);\n\nvar nativeIndexOf = [].indexOf;\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n/***/ }),\n\n/***/ 6992:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toIndexedObject = __webpack_require__(5656);\nvar addToUnscopables = __webpack_require__(1223);\nvar Iterators = __webpack_require__(7497);\nvar InternalStateModule = __webpack_require__(9909);\nvar defineIterator = __webpack_require__(654);\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n/***/ }),\n\n/***/ 1249:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar $map = __webpack_require__(2092).map;\nvar arrayMethodHasSpeciesSupport = __webpack_require__(1194);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n/***/ }),\n\n/***/ 7042:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar isObject = __webpack_require__(111);\nvar isArray = __webpack_require__(3157);\nvar toAbsoluteIndex = __webpack_require__(1400);\nvar toLength = __webpack_require__(7466);\nvar toIndexedObject = __webpack_require__(5656);\nvar createProperty = __webpack_require__(6135);\nvar wellKnownSymbol = __webpack_require__(5112);\nvar arrayMethodHasSpeciesSupport = __webpack_require__(1194);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n\n\n/***/ }),\n\n/***/ 561:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar toAbsoluteIndex = __webpack_require__(1400);\nvar toInteger = __webpack_require__(9958);\nvar toLength = __webpack_require__(7466);\nvar toObject = __webpack_require__(7908);\nvar arraySpeciesCreate = __webpack_require__(5417);\nvar createProperty = __webpack_require__(6135);\nvar arrayMethodHasSpeciesSupport = __webpack_require__(1194);\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar max = Math.max;\nvar min = Math.min;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);\n }\n if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n\n\n/***/ }),\n\n/***/ 8309:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(9781);\nvar defineProperty = __webpack_require__(3070).f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n\n\n/***/ }),\n\n/***/ 489:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar $ = __webpack_require__(2109);\nvar fails = __webpack_require__(7293);\nvar toObject = __webpack_require__(7908);\nvar nativeGetPrototypeOf = __webpack_require__(9518);\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(8544);\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n getPrototypeOf: function getPrototypeOf(it) {\n return nativeGetPrototypeOf(toObject(it));\n }\n});\n\n\n\n/***/ }),\n\n/***/ 1539:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(1694);\nvar redefine = __webpack_require__(1320);\nvar toString = __webpack_require__(288);\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n\n\n/***/ }),\n\n/***/ 4916:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar exec = __webpack_require__(2261);\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n\n\n/***/ }),\n\n/***/ 9714:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar redefine = __webpack_require__(1320);\nvar anObject = __webpack_require__(9670);\nvar fails = __webpack_require__(7293);\nvar flags = __webpack_require__(7066);\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = nativeToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, { unsafe: true });\n}\n\n\n/***/ }),\n\n/***/ 8783:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar charAt = __webpack_require__(8710).charAt;\nvar InternalStateModule = __webpack_require__(9909);\nvar defineIterator = __webpack_require__(654);\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n\n\n/***/ }),\n\n/***/ 4723:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(7007);\nvar anObject = __webpack_require__(9670);\nvar toLength = __webpack_require__(7466);\nvar requireObjectCoercible = __webpack_require__(4488);\nvar advanceStringIndex = __webpack_require__(1530);\nvar regExpExec = __webpack_require__(7651);\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : regexp[MATCH];\n return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative(nativeMatch, regexp, this);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n\n\n/***/ }),\n\n/***/ 5306:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(7007);\nvar anObject = __webpack_require__(9670);\nvar toLength = __webpack_require__(7466);\nvar toInteger = __webpack_require__(9958);\nvar requireObjectCoercible = __webpack_require__(4488);\nvar advanceStringIndex = __webpack_require__(1530);\nvar getSubstitution = __webpack_require__(647);\nvar regExpExec = __webpack_require__(7651);\n\nvar max = Math.max;\nvar min = Math.min;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n if (\n (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n ) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n }\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n});\n\n\n/***/ }),\n\n/***/ 3123:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar fixRegExpWellKnownSymbolLogic = __webpack_require__(7007);\nvar isRegExp = __webpack_require__(7850);\nvar anObject = __webpack_require__(9670);\nvar requireObjectCoercible = __webpack_require__(4488);\nvar speciesConstructor = __webpack_require__(6707);\nvar advanceStringIndex = __webpack_require__(1530);\nvar toLength = __webpack_require__(7466);\nvar callRegExpExec = __webpack_require__(7651);\nvar regexpExec = __webpack_require__(2261);\nvar fails = __webpack_require__(7293);\n\nvar arrayPush = [].push;\nvar min = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { return !RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output.length > lim ? output.slice(0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n}, !SUPPORTS_Y);\n\n\n/***/ }),\n\n/***/ 3210:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(2109);\nvar $trim = __webpack_require__(3111).trim;\nvar forcedStringTrimMethod = __webpack_require__(6091);\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n\n\n/***/ }),\n\n/***/ 2990:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $copyWithin = __webpack_require__(1048);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.copyWithin` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin\nexportTypedArrayMethod('copyWithin', function copyWithin(target, start /* , end */) {\n return $copyWithin.call(aTypedArray(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 8927:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $every = __webpack_require__(2092).every;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.every` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every\nexportTypedArrayMethod('every', function every(callbackfn /* , thisArg */) {\n return $every(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 3105:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $fill = __webpack_require__(1285);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.fill` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nexportTypedArrayMethod('fill', function fill(value /* , start, end */) {\n return $fill.apply(aTypedArray(this), arguments);\n});\n\n\n/***/ }),\n\n/***/ 5035:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $filter = __webpack_require__(2092).filter;\nvar fromSpeciesAndList = __webpack_require__(3074);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.filter` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter\nexportTypedArrayMethod('filter', function filter(callbackfn /* , thisArg */) {\n var list = $filter(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return fromSpeciesAndList(this, list);\n});\n\n\n/***/ }),\n\n/***/ 7174:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $findIndex = __webpack_require__(2092).findIndex;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex\nexportTypedArrayMethod('findIndex', function findIndex(predicate /* , thisArg */) {\n return $findIndex(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 4345:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $find = __webpack_require__(2092).find;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.find` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find\nexportTypedArrayMethod('find', function find(predicate /* , thisArg */) {\n return $find(aTypedArray(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 2846:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $forEach = __webpack_require__(2092).forEach;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach\nexportTypedArrayMethod('forEach', function forEach(callbackfn /* , thisArg */) {\n $forEach(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 4731:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $includes = __webpack_require__(1318).includes;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.includes` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes\nexportTypedArrayMethod('includes', function includes(searchElement /* , fromIndex */) {\n return $includes(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 7209:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $indexOf = __webpack_require__(1318).indexOf;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof\nexportTypedArrayMethod('indexOf', function indexOf(searchElement /* , fromIndex */) {\n return $indexOf(aTypedArray(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 6319:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(7854);\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar ArrayIterators = __webpack_require__(6992);\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar Uint8Array = global.Uint8Array;\nvar arrayValues = ArrayIterators.values;\nvar arrayKeys = ArrayIterators.keys;\nvar arrayEntries = ArrayIterators.entries;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar nativeTypedArrayIterator = Uint8Array && Uint8Array.prototype[ITERATOR];\n\nvar CORRECT_ITER_NAME = !!nativeTypedArrayIterator\n && (nativeTypedArrayIterator.name == 'values' || nativeTypedArrayIterator.name == undefined);\n\nvar typedArrayValues = function values() {\n return arrayValues.call(aTypedArray(this));\n};\n\n// `%TypedArray%.prototype.entries` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries\nexportTypedArrayMethod('entries', function entries() {\n return arrayEntries.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.keys` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys\nexportTypedArrayMethod('keys', function keys() {\n return arrayKeys.call(aTypedArray(this));\n});\n// `%TypedArray%.prototype.values` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values\nexportTypedArrayMethod('values', typedArrayValues, !CORRECT_ITER_NAME);\n// `%TypedArray%.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator\nexportTypedArrayMethod(ITERATOR, typedArrayValues, !CORRECT_ITER_NAME);\n\n\n/***/ }),\n\n/***/ 8867:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $join = [].join;\n\n// `%TypedArray%.prototype.join` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nexportTypedArrayMethod('join', function join(separator) {\n return $join.apply(aTypedArray(this), arguments);\n});\n\n\n/***/ }),\n\n/***/ 7789:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $lastIndexOf = __webpack_require__(6583);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof\n// eslint-disable-next-line no-unused-vars -- required for `.length`\nexportTypedArrayMethod('lastIndexOf', function lastIndexOf(searchElement /* , fromIndex */) {\n return $lastIndexOf.apply(aTypedArray(this), arguments);\n});\n\n\n/***/ }),\n\n/***/ 3739:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $map = __webpack_require__(2092).map;\nvar speciesConstructor = __webpack_require__(6707);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.map` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map\nexportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {\n return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {\n return new (aTypedArrayConstructor(speciesConstructor(O, O.constructor)))(length);\n });\n});\n\n\n/***/ }),\n\n/***/ 4483:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $reduceRight = __webpack_require__(3671).right;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduceRicht` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright\nexportTypedArrayMethod('reduceRight', function reduceRight(callbackfn /* , initialValue */) {\n return $reduceRight(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 9368:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $reduce = __webpack_require__(3671).left;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce\nexportTypedArrayMethod('reduce', function reduce(callbackfn /* , initialValue */) {\n return $reduce(aTypedArray(this), callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 2056:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar floor = Math.floor;\n\n// `%TypedArray%.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse\nexportTypedArrayMethod('reverse', function reverse() {\n var that = this;\n var length = aTypedArray(that).length;\n var middle = floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n});\n\n\n/***/ }),\n\n/***/ 3462:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar toLength = __webpack_require__(7466);\nvar toOffset = __webpack_require__(4590);\nvar toObject = __webpack_require__(7908);\nvar fails = __webpack_require__(7293);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\nvar FORCED = fails(function () {\n /* global Int8Array -- safe */\n new Int8Array(1).set({});\n});\n\n// `%TypedArray%.prototype.set` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set\nexportTypedArrayMethod('set', function set(arrayLike /* , offset */) {\n aTypedArray(this);\n var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError('Wrong length');\n while (index < len) this[offset + index] = src[index++];\n}, FORCED);\n\n\n/***/ }),\n\n/***/ 678:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar speciesConstructor = __webpack_require__(6707);\nvar fails = __webpack_require__(7293);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar aTypedArrayConstructor = ArrayBufferViewCore.aTypedArrayConstructor;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $slice = [].slice;\n\nvar FORCED = fails(function () {\n /* global Int8Array -- safe */\n new Int8Array(1).slice();\n});\n\n// `%TypedArray%.prototype.slice` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice\nexportTypedArrayMethod('slice', function slice(start, end) {\n var list = $slice.call(aTypedArray(this), start, end);\n var C = speciesConstructor(this, this.constructor);\n var index = 0;\n var length = list.length;\n var result = new (aTypedArrayConstructor(C))(length);\n while (length > index) result[index] = list[index++];\n return result;\n}, FORCED);\n\n\n/***/ }),\n\n/***/ 7462:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar $some = __webpack_require__(2092).some;\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.some` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some\nexportTypedArrayMethod('some', function some(callbackfn /* , thisArg */) {\n return $some(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n});\n\n\n/***/ }),\n\n/***/ 3824:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $sort = [].sort;\n\n// `%TypedArray%.prototype.sort` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort\nexportTypedArrayMethod('sort', function sort(comparefn) {\n return $sort.call(aTypedArray(this), comparefn);\n});\n\n\n/***/ }),\n\n/***/ 5021:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar toLength = __webpack_require__(7466);\nvar toAbsoluteIndex = __webpack_require__(1400);\nvar speciesConstructor = __webpack_require__(6707);\n\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\n\n// `%TypedArray%.prototype.subarray` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray\nexportTypedArrayMethod('subarray', function subarray(begin, end) {\n var O = aTypedArray(this);\n var length = O.length;\n var beginIndex = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O.constructor))(\n O.buffer,\n O.byteOffset + beginIndex * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - beginIndex)\n );\n});\n\n\n/***/ }),\n\n/***/ 2974:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(7854);\nvar ArrayBufferViewCore = __webpack_require__(260);\nvar fails = __webpack_require__(7293);\n\nvar Int8Array = global.Int8Array;\nvar aTypedArray = ArrayBufferViewCore.aTypedArray;\nvar exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;\nvar $toLocaleString = [].toLocaleString;\nvar $slice = [].slice;\n\n// iOS Safari 6.x fails here\nvar TO_LOCALE_STRING_BUG = !!Int8Array && fails(function () {\n $toLocaleString.call(new Int8Array(1));\n});\n\nvar FORCED = fails(function () {\n return [1, 2].toLocaleString() != new Int8Array([1, 2]).toLocaleString();\n}) || !fails(function () {\n Int8Array.prototype.toLocaleString.call([1, 2]);\n});\n\n// `%TypedArray%.prototype.toLocaleString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring\nexportTypedArrayMethod('toLocaleString', function toLocaleString() {\n return $toLocaleString.apply(TO_LOCALE_STRING_BUG ? $slice.call(aTypedArray(this)) : aTypedArray(this), arguments);\n}, FORCED);\n\n\n/***/ }),\n\n/***/ 5016:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\nvar exportTypedArrayMethod = __webpack_require__(260).exportTypedArrayMethod;\nvar fails = __webpack_require__(7293);\nvar global = __webpack_require__(7854);\n\nvar Uint8Array = global.Uint8Array;\nvar Uint8ArrayPrototype = Uint8Array && Uint8Array.prototype || {};\nvar arrayToString = [].toString;\nvar arrayJoin = [].join;\n\nif (fails(function () { arrayToString.call({}); })) {\n arrayToString = function toString() {\n return arrayJoin.call(this);\n };\n}\n\nvar IS_NOT_ARRAY_METHOD = Uint8ArrayPrototype.toString != arrayToString;\n\n// `%TypedArray%.prototype.toString` method\n// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring\nexportTypedArrayMethod('toString', arrayToString, IS_NOT_ARRAY_METHOD);\n\n\n/***/ }),\n\n/***/ 2472:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar createTypedArrayConstructor = __webpack_require__(9843);\n\n// `Uint8Array` constructor\n// https://tc39.es/ecma262/#sec-typedarray-objects\ncreateTypedArrayConstructor('Uint8', function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n\n\n/***/ }),\n\n/***/ 4747:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar DOMIterables = __webpack_require__(8324);\nvar forEach = __webpack_require__(8533);\nvar createNonEnumerableProperty = __webpack_require__(8880);\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n\n\n/***/ }),\n\n/***/ 3948:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\nvar global = __webpack_require__(7854);\nvar DOMIterables = __webpack_require__(8324);\nvar ArrayIteratorMethods = __webpack_require__(6992);\nvar createNonEnumerableProperty = __webpack_require__(8880);\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n\n\n/***/ }),\n\n/***/ 1637:\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\n__webpack_require__(6992);\nvar $ = __webpack_require__(2109);\nvar getBuiltIn = __webpack_require__(5005);\nvar USE_NATIVE_URL = __webpack_require__(590);\nvar redefine = __webpack_require__(1320);\nvar redefineAll = __webpack_require__(2248);\nvar setToStringTag = __webpack_require__(8003);\nvar createIteratorConstructor = __webpack_require__(4994);\nvar InternalStateModule = __webpack_require__(9909);\nvar anInstance = __webpack_require__(5787);\nvar hasOwn = __webpack_require__(6656);\nvar bind = __webpack_require__(9974);\nvar classof = __webpack_require__(648);\nvar anObject = __webpack_require__(9670);\nvar isObject = __webpack_require__(111);\nvar create = __webpack_require__(30);\nvar createPropertyDescriptor = __webpack_require__(9114);\nvar getIterator = __webpack_require__(8554);\nvar getIteratorMethod = __webpack_require__(1246);\nvar wellKnownSymbol = __webpack_require__(5112);\n\nvar $fetch = getBuiltIn('fetch');\nvar Headers = getBuiltIn('Headers');\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = it.replace(plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = result.replace(percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replace = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replace[match];\n};\n\nvar serialize = function (it) {\n return encodeURIComponent(it).replace(find, replacer);\n};\n\nvar parseSearchParams = function (result, query) {\n if (query) {\n var attributes = query.split('&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = attribute.split('=');\n result.push({\n key: deserialize(entry.shift()),\n value: deserialize(entry.join('='))\n });\n }\n }\n }\n};\n\nvar updateSearchParams = function (query) {\n this.entries.length = 0;\n parseSearchParams(this.entries, query);\n};\n\nvar validateArgumentsLength = function (passed, required) {\n if (passed < required) throw TypeError('Not enough arguments');\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n});\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n var that = this;\n var entries = [];\n var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key;\n\n setInternalState(that, {\n type: URL_SEARCH_PARAMS,\n entries: entries,\n updateURL: function () { /* empty */ },\n updateSearchParams: updateSearchParams\n });\n\n if (init !== undefined) {\n if (isObject(init)) {\n iteratorMethod = getIteratorMethod(init);\n if (typeof iteratorMethod === 'function') {\n iterator = iteratorMethod.call(init);\n next = iterator.next;\n while (!(step = next.call(iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = entryNext.call(entryIterator)).done ||\n (second = entryNext.call(entryIterator)).done ||\n !entryNext.call(entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n entries.push({ key: first.value + '', value: second.value + '' });\n }\n } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: init[key] + '' });\n } else {\n parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + '');\n }\n }\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\nredefineAll(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.append` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n state.entries.push({ key: name + '', value: value + '' });\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) entries.splice(index, 1);\n else index++;\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) result.push(entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = name + '';\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = name + '';\n var val = value + '';\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) entries.splice(index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) entries.push({ key: key, value: val });\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n var entries = state.entries;\n // Array#sort is not stable in some engines\n var slice = entries.slice();\n var entry, entriesIndex, sliceIndex;\n entries.length = 0;\n for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) {\n entry = slice[sliceIndex];\n for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) {\n if (entries[entriesIndex].key > entry.key) {\n entries.splice(entriesIndex, 0, entry);\n break;\n }\n }\n if (entriesIndex === sliceIndex) entries.push(entry);\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\nredefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries);\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\nredefine(URLSearchParamsPrototype, 'toString', function toString() {\n var entries = getInternalParamsState(this).entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n result.push(serialize(entry.key) + '=' + serialize(entry.value));\n } return result.join('&');\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` for correct work with polyfilled `URLSearchParams`\n// https://github.com/zloirock/core-js/issues/674\nif (!USE_NATIVE_URL && typeof $fetch == 'function' && typeof Headers == 'function') {\n $({ global: true, enumerable: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n var args = [input];\n var init, body, headers;\n if (arguments.length > 1) {\n init = arguments[1];\n if (isObject(init)) {\n body = init.body;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headers.has('content-type')) {\n headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n init = create(init, {\n body: createPropertyDescriptor(0, String(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n }\n args.push(init);\n } return $fetch.apply(this, args);\n }\n });\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n\n\n/***/ }),\n\n/***/ 285:\n/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {\n\n\"use strict\";\n\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\n__webpack_require__(8783);\nvar $ = __webpack_require__(2109);\nvar DESCRIPTORS = __webpack_require__(9781);\nvar USE_NATIVE_URL = __webpack_require__(590);\nvar global = __webpack_require__(7854);\nvar defineProperties = __webpack_require__(6048);\nvar redefine = __webpack_require__(1320);\nvar anInstance = __webpack_require__(5787);\nvar has = __webpack_require__(6656);\nvar assign = __webpack_require__(1574);\nvar arrayFrom = __webpack_require__(8457);\nvar codeAt = __webpack_require__(8710).codeAt;\nvar toASCII = __webpack_require__(3197);\nvar setToStringTag = __webpack_require__(8003);\nvar URLSearchParamsModule = __webpack_require__(1637);\nvar InternalStateModule = __webpack_require__(9909);\n\nvar NativeURL = global.URL;\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar floor = Math.floor;\nvar pow = Math.pow;\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[A-Za-z]/;\nvar ALPHANUMERIC = /[\\d+-.A-Za-z]/;\nvar DIGIT = /\\d/;\nvar HEX_START = /^(0x|0X)/;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\dA-Fa-f]+$/;\n/* eslint-disable no-control-regex -- safe */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\u0000\\t\\u000A\\u000D #%/:?@[\\\\]]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\u0000\\t\\u000A\\u000D #/:?@[\\\\]]/;\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u001F ]+|[\\u0000-\\u001F ]+$/g;\nvar TAB_AND_NEW_LINE = /[\\t\\u000A\\u000D]/g;\n/* eslint-enable no-control-regex -- safe */\nvar EOF;\n\nvar parseHost = function (url, input) {\n var result, codePoints, index;\n if (input.charAt(0) == '[') {\n if (input.charAt(input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(input.slice(1, -1));\n if (!result) return INVALID_HOST;\n url.host = result;\n // opaque host\n } else if (!isSpecial(url)) {\n if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n url.host = result;\n } else {\n input = toASCII(input);\n if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n url.host = result;\n }\n};\n\nvar parseIPv4 = function (input) {\n var parts = input.split('.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.pop();\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && part.charAt(0) == '0') {\n radix = HEX_START.test(part) ? 16 : 8;\n part = part.slice(radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input;\n number = parseInt(part, radix);\n }\n numbers.push(number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = numbers.pop();\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var char = function () {\n return input.charAt(pointer);\n };\n\n if (char() == ':') {\n if (input.charAt(1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (char()) {\n if (pieceIndex == 8) return;\n if (char() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && HEX.test(char())) {\n value = value * 16 + parseInt(char(), 16);\n pointer++;\n length++;\n }\n if (char() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (char()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (char() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!DIGIT.test(char())) return;\n while (DIGIT.test(char())) {\n number = parseInt(char(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (char() == ':') {\n pointer++;\n if (!char()) return;\n } else if (char()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n result.unshift(host % 256);\n host = floor(host / 256);\n } return result.join('.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += host[index].toString(16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (char, set) {\n var code = codeAt(char, 0);\n return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char);\n};\n\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\nvar isSpecial = function (url) {\n return has(specialSchemes, url.scheme);\n};\n\nvar includesCredentials = function (url) {\n return url.username != '' || url.password != '';\n};\n\nvar cannotHaveUsernamePasswordPort = function (url) {\n return !url.host || url.cannotBeABaseURL || url.scheme == 'file';\n};\n\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && ALPHA.test(string.charAt(0))\n && ((second = string.charAt(1)) == ':' || (!normalized && second == '|'));\n};\n\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && (\n string.length == 2 ||\n ((third = string.charAt(2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\nvar shortenURLsPath = function (url) {\n var path = url.path;\n var pathSize = path.length;\n if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.pop();\n }\n};\n\nvar isSingleDot = function (segment) {\n return segment === '.' || segment.toLowerCase() === '%2e';\n};\n\nvar isDoubleDot = function (segment) {\n segment = segment.toLowerCase();\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\n// eslint-disable-next-line max-statements -- TODO\nvar parseURL = function (url, input, stateOverride, base) {\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, char, bufferCodePoints, failure;\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n\n input = input.replace(TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n char = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (char && ALPHA.test(char)) {\n buffer += char.toLowerCase();\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) {\n buffer += char.toLowerCase();\n } else if (char == ':') {\n if (stateOverride && (\n (isSpecial(url) != has(specialSchemes, buffer)) ||\n (buffer == 'file' && (includesCredentials(url) || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (isSpecial(url) && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (isSpecial(url)) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n url.path.push('');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && char == '#') {\n url.scheme = base.scheme;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (char == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (char == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (char == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '/' || (char == '\\\\' && isSpecial(url))) {\n state = RELATIVE_SLASH;\n } else if (char == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = base.path.slice();\n url.path.pop();\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (isSpecial(url) && (char == '/' || char == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (char == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (char != '/' || buffer.charAt(pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (char != '/' && char != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (char == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += char;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (char == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url))\n ) {\n if (isSpecial(url) && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return;\n failure = parseHost(url, buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (char == '[') seenBracket = true;\n else if (char == ']') seenBracket = false;\n buffer += char;\n } break;\n\n case PORT:\n if (DIGIT.test(char)) {\n buffer += char;\n } else if (\n char == EOF || char == '/' || char == '?' || char == '#' ||\n (char == '\\\\' && isSpecial(url)) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (char == '/' || char == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (char == EOF) {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n } else if (char == '?') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.host = base.host;\n url.path = base.path.slice();\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n url.host = base.host;\n url.path = base.path.slice();\n shortenURLsPath(url);\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (char == '/' || char == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) {\n if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (char == EOF || char == '/' || char == '\\\\' || char == '?' || char == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = parseHost(url, buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += char;\n break;\n\n case PATH_START:\n if (isSpecial(url)) {\n state = PATH;\n if (char != '/' && char != '\\\\') continue;\n } else if (!stateOverride && char == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n state = PATH;\n if (char != '/') continue;\n } break;\n\n case PATH:\n if (\n char == EOF || char == '/' ||\n (char == '\\\\' && isSpecial(url)) ||\n (!stateOverride && (char == '?' || char == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n shortenURLsPath(url);\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else if (isSingleDot(buffer)) {\n if (char != '/' && !(char == '\\\\' && isSpecial(url))) {\n url.path.push('');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = buffer.charAt(0) + ':'; // normalize windows drive letter\n }\n url.path.push(buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n url.path.shift();\n }\n }\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(char, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (char == '?') {\n url.query = '';\n state = QUERY;\n } else if (char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n url.path[0] += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && char == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (char != EOF) {\n if (char == \"'\" && isSpecial(url)) url.query += '%27';\n else if (char == '#') url.query += '%23';\n else url.query += percentEncode(char, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLConstructor, 'URL');\n var base = arguments.length > 1 ? arguments[1] : undefined;\n var urlString = String(url);\n var state = setInternalState(that, { type: 'URL' });\n var baseState, failure;\n if (base !== undefined) {\n if (base instanceof URLConstructor) baseState = getInternalURLState(base);\n else {\n failure = parseURL(baseState = {}, String(base));\n if (failure) throw TypeError(failure);\n }\n }\n failure = parseURL(state, urlString, null, baseState);\n if (failure) throw TypeError(failure);\n var searchParams = state.searchParams = new URLSearchParams();\n var searchParamsState = getInternalSearchParamsState(searchParams);\n searchParamsState.updateSearchParams(state.query);\n searchParamsState.updateURL = function () {\n state.query = String(searchParams) || null;\n };\n if (!DESCRIPTORS) {\n that.href = serializeURL.call(that);\n that.origin = getOrigin.call(that);\n that.protocol = getProtocol.call(that);\n that.username = getUsername.call(that);\n that.password = getPassword.call(that);\n that.host = getHost.call(that);\n that.hostname = getHostname.call(that);\n that.port = getPort.call(that);\n that.pathname = getPathname.call(that);\n that.search = getSearch.call(that);\n that.searchParams = getSearchParams.call(that);\n that.hash = getHash.call(that);\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar serializeURL = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (includesCredentials(url)) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n};\n\nvar getOrigin = function () {\n var url = getInternalURLState(this);\n var scheme = url.scheme;\n var port = url.port;\n if (scheme == 'blob') try {\n return new URL(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !isSpecial(url)) return 'null';\n return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : '');\n};\n\nvar getProtocol = function () {\n return getInternalURLState(this).scheme + ':';\n};\n\nvar getUsername = function () {\n return getInternalURLState(this).username;\n};\n\nvar getPassword = function () {\n return getInternalURLState(this).password;\n};\n\nvar getHost = function () {\n var url = getInternalURLState(this);\n var host = url.host;\n var port = url.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n};\n\nvar getHostname = function () {\n var host = getInternalURLState(this).host;\n return host === null ? '' : serializeHost(host);\n};\n\nvar getPort = function () {\n var port = getInternalURLState(this).port;\n return port === null ? '' : String(port);\n};\n\nvar getPathname = function () {\n var url = getInternalURLState(this);\n var path = url.path;\n return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : '';\n};\n\nvar getSearch = function () {\n var query = getInternalURLState(this).query;\n return query ? '?' + query : '';\n};\n\nvar getSearchParams = function () {\n return getInternalURLState(this).searchParams;\n};\n\nvar getHash = function () {\n var fragment = getInternalURLState(this).fragment;\n return fragment ? '#' + fragment : '';\n};\n\nvar accessorDescriptor = function (getter, setter) {\n return { get: getter, set: setter, configurable: true, enumerable: true };\n};\n\nif (DESCRIPTORS) {\n defineProperties(URLPrototype, {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n href: accessorDescriptor(serializeURL, function (href) {\n var url = getInternalURLState(this);\n var urlString = String(href);\n var failure = parseURL(url, urlString);\n if (failure) throw TypeError(failure);\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n origin: accessorDescriptor(getOrigin),\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n protocol: accessorDescriptor(getProtocol, function (protocol) {\n var url = getInternalURLState(this);\n parseURL(url, String(protocol) + ':', SCHEME_START);\n }),\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n username: accessorDescriptor(getUsername, function (username) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(username));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n password: accessorDescriptor(getPassword, function (password) {\n var url = getInternalURLState(this);\n var codePoints = arrayFrom(String(password));\n if (cannotHaveUsernamePasswordPort(url)) return;\n url.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n }),\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n host: accessorDescriptor(getHost, function (host) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(host), HOST);\n }),\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n hostname: accessorDescriptor(getHostname, function (hostname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n parseURL(url, String(hostname), HOSTNAME);\n }),\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n port: accessorDescriptor(getPort, function (port) {\n var url = getInternalURLState(this);\n if (cannotHaveUsernamePasswordPort(url)) return;\n port = String(port);\n if (port == '') url.port = null;\n else parseURL(url, port, PORT);\n }),\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n pathname: accessorDescriptor(getPathname, function (pathname) {\n var url = getInternalURLState(this);\n if (url.cannotBeABaseURL) return;\n url.path = [];\n parseURL(url, pathname + '', PATH_START);\n }),\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n search: accessorDescriptor(getSearch, function (search) {\n var url = getInternalURLState(this);\n search = String(search);\n if (search == '') {\n url.query = null;\n } else {\n if ('?' == search.charAt(0)) search = search.slice(1);\n url.query = '';\n parseURL(url, search, QUERY);\n }\n getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query);\n }),\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n searchParams: accessorDescriptor(getSearchParams),\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n hash: accessorDescriptor(getHash, function (hash) {\n var url = getInternalURLState(this);\n hash = String(hash);\n if (hash == '') {\n url.fragment = null;\n return;\n }\n if ('#' == hash.charAt(0)) hash = hash.slice(1);\n url.fragment = '';\n parseURL(url, hash, FRAGMENT);\n })\n });\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\nredefine(URLPrototype, 'toJSON', function toJSON() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\nredefine(URLPrototype, 'toString', function toString() {\n return serializeURL.call(this);\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) {\n return nativeCreateObjectURL.apply(NativeURL, arguments);\n });\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) {\n return nativeRevokeObjectURL.apply(NativeURL, arguments);\n });\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn __webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/global */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.g = (function() {\n/******/ \t\t\tif (typeof globalThis === 'object') return globalThis;\n/******/ \t\t\ttry {\n/******/ \t\t\t\treturn this || new Function('return this')();\n/******/ \t\t\t} catch (e) {\n/******/ \t\t\t\tif (typeof window === 'object') return window;\n/******/ \t\t\t}\n/******/ \t\t})();\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t!function() {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = function(exports) {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be in strict mode.\n!function() {\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"Dropzone\": function() { return /* reexport */ Dropzone; },\n \"default\": function() { return /* binding */ dropzone_dist; }\n});\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.concat.js\nvar es_array_concat = __webpack_require__(2222);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.filter.js\nvar es_array_filter = __webpack_require__(7327);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.index-of.js\nvar es_array_index_of = __webpack_require__(2772);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.iterator.js\nvar es_array_iterator = __webpack_require__(6992);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.map.js\nvar es_array_map = __webpack_require__(1249);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.slice.js\nvar es_array_slice = __webpack_require__(7042);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.splice.js\nvar es_array_splice = __webpack_require__(561);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array-buffer.constructor.js\nvar es_array_buffer_constructor = __webpack_require__(8264);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.function.name.js\nvar es_function_name = __webpack_require__(8309);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.get-prototype-of.js\nvar es_object_get_prototype_of = __webpack_require__(489);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.to-string.js\nvar es_object_to_string = __webpack_require__(1539);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.exec.js\nvar es_regexp_exec = __webpack_require__(4916);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.regexp.to-string.js\nvar es_regexp_to_string = __webpack_require__(9714);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.iterator.js\nvar es_string_iterator = __webpack_require__(8783);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.match.js\nvar es_string_match = __webpack_require__(4723);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.replace.js\nvar es_string_replace = __webpack_require__(5306);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.split.js\nvar es_string_split = __webpack_require__(3123);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.trim.js\nvar es_string_trim = __webpack_require__(3210);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.uint8-array.js\nvar es_typed_array_uint8_array = __webpack_require__(2472);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.copy-within.js\nvar es_typed_array_copy_within = __webpack_require__(2990);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.every.js\nvar es_typed_array_every = __webpack_require__(8927);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.fill.js\nvar es_typed_array_fill = __webpack_require__(3105);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.filter.js\nvar es_typed_array_filter = __webpack_require__(5035);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.find.js\nvar es_typed_array_find = __webpack_require__(4345);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.find-index.js\nvar es_typed_array_find_index = __webpack_require__(7174);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.for-each.js\nvar es_typed_array_for_each = __webpack_require__(2846);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.includes.js\nvar es_typed_array_includes = __webpack_require__(4731);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.index-of.js\nvar es_typed_array_index_of = __webpack_require__(7209);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.iterator.js\nvar es_typed_array_iterator = __webpack_require__(6319);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.join.js\nvar es_typed_array_join = __webpack_require__(8867);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.last-index-of.js\nvar es_typed_array_last_index_of = __webpack_require__(7789);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.map.js\nvar es_typed_array_map = __webpack_require__(3739);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.reduce.js\nvar es_typed_array_reduce = __webpack_require__(9368);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.reduce-right.js\nvar es_typed_array_reduce_right = __webpack_require__(4483);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.reverse.js\nvar es_typed_array_reverse = __webpack_require__(2056);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.set.js\nvar es_typed_array_set = __webpack_require__(3462);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.slice.js\nvar es_typed_array_slice = __webpack_require__(678);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.some.js\nvar es_typed_array_some = __webpack_require__(7462);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.sort.js\nvar es_typed_array_sort = __webpack_require__(3824);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.subarray.js\nvar es_typed_array_subarray = __webpack_require__(5021);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.to-locale-string.js\nvar es_typed_array_to_locale_string = __webpack_require__(2974);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es.typed-array.to-string.js\nvar es_typed_array_to_string = __webpack_require__(5016);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-collections.for-each.js\nvar web_dom_collections_for_each = __webpack_require__(4747);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-collections.iterator.js\nvar web_dom_collections_iterator = __webpack_require__(3948);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.url.js\nvar web_url = __webpack_require__(285);\n;// CONCATENATED MODULE: ./src/emitter.js\n\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// The Emitter class provides the ability to call `.on()` on Dropzone to listen\n// to events.\n// It is strongly based on component's emitter class, and I removed the\n// functionality because of the dependency hell with different frameworks.\nvar Emitter = /*#__PURE__*/function () {\n function Emitter() {\n _classCallCheck(this, Emitter);\n }\n\n _createClass(Emitter, [{\n key: \"on\",\n value: // Add an event listener for given event\n function on(event, fn) {\n this._callbacks = this._callbacks || {}; // Create namespace for this event\n\n if (!this._callbacks[event]) {\n this._callbacks[event] = [];\n }\n\n this._callbacks[event].push(fn);\n\n return this;\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\n this._callbacks = this._callbacks || {};\n var callbacks = this._callbacks[event];\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (callbacks) {\n var _iterator = _createForOfIteratorHelper(callbacks, true),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var callback = _step.value;\n callback.apply(this, args);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n } // trigger a corresponding DOM event\n\n\n if (this.element) {\n this.element.dispatchEvent(this.makeEvent(\"dropzone:\" + event, {\n args: args\n }));\n }\n\n return this;\n }\n }, {\n key: \"makeEvent\",\n value: function makeEvent(eventName, detail) {\n var params = {\n bubbles: true,\n cancelable: true,\n detail: detail\n };\n\n if (typeof window.CustomEvent === \"function\") {\n return new CustomEvent(eventName, params);\n } else {\n // IE 11 support\n // https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent\n var evt = document.createEvent(\"CustomEvent\");\n evt.initCustomEvent(eventName, params.bubbles, params.cancelable, params.detail);\n return evt;\n }\n } // Remove event listener for given event. If fn is not provided, all event\n // listeners for that event will be removed. If neither is provided, all\n // event listeners will be removed.\n\n }, {\n key: \"off\",\n value: function off(event, fn) {\n if (!this._callbacks || arguments.length === 0) {\n this._callbacks = {};\n return this;\n } // specific event\n\n\n var callbacks = this._callbacks[event];\n\n if (!callbacks) {\n return this;\n } // remove all handlers\n\n\n if (arguments.length === 1) {\n delete this._callbacks[event];\n return this;\n } // remove specific handler\n\n\n for (var i = 0; i < callbacks.length; i++) {\n var callback = callbacks[i];\n\n if (callback === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n return this;\n }\n }]);\n\n return Emitter;\n}();\n\n\n;// CONCATENATED MODULE: ./src/preview-template.html\n// Module\nvar code = \"<div class=\\\"dz-preview dz-file-preview\\\"> <div class=\\\"dz-image\\\"><img data-dz-thumbnail/></div> <div class=\\\"dz-details\\\"> <div class=\\\"dz-size\\\"><span data-dz-size></span></div> <div class=\\\"dz-filename\\\"><span data-dz-name></span></div> </div> <div class=\\\"dz-progress\\\"> <span class=\\\"dz-upload\\\" data-dz-uploadprogress></span> </div> <div class=\\\"dz-error-message\\\"><span data-dz-errormessage></span></div> <div class=\\\"dz-success-mark\\\"> <svg width=\\\"54px\\\" height=\\\"54px\\\" viewBox=\\\"0 0 54 54\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"> <title>Check</title> <g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"> <path d=\\\"M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\\\" stroke-opacity=\\\"0.198794158\\\" stroke=\\\"#747474\\\" fill-opacity=\\\"0.816519475\\\" fill=\\\"#FFFFFF\\\"></path> </g> </svg> </div> <div class=\\\"dz-error-mark\\\"> <svg width=\\\"54px\\\" height=\\\"54px\\\" viewBox=\\\"0 0 54 54\\\" version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\"> <title>Error</title> <g stroke=\\\"none\\\" stroke-width=\\\"1\\\" fill=\\\"none\\\" fill-rule=\\\"evenodd\\\"> <g stroke=\\\"#747474\\\" stroke-opacity=\\\"0.198794158\\\" fill=\\\"#FFFFFF\\\" fill-opacity=\\\"0.816519475\\\"> <path d=\\\"M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z\\\"></path> </g> </g> </svg> </div> </div> \";\n// Exports\n/* harmony default export */ var preview_template = (code);\n;// CONCATENATED MODULE: ./src/options.js\n\n\n\n\n\nfunction options_createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = options_unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction options_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return options_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return options_arrayLikeToArray(o, minLen); }\n\nfunction options_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n\n\nvar defaultOptions = {\n /**\n * Has to be specified on elements other than form (or when the form\n * doesn't have an `action` attribute). You can also\n * provide a function that will be called with `files` and\n * must return the url (since `v3.12.0`)\n */\n url: null,\n\n /**\n * Can be changed to `\"put\"` if necessary. You can also provide a function\n * that will be called with `files` and must return the method (since `v3.12.0`).\n */\n method: \"post\",\n\n /**\n * Will be set on the XHRequest.\n */\n withCredentials: false,\n\n /**\n * The timeout for the XHR requests in milliseconds (since `v4.4.0`).\n * If set to null or 0, no timeout is going to be set.\n */\n timeout: null,\n\n /**\n * How many file uploads to process in parallel (See the\n * Enqueuing file uploads documentation section for more info)\n */\n parallelUploads: 2,\n\n /**\n * Whether to send multiple files in one request. If\n * this it set to true, then the fallback file input element will\n * have the `multiple` attribute as well. This option will\n * also trigger additional events (like `processingmultiple`). See the events\n * documentation section for more information.\n */\n uploadMultiple: false,\n\n /**\n * Whether you want files to be uploaded in chunks to your server. This can't be\n * used in combination with `uploadMultiple`.\n *\n * See [chunksUploaded](#config-chunksUploaded) for the callback to finalise an upload.\n */\n chunking: false,\n\n /**\n * If `chunking` is enabled, this defines whether **every** file should be chunked,\n * even if the file size is below chunkSize. This means, that the additional chunk\n * form data will be submitted and the `chunksUploaded` callback will be invoked.\n */\n forceChunking: false,\n\n /**\n * If `chunking` is `true`, then this defines the chunk size in bytes.\n */\n chunkSize: 2000000,\n\n /**\n * If `true`, the individual chunks of a file are being uploaded simultaneously.\n */\n parallelChunkUploads: false,\n\n /**\n * Whether a chunk should be retried if it fails.\n */\n retryChunks: false,\n\n /**\n * If `retryChunks` is true, how many times should it be retried.\n */\n retryChunksLimit: 3,\n\n /**\n * The maximum filesize (in bytes) that is allowed to be uploaded.\n */\n maxFilesize: 256,\n\n /**\n * The name of the file param that gets transferred.\n * **NOTE**: If you have the option `uploadMultiple` set to `true`, then\n * Dropzone will append `[]` to the name.\n */\n paramName: \"file\",\n\n /**\n * Whether thumbnails for images should be generated\n */\n createImageThumbnails: true,\n\n /**\n * In MB. When the filename exceeds this limit, the thumbnail will not be generated.\n */\n maxThumbnailFilesize: 10,\n\n /**\n * If `null`, the ratio of the image will be used to calculate it.\n */\n thumbnailWidth: 120,\n\n /**\n * The same as `thumbnailWidth`. If both are null, images will not be resized.\n */\n thumbnailHeight: 120,\n\n /**\n * How the images should be scaled down in case both, `thumbnailWidth` and `thumbnailHeight` are provided.\n * Can be either `contain` or `crop`.\n */\n thumbnailMethod: \"crop\",\n\n /**\n * If set, images will be resized to these dimensions before being **uploaded**.\n * If only one, `resizeWidth` **or** `resizeHeight` is provided, the original aspect\n * ratio of the file will be preserved.\n *\n * The `options.transformFile` function uses these options, so if the `transformFile` function\n * is overridden, these options don't do anything.\n */\n resizeWidth: null,\n\n /**\n * See `resizeWidth`.\n */\n resizeHeight: null,\n\n /**\n * The mime type of the resized image (before it gets uploaded to the server).\n * If `null` the original mime type will be used. To force jpeg, for example, use `image/jpeg`.\n * See `resizeWidth` for more information.\n */\n resizeMimeType: null,\n\n /**\n * The quality of the resized images. See `resizeWidth`.\n */\n resizeQuality: 0.8,\n\n /**\n * How the images should be scaled down in case both, `resizeWidth` and `resizeHeight` are provided.\n * Can be either `contain` or `crop`.\n */\n resizeMethod: \"contain\",\n\n /**\n * The base that is used to calculate the **displayed** filesize. You can\n * change this to 1024 if you would rather display kibibytes, mebibytes,\n * etc... 1024 is technically incorrect, because `1024 bytes` are `1 kibibyte`\n * not `1 kilobyte`. You can change this to `1024` if you don't care about\n * validity.\n */\n filesizeBase: 1000,\n\n /**\n * If not `null` defines how many files this Dropzone handles. If it exceeds,\n * the event `maxfilesexceeded` will be called. The dropzone element gets the\n * class `dz-max-files-reached` accordingly so you can provide visual\n * feedback.\n */\n maxFiles: null,\n\n /**\n * An optional object to send additional headers to the server. Eg:\n * `{ \"My-Awesome-Header\": \"header value\" }`\n */\n headers: null,\n\n /**\n * If `true`, the dropzone element itself will be clickable, if `false`\n * nothing will be clickable.\n *\n * You can also pass an HTML element, a CSS selector (for multiple elements)\n * or an array of those. In that case, all of those elements will trigger an\n * upload when clicked.\n */\n clickable: true,\n\n /**\n * Whether hidden files in directories should be ignored.\n */\n ignoreHiddenFiles: true,\n\n /**\n * The default implementation of `accept` checks the file's mime type or\n * extension against this list. This is a comma separated list of mime\n * types or file extensions.\n *\n * Eg.: `image/*,application/pdf,.psd`\n *\n * If the Dropzone is `clickable` this option will also be used as\n * [`accept`](https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept)\n * parameter on the hidden file input as well.\n */\n acceptedFiles: null,\n\n /**\n * **Deprecated!**\n * Use acceptedFiles instead.\n */\n acceptedMimeTypes: null,\n\n /**\n * If false, files will be added to the queue but the queue will not be\n * processed automatically.\n * This can be useful if you need some additional user input before sending\n * files (or if you want want all files sent at once).\n * If you're ready to send the file simply call `myDropzone.processQueue()`.\n *\n * See the [enqueuing file uploads](#enqueuing-file-uploads) documentation\n * section for more information.\n */\n autoProcessQueue: true,\n\n /**\n * If false, files added to the dropzone will not be queued by default.\n * You'll have to call `enqueueFile(file)` manually.\n */\n autoQueue: true,\n\n /**\n * If `true`, this will add a link to every file preview to remove or cancel (if\n * already uploading) the file. The `dictCancelUpload`, `dictCancelUploadConfirmation`\n * and `dictRemoveFile` options are used for the wording.\n */\n addRemoveLinks: false,\n\n /**\n * Defines where to display the file previews – if `null` the\n * Dropzone element itself is used. Can be a plain `HTMLElement` or a CSS\n * selector. The element should have the `dropzone-previews` class so\n * the previews are displayed properly.\n */\n previewsContainer: null,\n\n /**\n * Set this to `true` if you don't want previews to be shown.\n */\n disablePreviews: false,\n\n /**\n * This is the element the hidden input field (which is used when clicking on the\n * dropzone to trigger file selection) will be appended to. This might\n * be important in case you use frameworks to switch the content of your page.\n *\n * Can be a selector string, or an element directly.\n */\n hiddenInputContainer: \"body\",\n\n /**\n * If null, no capture type will be specified\n * If camera, mobile devices will skip the file selection and choose camera\n * If microphone, mobile devices will skip the file selection and choose the microphone\n * If camcorder, mobile devices will skip the file selection and choose the camera in video mode\n * On apple devices multiple must be set to false. AcceptedFiles may need to\n * be set to an appropriate mime type (e.g. \"image/*\", \"audio/*\", or \"video/*\").\n */\n capture: null,\n\n /**\n * **Deprecated**. Use `renameFile` instead.\n */\n renameFilename: null,\n\n /**\n * A function that is invoked before the file is uploaded to the server and renames the file.\n * This function gets the `File` as argument and can use the `file.name`. The actual name of the\n * file that gets used during the upload can be accessed through `file.upload.filename`.\n */\n renameFile: null,\n\n /**\n * If `true` the fallback will be forced. This is very useful to test your server\n * implementations first and make sure that everything works as\n * expected without dropzone if you experience problems, and to test\n * how your fallbacks will look.\n */\n forceFallback: false,\n\n /**\n * The text used before any files are dropped.\n */\n dictDefaultMessage: \"Drop files here to upload\",\n\n /**\n * The text that replaces the default message text it the browser is not supported.\n */\n dictFallbackMessage: \"Your browser does not support drag'n'drop file uploads.\",\n\n /**\n * The text that will be added before the fallback form.\n * If you provide a fallback element yourself, or if this option is `null` this will\n * be ignored.\n */\n dictFallbackText: \"Please use the fallback form below to upload your files like in the olden days.\",\n\n /**\n * If the filesize is too big.\n * `{{filesize}}` and `{{maxFilesize}}` will be replaced with the respective configuration values.\n */\n dictFileTooBig: \"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.\",\n\n /**\n * If the file doesn't match the file type.\n */\n dictInvalidFileType: \"You can't upload files of this type.\",\n\n /**\n * If the server response was invalid.\n * `{{statusCode}}` will be replaced with the servers status code.\n */\n dictResponseError: \"Server responded with {{statusCode}} code.\",\n\n /**\n * If `addRemoveLinks` is true, the text to be used for the cancel upload link.\n */\n dictCancelUpload: \"Cancel upload\",\n\n /**\n * The text that is displayed if an upload was manually canceled\n */\n dictUploadCanceled: \"Upload canceled.\",\n\n /**\n * If `addRemoveLinks` is true, the text to be used for confirmation when cancelling upload.\n */\n dictCancelUploadConfirmation: \"Are you sure you want to cancel this upload?\",\n\n /**\n * If `addRemoveLinks` is true, the text to be used to remove a file.\n */\n dictRemoveFile: \"Remove file\",\n\n /**\n * If this is not null, then the user will be prompted before removing a file.\n */\n dictRemoveFileConfirmation: null,\n\n /**\n * Displayed if `maxFiles` is st and exceeded.\n * The string `{{maxFiles}}` will be replaced by the configuration value.\n */\n dictMaxFilesExceeded: \"You can not upload any more files.\",\n\n /**\n * Allows you to translate the different units. Starting with `tb` for terabytes and going down to\n * `b` for bytes.\n */\n dictFileSizeUnits: {\n tb: \"TB\",\n gb: \"GB\",\n mb: \"MB\",\n kb: \"KB\",\n b: \"b\"\n },\n\n /**\n * Called when dropzone initialized\n * You can add event listeners here\n */\n init: function init() {},\n\n /**\n * Can be an **object** of additional parameters to transfer to the server, **or** a `Function`\n * that gets invoked with the `files`, `xhr` and, if it's a chunked upload, `chunk` arguments. In case\n * of a function, this needs to return a map.\n *\n * The default implementation does nothing for normal uploads, but adds relevant information for\n * chunked uploads.\n *\n * This is the same as adding hidden input fields in the form element.\n */\n params: function params(files, xhr, chunk) {\n if (chunk) {\n return {\n dzuuid: chunk.file.upload.uuid,\n dzchunkindex: chunk.index,\n dztotalfilesize: chunk.file.size,\n dzchunksize: this.options.chunkSize,\n dztotalchunkcount: chunk.file.upload.totalChunkCount,\n dzchunkbyteoffset: chunk.index * this.options.chunkSize\n };\n }\n },\n\n /**\n * A function that gets a [file](https://developer.mozilla.org/en-US/docs/DOM/File)\n * and a `done` function as parameters.\n *\n * If the done function is invoked without arguments, the file is \"accepted\" and will\n * be processed. If you pass an error message, the file is rejected, and the error\n * message will be displayed.\n * This function will not be called if the file is too big or doesn't match the mime types.\n */\n accept: function accept(file, done) {\n return done();\n },\n\n /**\n * The callback that will be invoked when all chunks have been uploaded for a file.\n * It gets the file for which the chunks have been uploaded as the first parameter,\n * and the `done` function as second. `done()` needs to be invoked when everything\n * needed to finish the upload process is done.\n */\n chunksUploaded: function chunksUploaded(file, done) {\n done();\n },\n\n /**\n * Gets called when the browser is not supported.\n * The default implementation shows the fallback input field and adds\n * a text.\n */\n fallback: function fallback() {\n // This code should pass in IE7... :(\n var messageElement;\n this.element.className = \"\".concat(this.element.className, \" dz-browser-not-supported\");\n\n var _iterator = options_createForOfIteratorHelper(this.element.getElementsByTagName(\"div\"), true),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var child = _step.value;\n\n if (/(^| )dz-message($| )/.test(child.className)) {\n messageElement = child;\n child.className = \"dz-message\"; // Removes the 'dz-default' class\n\n break;\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n if (!messageElement) {\n messageElement = Dropzone.createElement('<div class=\"dz-message\"><span></span></div>');\n this.element.appendChild(messageElement);\n }\n\n var span = messageElement.getElementsByTagName(\"span\")[0];\n\n if (span) {\n if (span.textContent != null) {\n span.textContent = this.options.dictFallbackMessage;\n } else if (span.innerText != null) {\n span.innerText = this.options.dictFallbackMessage;\n }\n }\n\n return this.element.appendChild(this.getFallbackForm());\n },\n\n /**\n * Gets called to calculate the thumbnail dimensions.\n *\n * It gets `file`, `width` and `height` (both may be `null`) as parameters and must return an object containing:\n *\n * - `srcWidth` & `srcHeight` (required)\n * - `trgWidth` & `trgHeight` (required)\n * - `srcX` & `srcY` (optional, default `0`)\n * - `trgX` & `trgY` (optional, default `0`)\n *\n * Those values are going to be used by `ctx.drawImage()`.\n */\n resize: function resize(file, width, height, resizeMethod) {\n var info = {\n srcX: 0,\n srcY: 0,\n srcWidth: file.width,\n srcHeight: file.height\n };\n var srcRatio = file.width / file.height; // Automatically calculate dimensions if not specified\n\n if (width == null && height == null) {\n width = info.srcWidth;\n height = info.srcHeight;\n } else if (width == null) {\n width = height * srcRatio;\n } else if (height == null) {\n height = width / srcRatio;\n } // Make sure images aren't upscaled\n\n\n width = Math.min(width, info.srcWidth);\n height = Math.min(height, info.srcHeight);\n var trgRatio = width / height;\n\n if (info.srcWidth > width || info.srcHeight > height) {\n // Image is bigger and needs rescaling\n if (resizeMethod === \"crop\") {\n if (srcRatio > trgRatio) {\n info.srcHeight = file.height;\n info.srcWidth = info.srcHeight * trgRatio;\n } else {\n info.srcWidth = file.width;\n info.srcHeight = info.srcWidth / trgRatio;\n }\n } else if (resizeMethod === \"contain\") {\n // Method 'contain'\n if (srcRatio > trgRatio) {\n height = width / srcRatio;\n } else {\n width = height * srcRatio;\n }\n } else {\n throw new Error(\"Unknown resizeMethod '\".concat(resizeMethod, \"'\"));\n }\n }\n\n info.srcX = (file.width - info.srcWidth) / 2;\n info.srcY = (file.height - info.srcHeight) / 2;\n info.trgWidth = width;\n info.trgHeight = height;\n return info;\n },\n\n /**\n * Can be used to transform the file (for example, resize an image if necessary).\n *\n * The default implementation uses `resizeWidth` and `resizeHeight` (if provided) and resizes\n * images according to those dimensions.\n *\n * Gets the `file` as the first parameter, and a `done()` function as the second, that needs\n * to be invoked with the file when the transformation is done.\n */\n transformFile: function transformFile(file, done) {\n if ((this.options.resizeWidth || this.options.resizeHeight) && file.type.match(/image.*/)) {\n return this.resizeImage(file, this.options.resizeWidth, this.options.resizeHeight, this.options.resizeMethod, done);\n } else {\n return done(file);\n }\n },\n\n /**\n * A string that contains the template used for each dropped\n * file. Change it to fulfill your needs but make sure to properly\n * provide all elements.\n *\n * If you want to use an actual HTML element instead of providing a String\n * as a config option, you could create a div with the id `tpl`,\n * put the template inside it and provide the element like this:\n *\n * document\n * .querySelector('#tpl')\n * .innerHTML\n *\n */\n previewTemplate: preview_template,\n\n /*\n Those functions register themselves to the events on init and handle all\n the user interface specific stuff. Overwriting them won't break the upload\n but can break the way it's displayed.\n You can overwrite them if you don't like the default behavior. If you just\n want to add an additional event handler, register it on the dropzone object\n and don't overwrite those options.\n */\n // Those are self explanatory and simply concern the DragnDrop.\n drop: function drop(e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n dragstart: function dragstart(e) {},\n dragend: function dragend(e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n dragenter: function dragenter(e) {\n return this.element.classList.add(\"dz-drag-hover\");\n },\n dragover: function dragover(e) {\n return this.element.classList.add(\"dz-drag-hover\");\n },\n dragleave: function dragleave(e) {\n return this.element.classList.remove(\"dz-drag-hover\");\n },\n paste: function paste(e) {},\n // Called whenever there are no files left in the dropzone anymore, and the\n // dropzone should be displayed as if in the initial state.\n reset: function reset() {\n return this.element.classList.remove(\"dz-started\");\n },\n // Called when a file is added to the queue\n // Receives `file`\n addedfile: function addedfile(file) {\n var _this = this;\n\n if (this.element === this.previewsContainer) {\n this.element.classList.add(\"dz-started\");\n }\n\n if (this.previewsContainer && !this.options.disablePreviews) {\n file.previewElement = Dropzone.createElement(this.options.previewTemplate.trim());\n file.previewTemplate = file.previewElement; // Backwards compatibility\n\n this.previewsContainer.appendChild(file.previewElement);\n\n var _iterator2 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-name]\"), true),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var node = _step2.value;\n node.textContent = file.name;\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n var _iterator3 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-size]\"), true),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n node = _step3.value;\n node.innerHTML = this.filesize(file.size);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n if (this.options.addRemoveLinks) {\n file._removeLink = Dropzone.createElement(\"<a class=\\\"dz-remove\\\" href=\\\"javascript:undefined;\\\" data-dz-remove>\".concat(this.options.dictRemoveFile, \"</a>\"));\n file.previewElement.appendChild(file._removeLink);\n }\n\n var removeFileEvent = function removeFileEvent(e) {\n e.preventDefault();\n e.stopPropagation();\n\n if (file.status === Dropzone.UPLOADING) {\n return Dropzone.confirm(_this.options.dictCancelUploadConfirmation, function () {\n return _this.removeFile(file);\n });\n } else {\n if (_this.options.dictRemoveFileConfirmation) {\n return Dropzone.confirm(_this.options.dictRemoveFileConfirmation, function () {\n return _this.removeFile(file);\n });\n } else {\n return _this.removeFile(file);\n }\n }\n };\n\n var _iterator4 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-remove]\"), true),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var removeLink = _step4.value;\n removeLink.addEventListener(\"click\", removeFileEvent);\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n },\n // Called whenever a file is removed.\n removedfile: function removedfile(file) {\n if (file.previewElement != null && file.previewElement.parentNode != null) {\n file.previewElement.parentNode.removeChild(file.previewElement);\n }\n\n return this._updateMaxFilesReachedClass();\n },\n // Called when a thumbnail has been generated\n // Receives `file` and `dataUrl`\n thumbnail: function thumbnail(file, dataUrl) {\n if (file.previewElement) {\n file.previewElement.classList.remove(\"dz-file-preview\");\n\n var _iterator5 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-thumbnail]\"), true),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var thumbnailElement = _step5.value;\n thumbnailElement.alt = file.name;\n thumbnailElement.src = dataUrl;\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n\n return setTimeout(function () {\n return file.previewElement.classList.add(\"dz-image-preview\");\n }, 1);\n }\n },\n // Called whenever an error occurs\n // Receives `file` and `message`\n error: function error(file, message) {\n if (file.previewElement) {\n file.previewElement.classList.add(\"dz-error\");\n\n if (typeof message !== \"string\" && message.error) {\n message = message.error;\n }\n\n var _iterator6 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-errormessage]\"), true),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var node = _step6.value;\n node.textContent = message;\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n }\n },\n errormultiple: function errormultiple() {},\n // Called when a file gets processed. Since there is a cue, not all added\n // files are processed immediately.\n // Receives `file`\n processing: function processing(file) {\n if (file.previewElement) {\n file.previewElement.classList.add(\"dz-processing\");\n\n if (file._removeLink) {\n return file._removeLink.innerHTML = this.options.dictCancelUpload;\n }\n }\n },\n processingmultiple: function processingmultiple() {},\n // Called whenever the upload progress gets updated.\n // Receives `file`, `progress` (percentage 0-100) and `bytesSent`.\n // To get the total number of bytes of the file, use `file.size`\n uploadprogress: function uploadprogress(file, progress, bytesSent) {\n if (file.previewElement) {\n var _iterator7 = options_createForOfIteratorHelper(file.previewElement.querySelectorAll(\"[data-dz-uploadprogress]\"), true),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var node = _step7.value;\n node.nodeName === \"PROGRESS\" ? node.value = progress : node.style.width = \"\".concat(progress, \"%\");\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n }\n },\n // Called whenever the total upload progress gets updated.\n // Called with totalUploadProgress (0-100), totalBytes and totalBytesSent\n totaluploadprogress: function totaluploadprogress() {},\n // Called just before the file is sent. Gets the `xhr` object as second\n // parameter, so you can modify it (for example to add a CSRF token) and a\n // `formData` object to add additional information.\n sending: function sending() {},\n sendingmultiple: function sendingmultiple() {},\n // When the complete upload is finished and successful\n // Receives `file`\n success: function success(file) {\n if (file.previewElement) {\n return file.previewElement.classList.add(\"dz-success\");\n }\n },\n successmultiple: function successmultiple() {},\n // When the upload is canceled.\n canceled: function canceled(file) {\n return this.emit(\"error\", file, this.options.dictUploadCanceled);\n },\n canceledmultiple: function canceledmultiple() {},\n // When the upload is finished, either with success or an error.\n // Receives `file`\n complete: function complete(file) {\n if (file._removeLink) {\n file._removeLink.innerHTML = this.options.dictRemoveFile;\n }\n\n if (file.previewElement) {\n return file.previewElement.classList.add(\"dz-complete\");\n }\n },\n completemultiple: function completemultiple() {},\n maxfilesexceeded: function maxfilesexceeded() {},\n maxfilesreached: function maxfilesreached() {},\n queuecomplete: function queuecomplete() {},\n addedfiles: function addedfiles() {}\n};\n/* harmony default export */ var src_options = (defaultOptions);\n;// CONCATENATED MODULE: ./src/dropzone.js\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction dropzone_createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = dropzone_unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction dropzone_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return dropzone_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return dropzone_arrayLikeToArray(o, minLen); }\n\nfunction dropzone_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction dropzone_classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction dropzone_defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction dropzone_createClass(Constructor, protoProps, staticProps) { if (protoProps) dropzone_defineProperties(Constructor.prototype, protoProps); if (staticProps) dropzone_defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n\n\n\nvar Dropzone = /*#__PURE__*/function (_Emitter) {\n _inherits(Dropzone, _Emitter);\n\n var _super = _createSuper(Dropzone);\n\n function Dropzone(el, options) {\n var _this;\n\n dropzone_classCallCheck(this, Dropzone);\n\n _this = _super.call(this);\n var fallback, left;\n _this.element = el; // For backwards compatibility since the version was in the prototype previously\n\n _this.version = Dropzone.version;\n _this.clickableElements = [];\n _this.listeners = [];\n _this.files = []; // All files\n\n if (typeof _this.element === \"string\") {\n _this.element = document.querySelector(_this.element);\n } // Not checking if instance of HTMLElement or Element since IE9 is extremely weird.\n\n\n if (!_this.element || _this.element.nodeType == null) {\n throw new Error(\"Invalid dropzone element.\");\n }\n\n if (_this.element.dropzone) {\n throw new Error(\"Dropzone already attached.\");\n } // Now add this dropzone to the instances.\n\n\n Dropzone.instances.push(_assertThisInitialized(_this)); // Put the dropzone inside the element itself.\n\n _this.element.dropzone = _assertThisInitialized(_this);\n var elementOptions = (left = Dropzone.optionsForElement(_this.element)) != null ? left : {};\n _this.options = Dropzone.extend({}, src_options, elementOptions, options != null ? options : {});\n _this.options.previewTemplate = _this.options.previewTemplate.replace(/\\n*/g, \"\"); // If the browser failed, just call the fallback and leave\n\n if (_this.options.forceFallback || !Dropzone.isBrowserSupported()) {\n return _possibleConstructorReturn(_this, _this.options.fallback.call(_assertThisInitialized(_this)));\n } // @options.url = @element.getAttribute \"action\" unless @options.url?\n\n\n if (_this.options.url == null) {\n _this.options.url = _this.element.getAttribute(\"action\");\n }\n\n if (!_this.options.url) {\n throw new Error(\"No URL provided.\");\n }\n\n if (_this.options.acceptedFiles && _this.options.acceptedMimeTypes) {\n throw new Error(\"You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.\");\n }\n\n if (_this.options.uploadMultiple && _this.options.chunking) {\n throw new Error(\"You cannot set both: uploadMultiple and chunking.\");\n } // Backwards compatibility\n\n\n if (_this.options.acceptedMimeTypes) {\n _this.options.acceptedFiles = _this.options.acceptedMimeTypes;\n delete _this.options.acceptedMimeTypes;\n } // Backwards compatibility\n\n\n if (_this.options.renameFilename != null) {\n _this.options.renameFile = function (file) {\n return _this.options.renameFilename.call(_assertThisInitialized(_this), file.name, file);\n };\n }\n\n if (typeof _this.options.method === \"string\") {\n _this.options.method = _this.options.method.toUpperCase();\n }\n\n if ((fallback = _this.getExistingFallback()) && fallback.parentNode) {\n // Remove the fallback\n fallback.parentNode.removeChild(fallback);\n } // Display previews in the previewsContainer element or the Dropzone element unless explicitly set to false\n\n\n if (_this.options.previewsContainer !== false) {\n if (_this.options.previewsContainer) {\n _this.previewsContainer = Dropzone.getElement(_this.options.previewsContainer, \"previewsContainer\");\n } else {\n _this.previewsContainer = _this.element;\n }\n }\n\n if (_this.options.clickable) {\n if (_this.options.clickable === true) {\n _this.clickableElements = [_this.element];\n } else {\n _this.clickableElements = Dropzone.getElements(_this.options.clickable, \"clickable\");\n }\n }\n\n _this.init();\n\n return _this;\n } // Returns all files that have been accepted\n\n\n dropzone_createClass(Dropzone, [{\n key: \"getAcceptedFiles\",\n value: function getAcceptedFiles() {\n return this.files.filter(function (file) {\n return file.accepted;\n }).map(function (file) {\n return file;\n });\n } // Returns all files that have been rejected\n // Not sure when that's going to be useful, but added for completeness.\n\n }, {\n key: \"getRejectedFiles\",\n value: function getRejectedFiles() {\n return this.files.filter(function (file) {\n return !file.accepted;\n }).map(function (file) {\n return file;\n });\n }\n }, {\n key: \"getFilesWithStatus\",\n value: function getFilesWithStatus(status) {\n return this.files.filter(function (file) {\n return file.status === status;\n }).map(function (file) {\n return file;\n });\n } // Returns all files that are in the queue\n\n }, {\n key: \"getQueuedFiles\",\n value: function getQueuedFiles() {\n return this.getFilesWithStatus(Dropzone.QUEUED);\n }\n }, {\n key: \"getUploadingFiles\",\n value: function getUploadingFiles() {\n return this.getFilesWithStatus(Dropzone.UPLOADING);\n }\n }, {\n key: \"getAddedFiles\",\n value: function getAddedFiles() {\n return this.getFilesWithStatus(Dropzone.ADDED);\n } // Files that are either queued or uploading\n\n }, {\n key: \"getActiveFiles\",\n value: function getActiveFiles() {\n return this.files.filter(function (file) {\n return file.status === Dropzone.UPLOADING || file.status === Dropzone.QUEUED;\n }).map(function (file) {\n return file;\n });\n } // The function that gets called when Dropzone is initialized. You\n // can (and should) setup event listeners inside this function.\n\n }, {\n key: \"init\",\n value: function init() {\n var _this2 = this;\n\n // In case it isn't set already\n if (this.element.tagName === \"form\") {\n this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n }\n\n if (this.element.classList.contains(\"dropzone\") && !this.element.querySelector(\".dz-message\")) {\n this.element.appendChild(Dropzone.createElement(\"<div class=\\\"dz-default dz-message\\\"><button class=\\\"dz-button\\\" type=\\\"button\\\">\".concat(this.options.dictDefaultMessage, \"</button></div>\")));\n }\n\n if (this.clickableElements.length) {\n var setupHiddenFileInput = function setupHiddenFileInput() {\n if (_this2.hiddenFileInput) {\n _this2.hiddenFileInput.parentNode.removeChild(_this2.hiddenFileInput);\n }\n\n _this2.hiddenFileInput = document.createElement(\"input\");\n\n _this2.hiddenFileInput.setAttribute(\"type\", \"file\");\n\n if (_this2.options.maxFiles === null || _this2.options.maxFiles > 1) {\n _this2.hiddenFileInput.setAttribute(\"multiple\", \"multiple\");\n }\n\n _this2.hiddenFileInput.className = \"dz-hidden-input\";\n\n if (_this2.options.acceptedFiles !== null) {\n _this2.hiddenFileInput.setAttribute(\"accept\", _this2.options.acceptedFiles);\n }\n\n if (_this2.options.capture !== null) {\n _this2.hiddenFileInput.setAttribute(\"capture\", _this2.options.capture);\n } // Making sure that no one can \"tab\" into this field.\n\n\n _this2.hiddenFileInput.setAttribute(\"tabindex\", \"-1\"); // Not setting `display=\"none\"` because some browsers don't accept clicks\n // on elements that aren't displayed.\n\n\n _this2.hiddenFileInput.style.visibility = \"hidden\";\n _this2.hiddenFileInput.style.position = \"absolute\";\n _this2.hiddenFileInput.style.top = \"0\";\n _this2.hiddenFileInput.style.left = \"0\";\n _this2.hiddenFileInput.style.height = \"0\";\n _this2.hiddenFileInput.style.width = \"0\";\n Dropzone.getElement(_this2.options.hiddenInputContainer, \"hiddenInputContainer\").appendChild(_this2.hiddenFileInput);\n\n _this2.hiddenFileInput.addEventListener(\"change\", function () {\n var files = _this2.hiddenFileInput.files;\n\n if (files.length) {\n var _iterator = dropzone_createForOfIteratorHelper(files, true),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var file = _step.value;\n\n _this2.addFile(file);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n\n _this2.emit(\"addedfiles\", files);\n\n setupHiddenFileInput();\n });\n };\n\n setupHiddenFileInput();\n }\n\n this.URL = window.URL !== null ? window.URL : window.webkitURL; // Setup all event listeners on the Dropzone object itself.\n // They're not in @setupEventListeners() because they shouldn't be removed\n // again when the dropzone gets disabled.\n\n var _iterator2 = dropzone_createForOfIteratorHelper(this.events, true),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var eventName = _step2.value;\n this.on(eventName, this.options[eventName]);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n\n this.on(\"uploadprogress\", function () {\n return _this2.updateTotalUploadProgress();\n });\n this.on(\"removedfile\", function () {\n return _this2.updateTotalUploadProgress();\n });\n this.on(\"canceled\", function (file) {\n return _this2.emit(\"complete\", file);\n }); // Emit a `queuecomplete` event if all files finished uploading.\n\n this.on(\"complete\", function (file) {\n if (_this2.getAddedFiles().length === 0 && _this2.getUploadingFiles().length === 0 && _this2.getQueuedFiles().length === 0) {\n // This needs to be deferred so that `queuecomplete` really triggers after `complete`\n return setTimeout(function () {\n return _this2.emit(\"queuecomplete\");\n }, 0);\n }\n });\n\n var containsFiles = function containsFiles(e) {\n if (e.dataTransfer.types) {\n // Because e.dataTransfer.types is an Object in\n // IE, we need to iterate like this instead of\n // using e.dataTransfer.types.some()\n for (var i = 0; i < e.dataTransfer.types.length; i++) {\n if (e.dataTransfer.types[i] === \"Files\") return true;\n }\n }\n\n return false;\n };\n\n var noPropagation = function noPropagation(e) {\n // If there are no files, we don't want to stop\n // propagation so we don't interfere with other\n // drag and drop behaviour.\n if (!containsFiles(e)) return;\n e.stopPropagation();\n\n if (e.preventDefault) {\n return e.preventDefault();\n } else {\n return e.returnValue = false;\n }\n }; // Create the listeners\n\n\n this.listeners = [{\n element: this.element,\n events: {\n dragstart: function dragstart(e) {\n return _this2.emit(\"dragstart\", e);\n },\n dragenter: function dragenter(e) {\n noPropagation(e);\n return _this2.emit(\"dragenter\", e);\n },\n dragover: function dragover(e) {\n // Makes it possible to drag files from chrome's download bar\n // http://stackoverflow.com/questions/19526430/drag-and-drop-file-uploads-from-chrome-downloads-bar\n // Try is required to prevent bug in Internet Explorer 11 (SCRIPT65535 exception)\n var efct;\n\n try {\n efct = e.dataTransfer.effectAllowed;\n } catch (error) {}\n\n e.dataTransfer.dropEffect = \"move\" === efct || \"linkMove\" === efct ? \"move\" : \"copy\";\n noPropagation(e);\n return _this2.emit(\"dragover\", e);\n },\n dragleave: function dragleave(e) {\n return _this2.emit(\"dragleave\", e);\n },\n drop: function drop(e) {\n noPropagation(e);\n return _this2.drop(e);\n },\n dragend: function dragend(e) {\n return _this2.emit(\"dragend\", e);\n }\n } // This is disabled right now, because the browsers don't implement it properly.\n // \"paste\": (e) =>\n // noPropagation e\n // @paste e\n\n }];\n this.clickableElements.forEach(function (clickableElement) {\n return _this2.listeners.push({\n element: clickableElement,\n events: {\n click: function click(evt) {\n // Only the actual dropzone or the message element should trigger file selection\n if (clickableElement !== _this2.element || evt.target === _this2.element || Dropzone.elementInside(evt.target, _this2.element.querySelector(\".dz-message\"))) {\n _this2.hiddenFileInput.click(); // Forward the click\n\n }\n\n return true;\n }\n }\n });\n });\n this.enable();\n return this.options.init.call(this);\n } // Not fully tested yet\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.disable();\n this.removeAllFiles(true);\n\n if (this.hiddenFileInput != null ? this.hiddenFileInput.parentNode : undefined) {\n this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\n this.hiddenFileInput = null;\n }\n\n delete this.element.dropzone;\n return Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1);\n }\n }, {\n key: \"updateTotalUploadProgress\",\n value: function updateTotalUploadProgress() {\n var totalUploadProgress;\n var totalBytesSent = 0;\n var totalBytes = 0;\n var activeFiles = this.getActiveFiles();\n\n if (activeFiles.length) {\n var _iterator3 = dropzone_createForOfIteratorHelper(this.getActiveFiles(), true),\n _step3;\n\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var file = _step3.value;\n totalBytesSent += file.upload.bytesSent;\n totalBytes += file.upload.total;\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n\n totalUploadProgress = 100 * totalBytesSent / totalBytes;\n } else {\n totalUploadProgress = 100;\n }\n\n return this.emit(\"totaluploadprogress\", totalUploadProgress, totalBytes, totalBytesSent);\n } // @options.paramName can be a function taking one parameter rather than a string.\n // A parameter name for a file is obtained simply by calling this with an index number.\n\n }, {\n key: \"_getParamName\",\n value: function _getParamName(n) {\n if (typeof this.options.paramName === \"function\") {\n return this.options.paramName(n);\n } else {\n return \"\".concat(this.options.paramName).concat(this.options.uploadMultiple ? \"[\".concat(n, \"]\") : \"\");\n }\n } // If @options.renameFile is a function,\n // the function will be used to rename the file.name before appending it to the formData\n\n }, {\n key: \"_renameFile\",\n value: function _renameFile(file) {\n if (typeof this.options.renameFile !== \"function\") {\n return file.name;\n }\n\n return this.options.renameFile(file);\n } // Returns a form that can be used as fallback if the browser does not support DragnDrop\n //\n // If the dropzone is already a form, only the input field and button are returned. Otherwise a complete form element is provided.\n // This code has to pass in IE7 :(\n\n }, {\n key: \"getFallbackForm\",\n value: function getFallbackForm() {\n var existingFallback, form;\n\n if (existingFallback = this.getExistingFallback()) {\n return existingFallback;\n }\n\n var fieldsString = '<div class=\"dz-fallback\">';\n\n if (this.options.dictFallbackText) {\n fieldsString += \"<p>\".concat(this.options.dictFallbackText, \"</p>\");\n }\n\n fieldsString += \"<input type=\\\"file\\\" name=\\\"\".concat(this._getParamName(0), \"\\\" \").concat(this.options.uploadMultiple ? 'multiple=\"multiple\"' : undefined, \" /><input type=\\\"submit\\\" value=\\\"Upload!\\\"></div>\");\n var fields = Dropzone.createElement(fieldsString);\n\n if (this.element.tagName !== \"FORM\") {\n form = Dropzone.createElement(\"<form action=\\\"\".concat(this.options.url, \"\\\" enctype=\\\"multipart/form-data\\\" method=\\\"\").concat(this.options.method, \"\\\"></form>\"));\n form.appendChild(fields);\n } else {\n // Make sure that the enctype and method attributes are set properly\n this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n this.element.setAttribute(\"method\", this.options.method);\n }\n\n return form != null ? form : fields;\n } // Returns the fallback elements if they exist already\n //\n // This code has to pass in IE7 :(\n\n }, {\n key: \"getExistingFallback\",\n value: function getExistingFallback() {\n var getFallback = function getFallback(elements) {\n var _iterator4 = dropzone_createForOfIteratorHelper(elements, true),\n _step4;\n\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var el = _step4.value;\n\n if (/(^| )fallback($| )/.test(el.className)) {\n return el;\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n };\n\n for (var _i = 0, _arr = [\"div\", \"form\"]; _i < _arr.length; _i++) {\n var tagName = _arr[_i];\n var fallback;\n\n if (fallback = getFallback(this.element.getElementsByTagName(tagName))) {\n return fallback;\n }\n }\n } // Activates all listeners stored in @listeners\n\n }, {\n key: \"setupEventListeners\",\n value: function setupEventListeners() {\n return this.listeners.map(function (elementListeners) {\n return function () {\n var result = [];\n\n for (var event in elementListeners.events) {\n var listener = elementListeners.events[event];\n result.push(elementListeners.element.addEventListener(event, listener, false));\n }\n\n return result;\n }();\n });\n } // Deactivates all listeners stored in @listeners\n\n }, {\n key: \"removeEventListeners\",\n value: function removeEventListeners() {\n return this.listeners.map(function (elementListeners) {\n return function () {\n var result = [];\n\n for (var event in elementListeners.events) {\n var listener = elementListeners.events[event];\n result.push(elementListeners.element.removeEventListener(event, listener, false));\n }\n\n return result;\n }();\n });\n } // Removes all event listeners and cancels all files in the queue or being processed.\n\n }, {\n key: \"disable\",\n value: function disable() {\n var _this3 = this;\n\n this.clickableElements.forEach(function (element) {\n return element.classList.remove(\"dz-clickable\");\n });\n this.removeEventListeners();\n this.disabled = true;\n return this.files.map(function (file) {\n return _this3.cancelUpload(file);\n });\n }\n }, {\n key: \"enable\",\n value: function enable() {\n delete this.disabled;\n this.clickableElements.forEach(function (element) {\n return element.classList.add(\"dz-clickable\");\n });\n return this.setupEventListeners();\n } // Returns a nicely formatted filesize\n\n }, {\n key: \"filesize\",\n value: function filesize(size) {\n var selectedSize = 0;\n var selectedUnit = \"b\";\n\n if (size > 0) {\n var units = [\"tb\", \"gb\", \"mb\", \"kb\", \"b\"];\n\n for (var i = 0; i < units.length; i++) {\n var unit = units[i];\n var cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10;\n\n if (size >= cutoff) {\n selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i);\n selectedUnit = unit;\n break;\n }\n }\n\n selectedSize = Math.round(10 * selectedSize) / 10; // Cutting of digits\n }\n\n return \"<strong>\".concat(selectedSize, \"</strong> \").concat(this.options.dictFileSizeUnits[selectedUnit]);\n } // Adds or removes the `dz-max-files-reached` class from the form.\n\n }, {\n key: \"_updateMaxFilesReachedClass\",\n value: function _updateMaxFilesReachedClass() {\n if (this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles) {\n if (this.getAcceptedFiles().length === this.options.maxFiles) {\n this.emit(\"maxfilesreached\", this.files);\n }\n\n return this.element.classList.add(\"dz-max-files-reached\");\n } else {\n return this.element.classList.remove(\"dz-max-files-reached\");\n }\n }\n }, {\n key: \"drop\",\n value: function drop(e) {\n if (!e.dataTransfer) {\n return;\n }\n\n this.emit(\"drop\", e); // Convert the FileList to an Array\n // This is necessary for IE11\n\n var files = [];\n\n for (var i = 0; i < e.dataTransfer.files.length; i++) {\n files[i] = e.dataTransfer.files[i];\n } // Even if it's a folder, files.length will contain the folders.\n\n\n if (files.length) {\n var items = e.dataTransfer.items;\n\n if (items && items.length && items[0].webkitGetAsEntry != null) {\n // The browser supports dropping of folders, so handle items instead of files\n this._addFilesFromItems(items);\n } else {\n this.handleFiles(files);\n }\n }\n\n this.emit(\"addedfiles\", files);\n }\n }, {\n key: \"paste\",\n value: function paste(e) {\n if (__guard__(e != null ? e.clipboardData : undefined, function (x) {\n return x.items;\n }) == null) {\n return;\n }\n\n this.emit(\"paste\", e);\n var items = e.clipboardData.items;\n\n if (items.length) {\n return this._addFilesFromItems(items);\n }\n }\n }, {\n key: \"handleFiles\",\n value: function handleFiles(files) {\n var _iterator5 = dropzone_createForOfIteratorHelper(files, true),\n _step5;\n\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var file = _step5.value;\n this.addFile(file);\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n } // When a folder is dropped (or files are pasted), items must be handled\n // instead of files.\n\n }, {\n key: \"_addFilesFromItems\",\n value: function _addFilesFromItems(items) {\n var _this4 = this;\n\n return function () {\n var result = [];\n\n var _iterator6 = dropzone_createForOfIteratorHelper(items, true),\n _step6;\n\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var item = _step6.value;\n var entry;\n\n if (item.webkitGetAsEntry != null && (entry = item.webkitGetAsEntry())) {\n if (entry.isFile) {\n result.push(_this4.addFile(item.getAsFile()));\n } else if (entry.isDirectory) {\n // Append all files from that directory to files\n result.push(_this4._addFilesFromDirectory(entry, entry.name));\n } else {\n result.push(undefined);\n }\n } else if (item.getAsFile != null) {\n if (item.kind == null || item.kind === \"file\") {\n result.push(_this4.addFile(item.getAsFile()));\n } else {\n result.push(undefined);\n }\n } else {\n result.push(undefined);\n }\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n\n return result;\n }();\n } // Goes through the directory, and adds each file it finds recursively\n\n }, {\n key: \"_addFilesFromDirectory\",\n value: function _addFilesFromDirectory(directory, path) {\n var _this5 = this;\n\n var dirReader = directory.createReader();\n\n var errorHandler = function errorHandler(error) {\n return __guardMethod__(console, \"log\", function (o) {\n return o.log(error);\n });\n };\n\n var readEntries = function readEntries() {\n return dirReader.readEntries(function (entries) {\n if (entries.length > 0) {\n var _iterator7 = dropzone_createForOfIteratorHelper(entries, true),\n _step7;\n\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var entry = _step7.value;\n\n if (entry.isFile) {\n entry.file(function (file) {\n if (_this5.options.ignoreHiddenFiles && file.name.substring(0, 1) === \".\") {\n return;\n }\n\n file.fullPath = \"\".concat(path, \"/\").concat(file.name);\n return _this5.addFile(file);\n });\n } else if (entry.isDirectory) {\n _this5._addFilesFromDirectory(entry, \"\".concat(path, \"/\").concat(entry.name));\n }\n } // Recursively call readEntries() again, since browser only handle\n // the first 100 entries.\n // See: https://developer.mozilla.org/en-US/docs/Web/API/DirectoryReader#readEntries\n\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n\n readEntries();\n }\n\n return null;\n }, errorHandler);\n };\n\n return readEntries();\n } // If `done()` is called without argument the file is accepted\n // If you call it with an error message, the file is rejected\n // (This allows for asynchronous validation)\n //\n // This function checks the filesize, and if the file.type passes the\n // `acceptedFiles` check.\n\n }, {\n key: \"accept\",\n value: function accept(file, done) {\n if (this.options.maxFilesize && file.size > this.options.maxFilesize * 1024 * 1024) {\n done(this.options.dictFileTooBig.replace(\"{{filesize}}\", Math.round(file.size / 1024 / 10.24) / 100).replace(\"{{maxFilesize}}\", this.options.maxFilesize));\n } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) {\n done(this.options.dictInvalidFileType);\n } else if (this.options.maxFiles != null && this.getAcceptedFiles().length >= this.options.maxFiles) {\n done(this.options.dictMaxFilesExceeded.replace(\"{{maxFiles}}\", this.options.maxFiles));\n this.emit(\"maxfilesexceeded\", file);\n } else {\n this.options.accept.call(this, file, done);\n }\n }\n }, {\n key: \"addFile\",\n value: function addFile(file) {\n var _this6 = this;\n\n file.upload = {\n uuid: Dropzone.uuidv4(),\n progress: 0,\n // Setting the total upload size to file.size for the beginning\n // It's actual different than the size to be transmitted.\n total: file.size,\n bytesSent: 0,\n filename: this._renameFile(file) // Not setting chunking information here, because the acutal data — and\n // thus the chunks — might change if `options.transformFile` is set\n // and does something to the data.\n\n };\n this.files.push(file);\n file.status = Dropzone.ADDED;\n this.emit(\"addedfile\", file);\n\n this._enqueueThumbnail(file);\n\n this.accept(file, function (error) {\n if (error) {\n file.accepted = false;\n\n _this6._errorProcessing([file], error); // Will set the file.status\n\n } else {\n file.accepted = true;\n\n if (_this6.options.autoQueue) {\n _this6.enqueueFile(file);\n } // Will set .accepted = true\n\n }\n\n _this6._updateMaxFilesReachedClass();\n });\n } // Wrapper for enqueueFile\n\n }, {\n key: \"enqueueFiles\",\n value: function enqueueFiles(files) {\n var _iterator8 = dropzone_createForOfIteratorHelper(files, true),\n _step8;\n\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var file = _step8.value;\n this.enqueueFile(file);\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n\n return null;\n }\n }, {\n key: \"enqueueFile\",\n value: function enqueueFile(file) {\n var _this7 = this;\n\n if (file.status === Dropzone.ADDED && file.accepted === true) {\n file.status = Dropzone.QUEUED;\n\n if (this.options.autoProcessQueue) {\n return setTimeout(function () {\n return _this7.processQueue();\n }, 0); // Deferring the call\n }\n } else {\n throw new Error(\"This file can't be queued because it has already been processed or was rejected.\");\n }\n }\n }, {\n key: \"_enqueueThumbnail\",\n value: function _enqueueThumbnail(file) {\n var _this8 = this;\n\n if (this.options.createImageThumbnails && file.type.match(/image.*/) && file.size <= this.options.maxThumbnailFilesize * 1024 * 1024) {\n this._thumbnailQueue.push(file);\n\n return setTimeout(function () {\n return _this8._processThumbnailQueue();\n }, 0); // Deferring the call\n }\n }\n }, {\n key: \"_processThumbnailQueue\",\n value: function _processThumbnailQueue() {\n var _this9 = this;\n\n if (this._processingThumbnail || this._thumbnailQueue.length === 0) {\n return;\n }\n\n this._processingThumbnail = true;\n\n var file = this._thumbnailQueue.shift();\n\n return this.createThumbnail(file, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.thumbnailMethod, true, function (dataUrl) {\n _this9.emit(\"thumbnail\", file, dataUrl);\n\n _this9._processingThumbnail = false;\n return _this9._processThumbnailQueue();\n });\n } // Can be called by the user to remove a file\n\n }, {\n key: \"removeFile\",\n value: function removeFile(file) {\n if (file.status === Dropzone.UPLOADING) {\n this.cancelUpload(file);\n }\n\n this.files = without(this.files, file);\n this.emit(\"removedfile\", file);\n\n if (this.files.length === 0) {\n return this.emit(\"reset\");\n }\n } // Removes all files that aren't currently processed from the list\n\n }, {\n key: \"removeAllFiles\",\n value: function removeAllFiles(cancelIfNecessary) {\n // Create a copy of files since removeFile() changes the @files array.\n if (cancelIfNecessary == null) {\n cancelIfNecessary = false;\n }\n\n var _iterator9 = dropzone_createForOfIteratorHelper(this.files.slice(), true),\n _step9;\n\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n var file = _step9.value;\n\n if (file.status !== Dropzone.UPLOADING || cancelIfNecessary) {\n this.removeFile(file);\n }\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n\n return null;\n } // Resizes an image before it gets sent to the server. This function is the default behavior of\n // `options.transformFile` if `resizeWidth` or `resizeHeight` are set. The callback is invoked with\n // the resized blob.\n\n }, {\n key: \"resizeImage\",\n value: function resizeImage(file, width, height, resizeMethod, callback) {\n var _this10 = this;\n\n return this.createThumbnail(file, width, height, resizeMethod, true, function (dataUrl, canvas) {\n if (canvas == null) {\n // The image has not been resized\n return callback(file);\n } else {\n var resizeMimeType = _this10.options.resizeMimeType;\n\n if (resizeMimeType == null) {\n resizeMimeType = file.type;\n }\n\n var resizedDataURL = canvas.toDataURL(resizeMimeType, _this10.options.resizeQuality);\n\n if (resizeMimeType === \"image/jpeg\" || resizeMimeType === \"image/jpg\") {\n // Now add the original EXIF information\n resizedDataURL = ExifRestore.restore(file.dataURL, resizedDataURL);\n }\n\n return callback(Dropzone.dataURItoBlob(resizedDataURL));\n }\n });\n }\n }, {\n key: \"createThumbnail\",\n value: function createThumbnail(file, width, height, resizeMethod, fixOrientation, callback) {\n var _this11 = this;\n\n var fileReader = new FileReader();\n\n fileReader.onload = function () {\n file.dataURL = fileReader.result; // Don't bother creating a thumbnail for SVG images since they're vector\n\n if (file.type === \"image/svg+xml\") {\n if (callback != null) {\n callback(fileReader.result);\n }\n\n return;\n }\n\n _this11.createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback);\n };\n\n fileReader.readAsDataURL(file);\n } // `mockFile` needs to have these attributes:\n //\n // { name: 'name', size: 12345, imageUrl: '' }\n //\n // `callback` will be invoked when the image has been downloaded and displayed.\n // `crossOrigin` will be added to the `img` tag when accessing the file.\n\n }, {\n key: \"displayExistingFile\",\n value: function displayExistingFile(mockFile, imageUrl, callback, crossOrigin) {\n var _this12 = this;\n\n var resizeThumbnail = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n this.emit(\"addedfile\", mockFile);\n this.emit(\"complete\", mockFile);\n\n if (!resizeThumbnail) {\n this.emit(\"thumbnail\", mockFile, imageUrl);\n if (callback) callback();\n } else {\n var onDone = function onDone(thumbnail) {\n _this12.emit(\"thumbnail\", mockFile, thumbnail);\n\n if (callback) callback();\n };\n\n mockFile.dataURL = imageUrl;\n this.createThumbnailFromUrl(mockFile, this.options.thumbnailWidth, this.options.thumbnailHeight, this.options.thumbnailMethod, this.options.fixOrientation, onDone, crossOrigin);\n }\n }\n }, {\n key: \"createThumbnailFromUrl\",\n value: function createThumbnailFromUrl(file, width, height, resizeMethod, fixOrientation, callback, crossOrigin) {\n var _this13 = this;\n\n // Not using `new Image` here because of a bug in latest Chrome versions.\n // See https://github.com/enyo/dropzone/pull/226\n var img = document.createElement(\"img\");\n\n if (crossOrigin) {\n img.crossOrigin = crossOrigin;\n } // fixOrientation is not needed anymore with browsers handling imageOrientation\n\n\n fixOrientation = getComputedStyle(document.body)[\"imageOrientation\"] == \"from-image\" ? false : fixOrientation;\n\n img.onload = function () {\n var loadExif = function loadExif(callback) {\n return callback(1);\n };\n\n if (typeof EXIF !== \"undefined\" && EXIF !== null && fixOrientation) {\n loadExif = function loadExif(callback) {\n return EXIF.getData(img, function () {\n return callback(EXIF.getTag(this, \"Orientation\"));\n });\n };\n }\n\n return loadExif(function (orientation) {\n file.width = img.width;\n file.height = img.height;\n\n var resizeInfo = _this13.options.resize.call(_this13, file, width, height, resizeMethod);\n\n var canvas = document.createElement(\"canvas\");\n var ctx = canvas.getContext(\"2d\");\n canvas.width = resizeInfo.trgWidth;\n canvas.height = resizeInfo.trgHeight;\n\n if (orientation > 4) {\n canvas.width = resizeInfo.trgHeight;\n canvas.height = resizeInfo.trgWidth;\n }\n\n switch (orientation) {\n case 2:\n // horizontal flip\n ctx.translate(canvas.width, 0);\n ctx.scale(-1, 1);\n break;\n\n case 3:\n // 180° rotate left\n ctx.translate(canvas.width, canvas.height);\n ctx.rotate(Math.PI);\n break;\n\n case 4:\n // vertical flip\n ctx.translate(0, canvas.height);\n ctx.scale(1, -1);\n break;\n\n case 5:\n // vertical flip + 90 rotate right\n ctx.rotate(0.5 * Math.PI);\n ctx.scale(1, -1);\n break;\n\n case 6:\n // 90° rotate right\n ctx.rotate(0.5 * Math.PI);\n ctx.translate(0, -canvas.width);\n break;\n\n case 7:\n // horizontal flip + 90 rotate right\n ctx.rotate(0.5 * Math.PI);\n ctx.translate(canvas.height, -canvas.width);\n ctx.scale(-1, 1);\n break;\n\n case 8:\n // 90° rotate left\n ctx.rotate(-0.5 * Math.PI);\n ctx.translate(-canvas.height, 0);\n break;\n } // This is a bugfix for iOS' scaling bug.\n\n\n drawImageIOSFix(ctx, img, resizeInfo.srcX != null ? resizeInfo.srcX : 0, resizeInfo.srcY != null ? resizeInfo.srcY : 0, resizeInfo.srcWidth, resizeInfo.srcHeight, resizeInfo.trgX != null ? resizeInfo.trgX : 0, resizeInfo.trgY != null ? resizeInfo.trgY : 0, resizeInfo.trgWidth, resizeInfo.trgHeight);\n var thumbnail = canvas.toDataURL(\"image/png\");\n\n if (callback != null) {\n return callback(thumbnail, canvas);\n }\n });\n };\n\n if (callback != null) {\n img.onerror = callback;\n }\n\n return img.src = file.dataURL;\n } // Goes through the queue and processes files if there aren't too many already.\n\n }, {\n key: \"processQueue\",\n value: function processQueue() {\n var parallelUploads = this.options.parallelUploads;\n var processingLength = this.getUploadingFiles().length;\n var i = processingLength; // There are already at least as many files uploading than should be\n\n if (processingLength >= parallelUploads) {\n return;\n }\n\n var queuedFiles = this.getQueuedFiles();\n\n if (!(queuedFiles.length > 0)) {\n return;\n }\n\n if (this.options.uploadMultiple) {\n // The files should be uploaded in one request\n return this.processFiles(queuedFiles.slice(0, parallelUploads - processingLength));\n } else {\n while (i < parallelUploads) {\n if (!queuedFiles.length) {\n return;\n } // Nothing left to process\n\n\n this.processFile(queuedFiles.shift());\n i++;\n }\n }\n } // Wrapper for `processFiles`\n\n }, {\n key: \"processFile\",\n value: function processFile(file) {\n return this.processFiles([file]);\n } // Loads the file, then calls finishedLoading()\n\n }, {\n key: \"processFiles\",\n value: function processFiles(files) {\n var _iterator10 = dropzone_createForOfIteratorHelper(files, true),\n _step10;\n\n try {\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n var file = _step10.value;\n file.processing = true; // Backwards compatibility\n\n file.status = Dropzone.UPLOADING;\n this.emit(\"processing\", file);\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.f();\n }\n\n if (this.options.uploadMultiple) {\n this.emit(\"processingmultiple\", files);\n }\n\n return this.uploadFiles(files);\n }\n }, {\n key: \"_getFilesWithXhr\",\n value: function _getFilesWithXhr(xhr) {\n var files;\n return files = this.files.filter(function (file) {\n return file.xhr === xhr;\n }).map(function (file) {\n return file;\n });\n } // Cancels the file upload and sets the status to CANCELED\n // **if** the file is actually being uploaded.\n // If it's still in the queue, the file is being removed from it and the status\n // set to CANCELED.\n\n }, {\n key: \"cancelUpload\",\n value: function cancelUpload(file) {\n if (file.status === Dropzone.UPLOADING) {\n var groupedFiles = this._getFilesWithXhr(file.xhr);\n\n var _iterator11 = dropzone_createForOfIteratorHelper(groupedFiles, true),\n _step11;\n\n try {\n for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n var groupedFile = _step11.value;\n groupedFile.status = Dropzone.CANCELED;\n }\n } catch (err) {\n _iterator11.e(err);\n } finally {\n _iterator11.f();\n }\n\n if (typeof file.xhr !== \"undefined\") {\n file.xhr.abort();\n }\n\n var _iterator12 = dropzone_createForOfIteratorHelper(groupedFiles, true),\n _step12;\n\n try {\n for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {\n var _groupedFile = _step12.value;\n this.emit(\"canceled\", _groupedFile);\n }\n } catch (err) {\n _iterator12.e(err);\n } finally {\n _iterator12.f();\n }\n\n if (this.options.uploadMultiple) {\n this.emit(\"canceledmultiple\", groupedFiles);\n }\n } else if (file.status === Dropzone.ADDED || file.status === Dropzone.QUEUED) {\n file.status = Dropzone.CANCELED;\n this.emit(\"canceled\", file);\n\n if (this.options.uploadMultiple) {\n this.emit(\"canceledmultiple\", [file]);\n }\n }\n\n if (this.options.autoProcessQueue) {\n return this.processQueue();\n }\n }\n }, {\n key: \"resolveOption\",\n value: function resolveOption(option) {\n if (typeof option === \"function\") {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return option.apply(this, args);\n }\n\n return option;\n }\n }, {\n key: \"uploadFile\",\n value: function uploadFile(file) {\n return this.uploadFiles([file]);\n }\n }, {\n key: \"uploadFiles\",\n value: function uploadFiles(files) {\n var _this14 = this;\n\n this._transformFiles(files, function (transformedFiles) {\n if (_this14.options.chunking) {\n // Chunking is not allowed to be used with `uploadMultiple` so we know\n // that there is only __one__file.\n var transformedFile = transformedFiles[0];\n files[0].upload.chunked = _this14.options.chunking && (_this14.options.forceChunking || transformedFile.size > _this14.options.chunkSize);\n files[0].upload.totalChunkCount = Math.ceil(transformedFile.size / _this14.options.chunkSize);\n }\n\n if (files[0].upload.chunked) {\n // This file should be sent in chunks!\n // If the chunking option is set, we **know** that there can only be **one** file, since\n // uploadMultiple is not allowed with this option.\n var file = files[0];\n var _transformedFile = transformedFiles[0];\n var startedChunkCount = 0;\n file.upload.chunks = [];\n\n var handleNextChunk = function handleNextChunk() {\n var chunkIndex = 0; // Find the next item in file.upload.chunks that is not defined yet.\n\n while (file.upload.chunks[chunkIndex] !== undefined) {\n chunkIndex++;\n } // This means, that all chunks have already been started.\n\n\n if (chunkIndex >= file.upload.totalChunkCount) return;\n startedChunkCount++;\n var start = chunkIndex * _this14.options.chunkSize;\n var end = Math.min(start + _this14.options.chunkSize, _transformedFile.size);\n var dataBlock = {\n name: _this14._getParamName(0),\n data: _transformedFile.webkitSlice ? _transformedFile.webkitSlice(start, end) : _transformedFile.slice(start, end),\n filename: file.upload.filename,\n chunkIndex: chunkIndex\n };\n file.upload.chunks[chunkIndex] = {\n file: file,\n index: chunkIndex,\n dataBlock: dataBlock,\n // In case we want to retry.\n status: Dropzone.UPLOADING,\n progress: 0,\n retries: 0 // The number of times this block has been retried.\n\n };\n\n _this14._uploadData(files, [dataBlock]);\n };\n\n file.upload.finishedChunkUpload = function (chunk, response) {\n var allFinished = true;\n chunk.status = Dropzone.SUCCESS; // Clear the data from the chunk\n\n chunk.dataBlock = null; // Leaving this reference to xhr intact here will cause memory leaks in some browsers\n\n chunk.xhr = null;\n\n for (var i = 0; i < file.upload.totalChunkCount; i++) {\n if (file.upload.chunks[i] === undefined) {\n return handleNextChunk();\n }\n\n if (file.upload.chunks[i].status !== Dropzone.SUCCESS) {\n allFinished = false;\n }\n }\n\n if (allFinished) {\n _this14.options.chunksUploaded(file, function () {\n _this14._finished(files, response, null);\n });\n }\n };\n\n if (_this14.options.parallelChunkUploads) {\n for (var i = 0; i < file.upload.totalChunkCount; i++) {\n handleNextChunk();\n }\n } else {\n handleNextChunk();\n }\n } else {\n var dataBlocks = [];\n\n for (var _i2 = 0; _i2 < files.length; _i2++) {\n dataBlocks[_i2] = {\n name: _this14._getParamName(_i2),\n data: transformedFiles[_i2],\n filename: files[_i2].upload.filename\n };\n }\n\n _this14._uploadData(files, dataBlocks);\n }\n });\n } /// Returns the right chunk for given file and xhr\n\n }, {\n key: \"_getChunk\",\n value: function _getChunk(file, xhr) {\n for (var i = 0; i < file.upload.totalChunkCount; i++) {\n if (file.upload.chunks[i] !== undefined && file.upload.chunks[i].xhr === xhr) {\n return file.upload.chunks[i];\n }\n }\n } // This function actually uploads the file(s) to the server.\n // If dataBlocks contains the actual data to upload (meaning, that this could either be transformed\n // files, or individual chunks for chunked upload).\n\n }, {\n key: \"_uploadData\",\n value: function _uploadData(files, dataBlocks) {\n var _this15 = this;\n\n var xhr = new XMLHttpRequest(); // Put the xhr object in the file objects to be able to reference it later.\n\n var _iterator13 = dropzone_createForOfIteratorHelper(files, true),\n _step13;\n\n try {\n for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {\n var file = _step13.value;\n file.xhr = xhr;\n }\n } catch (err) {\n _iterator13.e(err);\n } finally {\n _iterator13.f();\n }\n\n if (files[0].upload.chunked) {\n // Put the xhr object in the right chunk object, so it can be associated later, and found with _getChunk\n files[0].upload.chunks[dataBlocks[0].chunkIndex].xhr = xhr;\n }\n\n var method = this.resolveOption(this.options.method, files);\n var url = this.resolveOption(this.options.url, files);\n xhr.open(method, url, true); // Setting the timeout after open because of IE11 issue: https://gitlab.com/meno/dropzone/issues/8\n\n var timeout = this.resolveOption(this.options.timeout, files);\n if (timeout) xhr.timeout = this.resolveOption(this.options.timeout, files); // Has to be after `.open()`. See https://github.com/enyo/dropzone/issues/179\n\n xhr.withCredentials = !!this.options.withCredentials;\n\n xhr.onload = function (e) {\n _this15._finishedUploading(files, xhr, e);\n };\n\n xhr.ontimeout = function () {\n _this15._handleUploadError(files, xhr, \"Request timedout after \".concat(_this15.options.timeout / 1000, \" seconds\"));\n };\n\n xhr.onerror = function () {\n _this15._handleUploadError(files, xhr);\n }; // Some browsers do not have the .upload property\n\n\n var progressObj = xhr.upload != null ? xhr.upload : xhr;\n\n progressObj.onprogress = function (e) {\n return _this15._updateFilesUploadProgress(files, xhr, e);\n };\n\n var headers = {\n Accept: \"application/json\",\n \"Cache-Control\": \"no-cache\",\n \"X-Requested-With\": \"XMLHttpRequest\"\n };\n\n if (this.options.headers) {\n Dropzone.extend(headers, this.options.headers);\n }\n\n for (var headerName in headers) {\n var headerValue = headers[headerName];\n\n if (headerValue) {\n xhr.setRequestHeader(headerName, headerValue);\n }\n }\n\n var formData = new FormData(); // Adding all @options parameters\n\n if (this.options.params) {\n var additionalParams = this.options.params;\n\n if (typeof additionalParams === \"function\") {\n additionalParams = additionalParams.call(this, files, xhr, files[0].upload.chunked ? this._getChunk(files[0], xhr) : null);\n }\n\n for (var key in additionalParams) {\n var value = additionalParams[key];\n\n if (Array.isArray(value)) {\n // The additional parameter contains an array,\n // so lets iterate over it to attach each value\n // individually.\n for (var i = 0; i < value.length; i++) {\n formData.append(key, value[i]);\n }\n } else {\n formData.append(key, value);\n }\n }\n } // Let the user add additional data if necessary\n\n\n var _iterator14 = dropzone_createForOfIteratorHelper(files, true),\n _step14;\n\n try {\n for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {\n var _file = _step14.value;\n this.emit(\"sending\", _file, xhr, formData);\n }\n } catch (err) {\n _iterator14.e(err);\n } finally {\n _iterator14.f();\n }\n\n if (this.options.uploadMultiple) {\n this.emit(\"sendingmultiple\", files, xhr, formData);\n }\n\n this._addFormElementData(formData); // Finally add the files\n // Has to be last because some servers (eg: S3) expect the file to be the last parameter\n\n\n for (var _i3 = 0; _i3 < dataBlocks.length; _i3++) {\n var dataBlock = dataBlocks[_i3];\n formData.append(dataBlock.name, dataBlock.data, dataBlock.filename);\n }\n\n this.submitRequest(xhr, formData, files);\n } // Transforms all files with this.options.transformFile and invokes done with the transformed files when done.\n\n }, {\n key: \"_transformFiles\",\n value: function _transformFiles(files, done) {\n var _this16 = this;\n\n var transformedFiles = []; // Clumsy way of handling asynchronous calls, until I get to add a proper Future library.\n\n var doneCounter = 0;\n\n var _loop = function _loop(i) {\n _this16.options.transformFile.call(_this16, files[i], function (transformedFile) {\n transformedFiles[i] = transformedFile;\n\n if (++doneCounter === files.length) {\n done(transformedFiles);\n }\n });\n };\n\n for (var i = 0; i < files.length; i++) {\n _loop(i);\n }\n } // Takes care of adding other input elements of the form to the AJAX request\n\n }, {\n key: \"_addFormElementData\",\n value: function _addFormElementData(formData) {\n // Take care of other input elements\n if (this.element.tagName === \"FORM\") {\n var _iterator15 = dropzone_createForOfIteratorHelper(this.element.querySelectorAll(\"input, textarea, select, button\"), true),\n _step15;\n\n try {\n for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {\n var input = _step15.value;\n var inputName = input.getAttribute(\"name\");\n var inputType = input.getAttribute(\"type\");\n if (inputType) inputType = inputType.toLowerCase(); // If the input doesn't have a name, we can't use it.\n\n if (typeof inputName === \"undefined\" || inputName === null) continue;\n\n if (input.tagName === \"SELECT\" && input.hasAttribute(\"multiple\")) {\n // Possibly multiple values\n var _iterator16 = dropzone_createForOfIteratorHelper(input.options, true),\n _step16;\n\n try {\n for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {\n var option = _step16.value;\n\n if (option.selected) {\n formData.append(inputName, option.value);\n }\n }\n } catch (err) {\n _iterator16.e(err);\n } finally {\n _iterator16.f();\n }\n } else if (!inputType || inputType !== \"checkbox\" && inputType !== \"radio\" || input.checked) {\n formData.append(inputName, input.value);\n }\n }\n } catch (err) {\n _iterator15.e(err);\n } finally {\n _iterator15.f();\n }\n }\n } // Invoked when there is new progress information about given files.\n // If e is not provided, it is assumed that the upload is finished.\n\n }, {\n key: \"_updateFilesUploadProgress\",\n value: function _updateFilesUploadProgress(files, xhr, e) {\n if (!files[0].upload.chunked) {\n // Handle file uploads without chunking\n var _iterator17 = dropzone_createForOfIteratorHelper(files, true),\n _step17;\n\n try {\n for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {\n var file = _step17.value;\n\n if (file.upload.total && file.upload.bytesSent && file.upload.bytesSent == file.upload.total) {\n // If both, the `total` and `bytesSent` have already been set, and\n // they are equal (meaning progress is at 100%), we can skip this\n // file, since an upload progress shouldn't go down.\n continue;\n }\n\n if (e) {\n file.upload.progress = 100 * e.loaded / e.total;\n file.upload.total = e.total;\n file.upload.bytesSent = e.loaded;\n } else {\n // No event, so we're at 100%\n file.upload.progress = 100;\n file.upload.bytesSent = file.upload.total;\n }\n\n this.emit(\"uploadprogress\", file, file.upload.progress, file.upload.bytesSent);\n }\n } catch (err) {\n _iterator17.e(err);\n } finally {\n _iterator17.f();\n }\n } else {\n // Handle chunked file uploads\n // Chunked upload is not compatible with uploading multiple files in one\n // request, so we know there's only one file.\n var _file2 = files[0]; // Since this is a chunked upload, we need to update the appropriate chunk\n // progress.\n\n var chunk = this._getChunk(_file2, xhr);\n\n if (e) {\n chunk.progress = 100 * e.loaded / e.total;\n chunk.total = e.total;\n chunk.bytesSent = e.loaded;\n } else {\n // No event, so we're at 100%\n chunk.progress = 100;\n chunk.bytesSent = chunk.total;\n } // Now tally the *file* upload progress from its individual chunks\n\n\n _file2.upload.progress = 0;\n _file2.upload.total = 0;\n _file2.upload.bytesSent = 0;\n\n for (var i = 0; i < _file2.upload.totalChunkCount; i++) {\n if (_file2.upload.chunks[i] && typeof _file2.upload.chunks[i].progress !== \"undefined\") {\n _file2.upload.progress += _file2.upload.chunks[i].progress;\n _file2.upload.total += _file2.upload.chunks[i].total;\n _file2.upload.bytesSent += _file2.upload.chunks[i].bytesSent;\n }\n } // Since the process is a percentage, we need to divide by the amount of\n // chunks we've used.\n\n\n _file2.upload.progress = _file2.upload.progress / _file2.upload.totalChunkCount;\n this.emit(\"uploadprogress\", _file2, _file2.upload.progress, _file2.upload.bytesSent);\n }\n }\n }, {\n key: \"_finishedUploading\",\n value: function _finishedUploading(files, xhr, e) {\n var response;\n\n if (files[0].status === Dropzone.CANCELED) {\n return;\n }\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n if (xhr.responseType !== \"arraybuffer\" && xhr.responseType !== \"blob\") {\n response = xhr.responseText;\n\n if (xhr.getResponseHeader(\"content-type\") && ~xhr.getResponseHeader(\"content-type\").indexOf(\"application/json\")) {\n try {\n response = JSON.parse(response);\n } catch (error) {\n e = error;\n response = \"Invalid JSON response from server.\";\n }\n }\n }\n\n this._updateFilesUploadProgress(files, xhr);\n\n if (!(200 <= xhr.status && xhr.status < 300)) {\n this._handleUploadError(files, xhr, response);\n } else {\n if (files[0].upload.chunked) {\n files[0].upload.finishedChunkUpload(this._getChunk(files[0], xhr), response);\n } else {\n this._finished(files, response, e);\n }\n }\n }\n }, {\n key: \"_handleUploadError\",\n value: function _handleUploadError(files, xhr, response) {\n if (files[0].status === Dropzone.CANCELED) {\n return;\n }\n\n if (files[0].upload.chunked && this.options.retryChunks) {\n var chunk = this._getChunk(files[0], xhr);\n\n if (chunk.retries++ < this.options.retryChunksLimit) {\n this._uploadData(files, [chunk.dataBlock]);\n\n return;\n } else {\n console.warn(\"Retried this chunk too often. Giving up.\");\n }\n }\n\n this._errorProcessing(files, response || this.options.dictResponseError.replace(\"{{statusCode}}\", xhr.status), xhr);\n }\n }, {\n key: \"submitRequest\",\n value: function submitRequest(xhr, formData, files) {\n if (xhr.readyState != 1) {\n console.warn(\"Cannot send this request because the XMLHttpRequest.readyState is not OPENED.\");\n return;\n }\n\n xhr.send(formData);\n } // Called internally when processing is finished.\n // Individual callbacks have to be called in the appropriate sections.\n\n }, {\n key: \"_finished\",\n value: function _finished(files, responseText, e) {\n var _iterator18 = dropzone_createForOfIteratorHelper(files, true),\n _step18;\n\n try {\n for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {\n var file = _step18.value;\n file.status = Dropzone.SUCCESS;\n this.emit(\"success\", file, responseText, e);\n this.emit(\"complete\", file);\n }\n } catch (err) {\n _iterator18.e(err);\n } finally {\n _iterator18.f();\n }\n\n if (this.options.uploadMultiple) {\n this.emit(\"successmultiple\", files, responseText, e);\n this.emit(\"completemultiple\", files);\n }\n\n if (this.options.autoProcessQueue) {\n return this.processQueue();\n }\n } // Called internally when processing is finished.\n // Individual callbacks have to be called in the appropriate sections.\n\n }, {\n key: \"_errorProcessing\",\n value: function _errorProcessing(files, message, xhr) {\n var _iterator19 = dropzone_createForOfIteratorHelper(files, true),\n _step19;\n\n try {\n for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) {\n var file = _step19.value;\n file.status = Dropzone.ERROR;\n this.emit(\"error\", file, message, xhr);\n this.emit(\"complete\", file);\n }\n } catch (err) {\n _iterator19.e(err);\n } finally {\n _iterator19.f();\n }\n\n if (this.options.uploadMultiple) {\n this.emit(\"errormultiple\", files, message, xhr);\n this.emit(\"completemultiple\", files);\n }\n\n if (this.options.autoProcessQueue) {\n return this.processQueue();\n }\n }\n }], [{\n key: \"initClass\",\n value: function initClass() {\n // Exposing the emitter class, mainly for tests\n this.prototype.Emitter = Emitter;\n /*\n This is a list of all available events you can register on a dropzone object.\n You can register an event handler like this:\n dropzone.on(\"dragEnter\", function() { });\n */\n\n this.prototype.events = [\"drop\", \"dragstart\", \"dragend\", \"dragenter\", \"dragover\", \"dragleave\", \"addedfile\", \"addedfiles\", \"removedfile\", \"thumbnail\", \"error\", \"errormultiple\", \"processing\", \"processingmultiple\", \"uploadprogress\", \"totaluploadprogress\", \"sending\", \"sendingmultiple\", \"success\", \"successmultiple\", \"canceled\", \"canceledmultiple\", \"complete\", \"completemultiple\", \"reset\", \"maxfilesexceeded\", \"maxfilesreached\", \"queuecomplete\"];\n this.prototype._thumbnailQueue = [];\n this.prototype._processingThumbnail = false;\n } // global utility\n\n }, {\n key: \"extend\",\n value: function extend(target) {\n for (var _len2 = arguments.length, objects = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n objects[_key2 - 1] = arguments[_key2];\n }\n\n for (var _i4 = 0, _objects = objects; _i4 < _objects.length; _i4++) {\n var object = _objects[_i4];\n\n for (var key in object) {\n var val = object[key];\n target[key] = val;\n }\n }\n\n return target;\n }\n }, {\n key: \"uuidv4\",\n value: function uuidv4() {\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0,\n v = c === \"x\" ? r : r & 0x3 | 0x8;\n return v.toString(16);\n });\n }\n }]);\n\n return Dropzone;\n}(Emitter);\n\n\nDropzone.initClass();\nDropzone.version = \"5.9.3\"; // This is a map of options for your different dropzones. Add configurations\n// to this object for your different dropzone elemens.\n//\n// Example:\n//\n// Dropzone.options.myDropzoneElementId = { maxFilesize: 1 };\n//\n// To disable autoDiscover for a specific element, you can set `false` as an option:\n//\n// Dropzone.options.myDisabledElementId = false;\n//\n// And in html:\n//\n// <form action=\"/upload\" id=\"my-dropzone-element-id\" class=\"dropzone\"></form>\n\nDropzone.options = {}; // Returns the options for an element or undefined if none available.\n\nDropzone.optionsForElement = function (element) {\n // Get the `Dropzone.options.elementId` for this element if it exists\n if (element.getAttribute(\"id\")) {\n return Dropzone.options[camelize(element.getAttribute(\"id\"))];\n } else {\n return undefined;\n }\n}; // Holds a list of all dropzone instances\n\n\nDropzone.instances = []; // Returns the dropzone for given element if any\n\nDropzone.forElement = function (element) {\n if (typeof element === \"string\") {\n element = document.querySelector(element);\n }\n\n if ((element != null ? element.dropzone : undefined) == null) {\n throw new Error(\"No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.\");\n }\n\n return element.dropzone;\n}; // Set to false if you don't want Dropzone to automatically find and attach to .dropzone elements.\n\n\nDropzone.autoDiscover = true; // Looks for all .dropzone elements and creates a dropzone for them\n\nDropzone.discover = function () {\n var dropzones;\n\n if (document.querySelectorAll) {\n dropzones = document.querySelectorAll(\".dropzone\");\n } else {\n dropzones = []; // IE :(\n\n var checkElements = function checkElements(elements) {\n return function () {\n var result = [];\n\n var _iterator20 = dropzone_createForOfIteratorHelper(elements, true),\n _step20;\n\n try {\n for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) {\n var el = _step20.value;\n\n if (/(^| )dropzone($| )/.test(el.className)) {\n result.push(dropzones.push(el));\n } else {\n result.push(undefined);\n }\n }\n } catch (err) {\n _iterator20.e(err);\n } finally {\n _iterator20.f();\n }\n\n return result;\n }();\n };\n\n checkElements(document.getElementsByTagName(\"div\"));\n checkElements(document.getElementsByTagName(\"form\"));\n }\n\n return function () {\n var result = [];\n\n var _iterator21 = dropzone_createForOfIteratorHelper(dropzones, true),\n _step21;\n\n try {\n for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) {\n var dropzone = _step21.value;\n\n // Create a dropzone unless auto discover has been disabled for specific element\n if (Dropzone.optionsForElement(dropzone) !== false) {\n result.push(new Dropzone(dropzone));\n } else {\n result.push(undefined);\n }\n }\n } catch (err) {\n _iterator21.e(err);\n } finally {\n _iterator21.f();\n }\n\n return result;\n }();\n}; // Some browsers support drag and drog functionality, but not correctly.\n//\n// So I created a blocklist of userAgents. Yes, yes. Browser sniffing, I know.\n// But what to do when browsers *theoretically* support an API, but crash\n// when using it.\n//\n// This is a list of regular expressions tested against navigator.userAgent\n//\n// ** It should only be used on browser that *do* support the API, but\n// incorrectly **\n\n\nDropzone.blockedBrowsers = [// The mac os and windows phone version of opera 12 seems to have a problem with the File drag'n'drop API.\n/opera.*(Macintosh|Windows Phone).*version\\/12/i]; // Checks if the browser is supported\n\nDropzone.isBrowserSupported = function () {\n var capableBrowser = true;\n\n if (window.File && window.FileReader && window.FileList && window.Blob && window.FormData && document.querySelector) {\n if (!(\"classList\" in document.createElement(\"a\"))) {\n capableBrowser = false;\n } else {\n if (Dropzone.blacklistedBrowsers !== undefined) {\n // Since this has been renamed, this makes sure we don't break older\n // configuration.\n Dropzone.blockedBrowsers = Dropzone.blacklistedBrowsers;\n } // The browser supports the API, but may be blocked.\n\n\n var _iterator22 = dropzone_createForOfIteratorHelper(Dropzone.blockedBrowsers, true),\n _step22;\n\n try {\n for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) {\n var regex = _step22.value;\n\n if (regex.test(navigator.userAgent)) {\n capableBrowser = false;\n continue;\n }\n }\n } catch (err) {\n _iterator22.e(err);\n } finally {\n _iterator22.f();\n }\n }\n } else {\n capableBrowser = false;\n }\n\n return capableBrowser;\n};\n\nDropzone.dataURItoBlob = function (dataURI) {\n // convert base64 to raw binary data held in a string\n // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\n var byteString = atob(dataURI.split(\",\")[1]); // separate out the mime component\n\n var mimeString = dataURI.split(\",\")[0].split(\":\")[1].split(\";\")[0]; // write the bytes of the string to an ArrayBuffer\n\n var ab = new ArrayBuffer(byteString.length);\n var ia = new Uint8Array(ab);\n\n for (var i = 0, end = byteString.length, asc = 0 <= end; asc ? i <= end : i >= end; asc ? i++ : i--) {\n ia[i] = byteString.charCodeAt(i);\n } // write the ArrayBuffer to a blob\n\n\n return new Blob([ab], {\n type: mimeString\n });\n}; // Returns an array without the rejected item\n\n\nvar without = function without(list, rejectedItem) {\n return list.filter(function (item) {\n return item !== rejectedItem;\n }).map(function (item) {\n return item;\n });\n}; // abc-def_ghi -> abcDefGhi\n\n\nvar camelize = function camelize(str) {\n return str.replace(/[\\-_](\\w)/g, function (match) {\n return match.charAt(1).toUpperCase();\n });\n}; // Creates an element from string\n\n\nDropzone.createElement = function (string) {\n var div = document.createElement(\"div\");\n div.innerHTML = string;\n return div.childNodes[0];\n}; // Tests if given element is inside (or simply is) the container\n\n\nDropzone.elementInside = function (element, container) {\n if (element === container) {\n return true;\n } // Coffeescript doesn't support do/while loops\n\n\n while (element = element.parentNode) {\n if (element === container) {\n return true;\n }\n }\n\n return false;\n};\n\nDropzone.getElement = function (el, name) {\n var element;\n\n if (typeof el === \"string\") {\n element = document.querySelector(el);\n } else if (el.nodeType != null) {\n element = el;\n }\n\n if (element == null) {\n throw new Error(\"Invalid `\".concat(name, \"` option provided. Please provide a CSS selector or a plain HTML element.\"));\n }\n\n return element;\n};\n\nDropzone.getElements = function (els, name) {\n var el, elements;\n\n if (els instanceof Array) {\n elements = [];\n\n try {\n var _iterator23 = dropzone_createForOfIteratorHelper(els, true),\n _step23;\n\n try {\n for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) {\n el = _step23.value;\n elements.push(this.getElement(el, name));\n }\n } catch (err) {\n _iterator23.e(err);\n } finally {\n _iterator23.f();\n }\n } catch (e) {\n elements = null;\n }\n } else if (typeof els === \"string\") {\n elements = [];\n\n var _iterator24 = dropzone_createForOfIteratorHelper(document.querySelectorAll(els), true),\n _step24;\n\n try {\n for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) {\n el = _step24.value;\n elements.push(el);\n }\n } catch (err) {\n _iterator24.e(err);\n } finally {\n _iterator24.f();\n }\n } else if (els.nodeType != null) {\n elements = [els];\n }\n\n if (elements == null || !elements.length) {\n throw new Error(\"Invalid `\".concat(name, \"` option provided. Please provide a CSS selector, a plain HTML element or a list of those.\"));\n }\n\n return elements;\n}; // Asks the user the question and calls accepted or rejected accordingly\n//\n// The default implementation just uses `window.confirm` and then calls the\n// appropriate callback.\n\n\nDropzone.confirm = function (question, accepted, rejected) {\n if (window.confirm(question)) {\n return accepted();\n } else if (rejected != null) {\n return rejected();\n }\n}; // Validates the mime type like this:\n//\n// https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept\n\n\nDropzone.isValidFile = function (file, acceptedFiles) {\n if (!acceptedFiles) {\n return true;\n } // If there are no accepted mime types, it's OK\n\n\n acceptedFiles = acceptedFiles.split(\",\");\n var mimeType = file.type;\n var baseMimeType = mimeType.replace(/\\/.*$/, \"\");\n\n var _iterator25 = dropzone_createForOfIteratorHelper(acceptedFiles, true),\n _step25;\n\n try {\n for (_iterator25.s(); !(_step25 = _iterator25.n()).done;) {\n var validType = _step25.value;\n validType = validType.trim();\n\n if (validType.charAt(0) === \".\") {\n if (file.name.toLowerCase().indexOf(validType.toLowerCase(), file.name.length - validType.length) !== -1) {\n return true;\n }\n } else if (/\\/\\*$/.test(validType)) {\n // This is something like a image/* mime type\n if (baseMimeType === validType.replace(/\\/.*$/, \"\")) {\n return true;\n }\n } else {\n if (mimeType === validType) {\n return true;\n }\n }\n }\n } catch (err) {\n _iterator25.e(err);\n } finally {\n _iterator25.f();\n }\n\n return false;\n}; // Augment jQuery\n\n\nif (typeof jQuery !== \"undefined\" && jQuery !== null) {\n jQuery.fn.dropzone = function (options) {\n return this.each(function () {\n return new Dropzone(this, options);\n });\n };\n} // Dropzone file status codes\n\n\nDropzone.ADDED = \"added\";\nDropzone.QUEUED = \"queued\"; // For backwards compatibility. Now, if a file is accepted, it's either queued\n// or uploading.\n\nDropzone.ACCEPTED = Dropzone.QUEUED;\nDropzone.UPLOADING = \"uploading\";\nDropzone.PROCESSING = Dropzone.UPLOADING; // alias\n\nDropzone.CANCELED = \"canceled\";\nDropzone.ERROR = \"error\";\nDropzone.SUCCESS = \"success\";\n/*\n\n Bugfix for iOS 6 and 7\n Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios\n based on the work of https://github.com/stomita/ios-imagefile-megapixel\n\n */\n// Detecting vertical squash in loaded image.\n// Fixes a bug which squash image vertically while drawing into canvas for some images.\n// This is a bug in iOS6 devices. This function from https://github.com/stomita/ios-imagefile-megapixel\n\nvar detectVerticalSquash = function detectVerticalSquash(img) {\n var iw = img.naturalWidth;\n var ih = img.naturalHeight;\n var canvas = document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = ih;\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0);\n\n var _ctx$getImageData = ctx.getImageData(1, 0, 1, ih),\n data = _ctx$getImageData.data; // search image edge pixel position in case it is squashed vertically.\n\n\n var sy = 0;\n var ey = ih;\n var py = ih;\n\n while (py > sy) {\n var alpha = data[(py - 1) * 4 + 3];\n\n if (alpha === 0) {\n ey = py;\n } else {\n sy = py;\n }\n\n py = ey + sy >> 1;\n }\n\n var ratio = py / ih;\n\n if (ratio === 0) {\n return 1;\n } else {\n return ratio;\n }\n}; // A replacement for context.drawImage\n// (args are for source and destination).\n\n\nvar drawImageIOSFix = function drawImageIOSFix(ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) {\n var vertSquashRatio = detectVerticalSquash(img);\n return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio);\n}; // Based on MinifyJpeg\n// Source: http://www.perry.cz/files/ExifRestorer.js\n// http://elicon.blog57.fc2.com/blog-entry-206.html\n\n\nvar ExifRestore = /*#__PURE__*/function () {\n function ExifRestore() {\n dropzone_classCallCheck(this, ExifRestore);\n }\n\n dropzone_createClass(ExifRestore, null, [{\n key: \"initClass\",\n value: function initClass() {\n this.KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n }\n }, {\n key: \"encode64\",\n value: function encode64(input) {\n var output = \"\";\n var chr1 = undefined;\n var chr2 = undefined;\n var chr3 = \"\";\n var enc1 = undefined;\n var enc2 = undefined;\n var enc3 = undefined;\n var enc4 = \"\";\n var i = 0;\n\n while (true) {\n chr1 = input[i++];\n chr2 = input[i++];\n chr3 = input[i++];\n enc1 = chr1 >> 2;\n enc2 = (chr1 & 3) << 4 | chr2 >> 4;\n enc3 = (chr2 & 15) << 2 | chr3 >> 6;\n enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output + this.KEY_STR.charAt(enc1) + this.KEY_STR.charAt(enc2) + this.KEY_STR.charAt(enc3) + this.KEY_STR.charAt(enc4);\n chr1 = chr2 = chr3 = \"\";\n enc1 = enc2 = enc3 = enc4 = \"\";\n\n if (!(i < input.length)) {\n break;\n }\n }\n\n return output;\n }\n }, {\n key: \"restore\",\n value: function restore(origFileBase64, resizedFileBase64) {\n if (!origFileBase64.match(\"data:image/jpeg;base64,\")) {\n return resizedFileBase64;\n }\n\n var rawImage = this.decode64(origFileBase64.replace(\"data:image/jpeg;base64,\", \"\"));\n var segments = this.slice2Segments(rawImage);\n var image = this.exifManipulation(resizedFileBase64, segments);\n return \"data:image/jpeg;base64,\".concat(this.encode64(image));\n }\n }, {\n key: \"exifManipulation\",\n value: function exifManipulation(resizedFileBase64, segments) {\n var exifArray = this.getExifArray(segments);\n var newImageArray = this.insertExif(resizedFileBase64, exifArray);\n var aBuffer = new Uint8Array(newImageArray);\n return aBuffer;\n }\n }, {\n key: \"getExifArray\",\n value: function getExifArray(segments) {\n var seg = undefined;\n var x = 0;\n\n while (x < segments.length) {\n seg = segments[x];\n\n if (seg[0] === 255 & seg[1] === 225) {\n return seg;\n }\n\n x++;\n }\n\n return [];\n }\n }, {\n key: \"insertExif\",\n value: function insertExif(resizedFileBase64, exifArray) {\n var imageData = resizedFileBase64.replace(\"data:image/jpeg;base64,\", \"\");\n var buf = this.decode64(imageData);\n var separatePoint = buf.indexOf(255, 3);\n var mae = buf.slice(0, separatePoint);\n var ato = buf.slice(separatePoint);\n var array = mae;\n array = array.concat(exifArray);\n array = array.concat(ato);\n return array;\n }\n }, {\n key: \"slice2Segments\",\n value: function slice2Segments(rawImageArray) {\n var head = 0;\n var segments = [];\n\n while (true) {\n var length;\n\n if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 218) {\n break;\n }\n\n if (rawImageArray[head] === 255 & rawImageArray[head + 1] === 216) {\n head += 2;\n } else {\n length = rawImageArray[head + 2] * 256 + rawImageArray[head + 3];\n var endPoint = head + length + 2;\n var seg = rawImageArray.slice(head, endPoint);\n segments.push(seg);\n head = endPoint;\n }\n\n if (head > rawImageArray.length) {\n break;\n }\n }\n\n return segments;\n }\n }, {\n key: \"decode64\",\n value: function decode64(input) {\n var output = \"\";\n var chr1 = undefined;\n var chr2 = undefined;\n var chr3 = \"\";\n var enc1 = undefined;\n var enc2 = undefined;\n var enc3 = undefined;\n var enc4 = \"\";\n var i = 0;\n var buf = []; // remove all characters that are not A-Z, a-z, 0-9, +, /, or =\n\n var base64test = /[^A-Za-z0-9\\+\\/\\=]/g;\n\n if (base64test.exec(input)) {\n console.warn(\"There were invalid base64 characters in the input text.\\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\\nExpect errors in decoding.\");\n }\n\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n\n while (true) {\n enc1 = this.KEY_STR.indexOf(input.charAt(i++));\n enc2 = this.KEY_STR.indexOf(input.charAt(i++));\n enc3 = this.KEY_STR.indexOf(input.charAt(i++));\n enc4 = this.KEY_STR.indexOf(input.charAt(i++));\n chr1 = enc1 << 2 | enc2 >> 4;\n chr2 = (enc2 & 15) << 4 | enc3 >> 2;\n chr3 = (enc3 & 3) << 6 | enc4;\n buf.push(chr1);\n\n if (enc3 !== 64) {\n buf.push(chr2);\n }\n\n if (enc4 !== 64) {\n buf.push(chr3);\n }\n\n chr1 = chr2 = chr3 = \"\";\n enc1 = enc2 = enc3 = enc4 = \"\";\n\n if (!(i < input.length)) {\n break;\n }\n }\n\n return buf;\n }\n }]);\n\n return ExifRestore;\n}();\n\nExifRestore.initClass();\n/*\n * contentloaded.js\n *\n * Author: Diego Perini (diego.perini at gmail.com)\n * Summary: cross-browser wrapper for DOMContentLoaded\n * Updated: 20101020\n * License: MIT\n * Version: 1.2\n *\n * URL:\n * http://javascript.nwbox.com/ContentLoaded/\n * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE\n */\n// @win window reference\n// @fn function reference\n\nvar contentLoaded = function contentLoaded(win, fn) {\n var done = false;\n var top = true;\n var doc = win.document;\n var root = doc.documentElement;\n var add = doc.addEventListener ? \"addEventListener\" : \"attachEvent\";\n var rem = doc.addEventListener ? \"removeEventListener\" : \"detachEvent\";\n var pre = doc.addEventListener ? \"\" : \"on\";\n\n var init = function init(e) {\n if (e.type === \"readystatechange\" && doc.readyState !== \"complete\") {\n return;\n }\n\n (e.type === \"load\" ? win : doc)[rem](pre + e.type, init, false);\n\n if (!done && (done = true)) {\n return fn.call(win, e.type || e);\n }\n };\n\n var poll = function poll() {\n try {\n root.doScroll(\"left\");\n } catch (e) {\n setTimeout(poll, 50);\n return;\n }\n\n return init(\"poll\");\n };\n\n if (doc.readyState !== \"complete\") {\n if (doc.createEventObject && root.doScroll) {\n try {\n top = !win.frameElement;\n } catch (error) {}\n\n if (top) {\n poll();\n }\n }\n\n doc[add](pre + \"DOMContentLoaded\", init, false);\n doc[add](pre + \"readystatechange\", init, false);\n return win[add](pre + \"load\", init, false);\n }\n}; // As a single function to be able to write tests.\n\n\nDropzone._autoDiscoverFunction = function () {\n if (Dropzone.autoDiscover) {\n return Dropzone.discover();\n }\n};\n\ncontentLoaded(window, Dropzone._autoDiscoverFunction);\n\nfunction __guard__(value, transform) {\n return typeof value !== \"undefined\" && value !== null ? transform(value) : undefined;\n}\n\nfunction __guardMethod__(obj, methodName, transform) {\n if (typeof obj !== \"undefined\" && obj !== null && typeof obj[methodName] === \"function\") {\n return transform(obj, methodName);\n } else {\n return undefined;\n }\n}\n\n\n;// CONCATENATED MODULE: ./tool/dropzone.dist.js\n /// Make Dropzone a global variable.\n\nwindow.Dropzone = Dropzone;\n/* harmony default export */ var dropzone_dist = (Dropzone);\n\n}();\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});","/*!\n\tColorbox 1.6.4\n\tlicense: MIT\n\thttp://www.jacklmoore.com/colorbox\n*/\n(function ($, document, window) {\n\tvar\n\t// Default settings object.\n\t// See http://jacklmoore.com/colorbox for details.\n\tdefaults = {\n\t\t// data sources\n\t\thtml: false,\n\t\tphoto: false,\n\t\tiframe: false,\n\t\tinline: false,\n\n\t\t// behavior and appearance\n\t\ttransition: \"elastic\",\n\t\tspeed: 300,\n\t\tfadeOut: 300,\n\t\twidth: false,\n\t\tinitialWidth: \"600\",\n\t\tinnerWidth: false,\n\t\tmaxWidth: false,\n\t\theight: false,\n\t\tinitialHeight: \"450\",\n\t\tinnerHeight: false,\n\t\tmaxHeight: false,\n\t\tscalePhotos: true,\n\t\tscrolling: true,\n\t\topacity: 0.9,\n\t\tpreloading: true,\n\t\tclassName: false,\n\t\toverlayClose: true,\n\t\tescKey: true,\n\t\tarrowKey: true,\n\t\ttop: false,\n\t\tbottom: false,\n\t\tleft: false,\n\t\tright: false,\n\t\tfixed: false,\n\t\tdata: undefined,\n\t\tcloseButton: true,\n\t\tfastIframe: true,\n\t\topen: false,\n\t\treposition: true,\n\t\tloop: true,\n\t\tslideshow: false,\n\t\tslideshowAuto: true,\n\t\tslideshowSpeed: 2500,\n\t\tslideshowStart: \"start slideshow\",\n\t\tslideshowStop: \"stop slideshow\",\n\t\tphotoRegex: /\\.(gif|png|jp(e|g|eg)|bmp|ico|webp|jxr|svg)((#|\\?).*)?$/i,\n\n\t\t// alternate image paths for high-res displays\n\t\tretinaImage: false,\n\t\tretinaUrl: false,\n\t\tretinaSuffix: '@2x.$1',\n\n\t\t// internationalization\n\t\tcurrent: \"image {current} of {total}\",\n\t\tprevious: \"previous\",\n\t\tnext: \"next\",\n\t\tclose: \"close\",\n\t\txhrError: \"This content failed to load.\",\n\t\timgError: \"This image failed to load.\",\n\n\t\t// accessbility\n\t\treturnFocus: true,\n\t\ttrapFocus: true,\n\n\t\t// callbacks\n\t\tonOpen: false,\n\t\tonLoad: false,\n\t\tonComplete: false,\n\t\tonCleanup: false,\n\t\tonClosed: false,\n\n\t\trel: function() {\n\t\t\treturn this.rel;\n\t\t},\n\t\thref: function() {\n\t\t\t// using this.href would give the absolute url, when the href may have been inteded as a selector (e.g. '#container')\n\t\t\treturn $(this).attr('href');\n\t\t},\n\t\ttitle: function() {\n\t\t\treturn this.title;\n\t\t},\n\t\tcreateImg: function() {\n\t\t\tvar img = new Image();\n\t\t\tvar attrs = $(this).data('cbox-img-attrs');\n\n\t\t\tif (typeof attrs === 'object') {\n\t\t\t\t$.each(attrs, function(key, val){\n\t\t\t\t\timg[key] = val;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn img;\n\t\t},\n\t\tcreateIframe: function() {\n\t\t\tvar iframe = document.createElement('iframe');\n\t\t\tvar attrs = $(this).data('cbox-iframe-attrs');\n\n\t\t\tif (typeof attrs === 'object') {\n\t\t\t\t$.each(attrs, function(key, val){\n\t\t\t\t\tiframe[key] = val;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ('frameBorder' in iframe) {\n\t\t\t\tiframe.frameBorder = 0;\n\t\t\t}\n\t\t\tif ('allowTransparency' in iframe) {\n\t\t\t\tiframe.allowTransparency = \"true\";\n\t\t\t}\n\t\t\tiframe.name = (new Date()).getTime(); // give the iframe a unique name to prevent caching\n\t\t\tiframe.allowFullscreen = true;\n\n\t\t\treturn iframe;\n\t\t}\n\t},\n\n\t// Abstracting the HTML and event identifiers for easy rebranding\n\tcolorbox = 'colorbox',\n\tprefix = 'cbox',\n\tboxElement = prefix + 'Element',\n\n\t// Events\n\tevent_open = prefix + '_open',\n\tevent_load = prefix + '_load',\n\tevent_complete = prefix + '_complete',\n\tevent_cleanup = prefix + '_cleanup',\n\tevent_closed = prefix + '_closed',\n\tevent_purge = prefix + '_purge',\n\n\t// Cached jQuery Object Variables\n\t$overlay,\n\t$box,\n\t$wrap,\n\t$content,\n\t$topBorder,\n\t$leftBorder,\n\t$rightBorder,\n\t$bottomBorder,\n\t$related,\n\t$window,\n\t$loaded,\n\t$loadingBay,\n\t$loadingOverlay,\n\t$title,\n\t$current,\n\t$slideshow,\n\t$next,\n\t$prev,\n\t$close,\n\t$groupControls,\n\t$events = $('<a/>'), // $({}) would be prefered, but there is an issue with jQuery 1.4.2\n\n\t// Variables for cached values or use across multiple functions\n\tsettings,\n\tinterfaceHeight,\n\tinterfaceWidth,\n\tloadedHeight,\n\tloadedWidth,\n\tindex,\n\tphoto,\n\topen,\n\tactive,\n\tclosing,\n\tloadingTimer,\n\tpublicMethod,\n\tdiv = \"div\",\n\trequests = 0,\n\tpreviousCSS = {},\n\tinit;\n\n\t// ****************\n\t// HELPER FUNCTIONS\n\t// ****************\n\n\t// Convenience function for creating new jQuery objects\n\tfunction $tag(tag, id, css) {\n\t\tvar element = document.createElement(tag);\n\n\t\tif (id) {\n\t\t\telement.id = prefix + id;\n\t\t}\n\n\t\tif (css) {\n\t\t\telement.style.cssText = css;\n\t\t}\n\n\t\treturn $(element);\n\t}\n\n\t// Get the window height using innerHeight when available to avoid an issue with iOS\n\t// http://bugs.jquery.com/ticket/6724\n\tfunction winheight() {\n\t\treturn window.innerHeight ? window.innerHeight : $(window).height();\n\t}\n\n\tfunction Settings(element, options) {\n\t\tif (options !== Object(options)) {\n\t\t\toptions = {};\n\t\t}\n\n\t\tthis.cache = {};\n\t\tthis.el = element;\n\n\t\tthis.value = function(key) {\n\t\t\tvar dataAttr;\n\n\t\t\tif (this.cache[key] === undefined) {\n\t\t\t\tdataAttr = $(this.el).attr('data-cbox-'+key);\n\n\t\t\t\tif (dataAttr !== undefined) {\n\t\t\t\t\tthis.cache[key] = dataAttr;\n\t\t\t\t} else if (options[key] !== undefined) {\n\t\t\t\t\tthis.cache[key] = options[key];\n\t\t\t\t} else if (defaults[key] !== undefined) {\n\t\t\t\t\tthis.cache[key] = defaults[key];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this.cache[key];\n\t\t};\n\n\t\tthis.get = function(key) {\n\t\t\tvar value = this.value(key);\n\t\t\treturn $.isFunction(value) ? value.call(this.el, this) : value;\n\t\t};\n\t}\n\n\t// Determine the next and previous members in a group.\n\tfunction getIndex(increment) {\n\t\tvar\n\t\tmax = $related.length,\n\t\tnewIndex = (index + increment) % max;\n\n\t\treturn (newIndex < 0) ? max + newIndex : newIndex;\n\t}\n\n\t// Convert '%' and 'px' values to integers\n\tfunction setSize(size, dimension) {\n\t\treturn Math.round((/%/.test(size) ? ((dimension === 'x' ? $window.width() : winheight()) / 100) : 1) * parseInt(size, 10));\n\t}\n\n\t// Checks an href to see if it is a photo.\n\t// There is a force photo option (photo: true) for hrefs that cannot be matched by the regex.\n\tfunction isImage(settings, url) {\n\t\treturn settings.get('photo') || settings.get('photoRegex').test(url);\n\t}\n\n\tfunction retinaUrl(settings, url) {\n\t\treturn settings.get('retinaUrl') && window.devicePixelRatio > 1 ? url.replace(settings.get('photoRegex'), settings.get('retinaSuffix')) : url;\n\t}\n\n\tfunction trapFocus(e) {\n\t\tif ('contains' in $box[0] && !$box[0].contains(e.target) && e.target !== $overlay[0]) {\n\t\t\te.stopPropagation();\n\t\t\t$box.focus();\n\t\t}\n\t}\n\n\tfunction setClass(str) {\n\t\tif (setClass.str !== str) {\n\t\t\t$box.add($overlay).removeClass(setClass.str).addClass(str);\n\t\t\tsetClass.str = str;\n\t\t}\n\t}\n\n\tfunction getRelated(rel) {\n\t\tindex = 0;\n\n\t\tif (rel && rel !== false && rel !== 'nofollow') {\n\t\t\t$related = $('.' + boxElement).filter(function () {\n\t\t\t\tvar options = $.data(this, colorbox);\n\t\t\t\tvar settings = new Settings(this, options);\n\t\t\t\treturn (settings.get('rel') === rel);\n\t\t\t});\n\t\t\tindex = $related.index(settings.el);\n\n\t\t\t// Check direct calls to Colorbox.\n\t\t\tif (index === -1) {\n\t\t\t\t$related = $related.add(settings.el);\n\t\t\t\tindex = $related.length - 1;\n\t\t\t}\n\t\t} else {\n\t\t\t$related = $(settings.el);\n\t\t}\n\t}\n\n\tfunction trigger(event) {\n\t\t// for external use\n\t\t$(document).trigger(event);\n\t\t// for internal use\n\t\t$events.triggerHandler(event);\n\t}\n\n\tvar slideshow = (function(){\n\t\tvar active,\n\t\t\tclassName = prefix + \"Slideshow_\",\n\t\t\tclick = \"click.\" + prefix,\n\t\t\ttimeOut;\n\n\t\tfunction clear () {\n\t\t\tclearTimeout(timeOut);\n\t\t}\n\n\t\tfunction set() {\n\t\t\tif (settings.get('loop') || $related[index + 1]) {\n\t\t\t\tclear();\n\t\t\t\ttimeOut = setTimeout(publicMethod.next, settings.get('slideshowSpeed'));\n\t\t\t}\n\t\t}\n\n\t\tfunction start() {\n\t\t\t$slideshow\n\t\t\t\t.html(settings.get('slideshowStop'))\n\t\t\t\t.unbind(click)\n\t\t\t\t.one(click, stop);\n\n\t\t\t$events\n\t\t\t\t.bind(event_complete, set)\n\t\t\t\t.bind(event_load, clear);\n\n\t\t\t$box.removeClass(className + \"off\").addClass(className + \"on\");\n\t\t}\n\n\t\tfunction stop() {\n\t\t\tclear();\n\n\t\t\t$events\n\t\t\t\t.unbind(event_complete, set)\n\t\t\t\t.unbind(event_load, clear);\n\n\t\t\t$slideshow\n\t\t\t\t.html(settings.get('slideshowStart'))\n\t\t\t\t.unbind(click)\n\t\t\t\t.one(click, function () {\n\t\t\t\t\tpublicMethod.next();\n\t\t\t\t\tstart();\n\t\t\t\t});\n\n\t\t\t$box.removeClass(className + \"on\").addClass(className + \"off\");\n\t\t}\n\n\t\tfunction reset() {\n\t\t\tactive = false;\n\t\t\t$slideshow.hide();\n\t\t\tclear();\n\t\t\t$events\n\t\t\t\t.unbind(event_complete, set)\n\t\t\t\t.unbind(event_load, clear);\n\t\t\t$box.removeClass(className + \"off \" + className + \"on\");\n\t\t}\n\n\t\treturn function(){\n\t\t\tif (active) {\n\t\t\t\tif (!settings.get('slideshow')) {\n\t\t\t\t\t$events.unbind(event_cleanup, reset);\n\t\t\t\t\treset();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (settings.get('slideshow') && $related[1]) {\n\t\t\t\t\tactive = true;\n\t\t\t\t\t$events.one(event_cleanup, reset);\n\t\t\t\t\tif (settings.get('slideshowAuto')) {\n\t\t\t\t\t\tstart();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstop();\n\t\t\t\t\t}\n\t\t\t\t\t$slideshow.show();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t}());\n\n\n\tfunction launch(element) {\n\t\tvar options;\n\n\t\tif (!closing) {\n\n\t\t\toptions = $(element).data(colorbox);\n\n\t\t\tsettings = new Settings(element, options);\n\n\t\t\tgetRelated(settings.get('rel'));\n\n\t\t\tif (!open) {\n\t\t\t\topen = active = true; // Prevents the page-change action from queuing up if the visitor holds down the left or right keys.\n\n\t\t\t\tsetClass(settings.get('className'));\n\n\t\t\t\t// Show colorbox so the sizes can be calculated in older versions of jQuery\n\t\t\t\t$box.css({visibility:'hidden', display:'block', opacity:''});\n\n\t\t\t\t$loaded = $tag(div, 'LoadedContent', 'width:0; height:0; overflow:hidden; visibility:hidden');\n\t\t\t\t$content.css({width:'', height:''}).append($loaded);\n\n\t\t\t\t// Cache values needed for size calculations\n\t\t\t\tinterfaceHeight = $topBorder.height() + $bottomBorder.height() + $content.outerHeight(true) - $content.height();\n\t\t\t\tinterfaceWidth = $leftBorder.width() + $rightBorder.width() + $content.outerWidth(true) - $content.width();\n\t\t\t\tloadedHeight = $loaded.outerHeight(true);\n\t\t\t\tloadedWidth = $loaded.outerWidth(true);\n\n\t\t\t\t// Opens inital empty Colorbox prior to content being loaded.\n\t\t\t\tvar initialWidth = setSize(settings.get('initialWidth'), 'x');\n\t\t\t\tvar initialHeight = setSize(settings.get('initialHeight'), 'y');\n\t\t\t\tvar maxWidth = settings.get('maxWidth');\n\t\t\t\tvar maxHeight = settings.get('maxHeight');\n\n\t\t\t\tsettings.w = Math.max((maxWidth !== false ? Math.min(initialWidth, setSize(maxWidth, 'x')) : initialWidth) - loadedWidth - interfaceWidth, 0);\n\t\t\t\tsettings.h = Math.max((maxHeight !== false ? Math.min(initialHeight, setSize(maxHeight, 'y')) : initialHeight) - loadedHeight - interfaceHeight, 0);\n\n\t\t\t\t$loaded.css({width:'', height:settings.h});\n\t\t\t\tpublicMethod.position();\n\n\t\t\t\ttrigger(event_open);\n\t\t\t\tsettings.get('onOpen');\n\n\t\t\t\t$groupControls.add($title).hide();\n\n\t\t\t\t$box.focus();\n\n\t\t\t\tif (settings.get('trapFocus')) {\n\t\t\t\t\t// Confine focus to the modal\n\t\t\t\t\t// Uses event capturing that is not supported in IE8-\n\t\t\t\t\tif (document.addEventListener) {\n\n\t\t\t\t\t\tdocument.addEventListener('focus', trapFocus, true);\n\n\t\t\t\t\t\t$events.one(event_closed, function () {\n\t\t\t\t\t\t\tdocument.removeEventListener('focus', trapFocus, true);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Return focus on closing\n\t\t\t\tif (settings.get('returnFocus')) {\n\t\t\t\t\t$events.one(event_closed, function () {\n\t\t\t\t\t\t$(settings.el).focus();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar opacity = parseFloat(settings.get('opacity'));\n\t\t\t$overlay.css({\n\t\t\t\topacity: opacity === opacity ? opacity : '',\n\t\t\t\tcursor: settings.get('overlayClose') ? 'pointer' : '',\n\t\t\t\tvisibility: 'visible'\n\t\t\t}).show();\n\n\t\t\tif (settings.get('closeButton')) {\n\t\t\t\t$close.html(settings.get('close')).appendTo($content);\n\t\t\t} else {\n\t\t\t\t$close.appendTo('<div/>'); // replace with .detach() when dropping jQuery < 1.4\n\t\t\t}\n\n\t\t\tload();\n\t\t}\n\t}\n\n\t// Colorbox's markup needs to be added to the DOM prior to being called\n\t// so that the browser will go ahead and load the CSS background images.\n\tfunction appendHTML() {\n\t\tif (!$box) {\n\t\t\tinit = false;\n\t\t\t$window = $(window);\n\t\t\t$box = $tag(div).attr({\n\t\t\t\tid: colorbox,\n\t\t\t\t'class': $.support.opacity === false ? prefix + 'IE' : '', // class for optional IE8 & lower targeted CSS.\n\t\t\t\trole: 'dialog',\n\t\t\t\ttabindex: '-1'\n\t\t\t}).hide();\n\t\t\t$overlay = $tag(div, \"Overlay\").hide();\n\t\t\t$loadingOverlay = $([$tag(div, \"LoadingOverlay\")[0],$tag(div, \"LoadingGraphic\")[0]]);\n\t\t\t$wrap = $tag(div, \"Wrapper\");\n\t\t\t$content = $tag(div, \"Content\").append(\n\t\t\t\t$title = $tag(div, \"Title\"),\n\t\t\t\t$current = $tag(div, \"Current\"),\n\t\t\t\t$prev = $('<button type=\"button\"/>').attr({id:prefix+'Previous'}),\n\t\t\t\t$next = $('<button type=\"button\"/>').attr({id:prefix+'Next'}),\n\t\t\t\t$slideshow = $('<button type=\"button\"/>').attr({id:prefix+'Slideshow'}),\n\t\t\t\t$loadingOverlay\n\t\t\t);\n\n\t\t\t$close = $('<button type=\"button\"/>').attr({id:prefix+'Close'});\n\n\t\t\t$wrap.append( // The 3x3 Grid that makes up Colorbox\n\t\t\t\t$tag(div).append(\n\t\t\t\t\t$tag(div, \"TopLeft\"),\n\t\t\t\t\t$topBorder = $tag(div, \"TopCenter\"),\n\t\t\t\t\t$tag(div, \"TopRight\")\n\t\t\t\t),\n\t\t\t\t$tag(div, false, 'clear:left').append(\n\t\t\t\t\t$leftBorder = $tag(div, \"MiddleLeft\"),\n\t\t\t\t\t$content,\n\t\t\t\t\t$rightBorder = $tag(div, \"MiddleRight\")\n\t\t\t\t),\n\t\t\t\t$tag(div, false, 'clear:left').append(\n\t\t\t\t\t$tag(div, \"BottomLeft\"),\n\t\t\t\t\t$bottomBorder = $tag(div, \"BottomCenter\"),\n\t\t\t\t\t$tag(div, \"BottomRight\")\n\t\t\t\t)\n\t\t\t).find('div div').css({'float': 'left'});\n\n\t\t\t$loadingBay = $tag(div, false, 'position:absolute; width:9999px; visibility:hidden; display:none; max-width:none;');\n\n\t\t\t$groupControls = $next.add($prev).add($current).add($slideshow);\n\t\t}\n\t\tif (document.body && !$box.parent().length) {\n\t\t\t$(document.body).append($overlay, $box.append($wrap, $loadingBay));\n\t\t}\n\t}\n\n\t// Add Colorbox's event bindings\n\tfunction addBindings() {\n\t\tfunction clickHandler(e) {\n\t\t\t// ignore non-left-mouse-clicks and clicks modified with ctrl / command, shift, or alt.\n\t\t\t// See: http://jacklmoore.com/notes/click-events/\n\t\t\tif (!(e.which > 1 || e.shiftKey || e.altKey || e.metaKey || e.ctrlKey)) {\n\t\t\t\te.preventDefault();\n\t\t\t\tlaunch(this);\n\t\t\t}\n\t\t}\n\n\t\tif ($box) {\n\t\t\tif (!init) {\n\t\t\t\tinit = true;\n\n\t\t\t\t// Anonymous functions here keep the public method from being cached, thereby allowing them to be redefined on the fly.\n\t\t\t\t$next.click(function () {\n\t\t\t\t\tpublicMethod.next();\n\t\t\t\t});\n\t\t\t\t$prev.click(function () {\n\t\t\t\t\tpublicMethod.prev();\n\t\t\t\t});\n\t\t\t\t$close.click(function () {\n\t\t\t\t\tpublicMethod.close();\n\t\t\t\t});\n\t\t\t\t$overlay.click(function () {\n\t\t\t\t\tif (settings.get('overlayClose')) {\n\t\t\t\t\t\tpublicMethod.close();\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// Key Bindings\n\t\t\t\t$(document).bind('keydown.' + prefix, function (e) {\n\t\t\t\t\tvar key = e.keyCode;\n\t\t\t\t\tif (open && settings.get('escKey') && key === 27) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tpublicMethod.close();\n\t\t\t\t\t}\n\t\t\t\t\tif (open && settings.get('arrowKey') && $related[1] && !e.altKey) {\n\t\t\t\t\t\tif (key === 37) {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t$prev.click();\n\t\t\t\t\t\t} else if (key === 39) {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t$next.click();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif ($.isFunction($.fn.on)) {\n\t\t\t\t\t// For jQuery 1.7+\n\t\t\t\t\t$(document).on('click.'+prefix, '.'+boxElement, clickHandler);\n\t\t\t\t} else {\n\t\t\t\t\t// For jQuery 1.3.x -> 1.6.x\n\t\t\t\t\t// This code is never reached in jQuery 1.9, so do not contact me about 'live' being removed.\n\t\t\t\t\t// This is not here for jQuery 1.9, it's here for legacy users.\n\t\t\t\t\t$('.'+boxElement).live('click.'+prefix, clickHandler);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t// Don't do anything if Colorbox already exists.\n\tif ($[colorbox]) {\n\t\treturn;\n\t}\n\n\t// Append the HTML when the DOM loads\n\t$(appendHTML);\n\n\n\t// ****************\n\t// PUBLIC FUNCTIONS\n\t// Usage format: $.colorbox.close();\n\t// Usage from within an iframe: parent.jQuery.colorbox.close();\n\t// ****************\n\n\tpublicMethod = $.fn[colorbox] = $[colorbox] = function (options, callback) {\n\t\tvar settings;\n\t\tvar $obj = this;\n\n\t\toptions = options || {};\n\n\t\tif ($.isFunction($obj)) { // assume a call to $.colorbox\n\t\t\t$obj = $('<a/>');\n\t\t\toptions.open = true;\n\t\t}\n\n\t\tif (!$obj[0]) { // colorbox being applied to empty collection\n\t\t\treturn $obj;\n\t\t}\n\n\t\tappendHTML();\n\n\t\tif (addBindings()) {\n\n\t\t\tif (callback) {\n\t\t\t\toptions.onComplete = callback;\n\t\t\t}\n\n\t\t\t$obj.each(function () {\n\t\t\t\tvar old = $.data(this, colorbox) || {};\n\t\t\t\t$.data(this, colorbox, $.extend(old, options));\n\t\t\t}).addClass(boxElement);\n\n\t\t\tsettings = new Settings($obj[0], options);\n\n\t\t\tif (settings.get('open')) {\n\t\t\t\tlaunch($obj[0]);\n\t\t\t}\n\t\t}\n\n\t\treturn $obj;\n\t};\n\n\tpublicMethod.position = function (speed, loadedCallback) {\n\t\tvar\n\t\tcss,\n\t\ttop = 0,\n\t\tleft = 0,\n\t\toffset = $box.offset(),\n\t\tscrollTop,\n\t\tscrollLeft;\n\n\t\t$window.unbind('resize.' + prefix);\n\n\t\t// remove the modal so that it doesn't influence the document width/height\n\t\t$box.css({top: -9e4, left: -9e4});\n\n\t\tscrollTop = $window.scrollTop();\n\t\tscrollLeft = $window.scrollLeft();\n\n\t\tif (settings.get('fixed')) {\n\t\t\toffset.top -= scrollTop;\n\t\t\toffset.left -= scrollLeft;\n\t\t\t$box.css({position: 'fixed'});\n\t\t} else {\n\t\t\ttop = scrollTop;\n\t\t\tleft = scrollLeft;\n\t\t\t$box.css({position: 'absolute'});\n\t\t}\n\n\t\t// keeps the top and left positions within the browser's viewport.\n\t\tif (settings.get('right') !== false) {\n\t\t\tleft += Math.max($window.width() - settings.w - loadedWidth - interfaceWidth - setSize(settings.get('right'), 'x'), 0);\n\t\t} else if (settings.get('left') !== false) {\n\t\t\tleft += setSize(settings.get('left'), 'x');\n\t\t} else {\n\t\t\tleft += Math.round(Math.max($window.width() - settings.w - loadedWidth - interfaceWidth, 0) / 2);\n\t\t}\n\n\t\tif (settings.get('bottom') !== false) {\n\t\t\ttop += Math.max(winheight() - settings.h - loadedHeight - interfaceHeight - setSize(settings.get('bottom'), 'y'), 0);\n\t\t} else if (settings.get('top') !== false) {\n\t\t\ttop += setSize(settings.get('top'), 'y');\n\t\t} else {\n\t\t\ttop += Math.round(Math.max(winheight() - settings.h - loadedHeight - interfaceHeight, 0) / 2);\n\t\t}\n\n\t\t$box.css({top: offset.top, left: offset.left, visibility:'visible'});\n\n\t\t// this gives the wrapper plenty of breathing room so it's floated contents can move around smoothly,\n\t\t// but it has to be shrank down around the size of div#colorbox when it's done. If not,\n\t\t// it can invoke an obscure IE bug when using iframes.\n\t\t$wrap[0].style.width = $wrap[0].style.height = \"9999px\";\n\n\t\tfunction modalDimensions() {\n\t\t\t$topBorder[0].style.width = $bottomBorder[0].style.width = $content[0].style.width = (parseInt($box[0].style.width,10) - interfaceWidth)+'px';\n\t\t\t$content[0].style.height = $leftBorder[0].style.height = $rightBorder[0].style.height = (parseInt($box[0].style.height,10) - interfaceHeight)+'px';\n\t\t}\n\n\t\tcss = {width: settings.w + loadedWidth + interfaceWidth, height: settings.h + loadedHeight + interfaceHeight, top: top, left: left};\n\n\t\t// setting the speed to 0 if the content hasn't changed size or position\n\t\tif (speed) {\n\t\t\tvar tempSpeed = 0;\n\t\t\t$.each(css, function(i){\n\t\t\t\tif (css[i] !== previousCSS[i]) {\n\t\t\t\t\ttempSpeed = speed;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t});\n\t\t\tspeed = tempSpeed;\n\t\t}\n\n\t\tpreviousCSS = css;\n\n\t\tif (!speed) {\n\t\t\t$box.css(css);\n\t\t}\n\n\t\t$box.dequeue().animate(css, {\n\t\t\tduration: speed || 0,\n\t\t\tcomplete: function () {\n\t\t\t\tmodalDimensions();\n\n\t\t\t\tactive = false;\n\n\t\t\t\t// shrink the wrapper down to exactly the size of colorbox to avoid a bug in IE's iframe implementation.\n\t\t\t\t$wrap[0].style.width = (settings.w + loadedWidth + interfaceWidth) + \"px\";\n\t\t\t\t$wrap[0].style.height = (settings.h + loadedHeight + interfaceHeight) + \"px\";\n\n\t\t\t\tif (settings.get('reposition')) {\n\t\t\t\t\tsetTimeout(function () { // small delay before binding onresize due to an IE8 bug.\n\t\t\t\t\t\t$window.bind('resize.' + prefix, publicMethod.position);\n\t\t\t\t\t}, 1);\n\t\t\t\t}\n\n\t\t\t\tif ($.isFunction(loadedCallback)) {\n\t\t\t\t\tloadedCallback();\n\t\t\t\t}\n\t\t\t},\n\t\t\tstep: modalDimensions\n\t\t});\n\t};\n\n\tpublicMethod.resize = function (options) {\n\t\tvar scrolltop;\n\n\t\tif (open) {\n\t\t\toptions = options || {};\n\n\t\t\tif (options.width) {\n\t\t\t\tsettings.w = setSize(options.width, 'x') - loadedWidth - interfaceWidth;\n\t\t\t}\n\n\t\t\tif (options.innerWidth) {\n\t\t\t\tsettings.w = setSize(options.innerWidth, 'x');\n\t\t\t}\n\n\t\t\t$loaded.css({width: settings.w});\n\n\t\t\tif (options.height) {\n\t\t\t\tsettings.h = setSize(options.height, 'y') - loadedHeight - interfaceHeight;\n\t\t\t}\n\n\t\t\tif (options.innerHeight) {\n\t\t\t\tsettings.h = setSize(options.innerHeight, 'y');\n\t\t\t}\n\n\t\t\tif (!options.innerHeight && !options.height) {\n\t\t\t\tscrolltop = $loaded.scrollTop();\n\t\t\t\t$loaded.css({height: \"auto\"});\n\t\t\t\tsettings.h = $loaded.height();\n\t\t\t}\n\n\t\t\t$loaded.css({height: settings.h});\n\n\t\t\tif(scrolltop) {\n\t\t\t\t$loaded.scrollTop(scrolltop);\n\t\t\t}\n\n\t\t\tpublicMethod.position(settings.get('transition') === \"none\" ? 0 : settings.get('speed'));\n\t\t}\n\t};\n\n\tpublicMethod.prep = function (object) {\n\t\tif (!open) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar callback, speed = settings.get('transition') === \"none\" ? 0 : settings.get('speed');\n\n\t\t$loaded.remove();\n\n\t\t$loaded = $tag(div, 'LoadedContent').append(object);\n\n\t\tfunction getWidth() {\n\t\t\tsettings.w = settings.w || $loaded.width();\n\t\t\tsettings.w = settings.mw && settings.mw < settings.w ? settings.mw : settings.w;\n\t\t\treturn settings.w;\n\t\t}\n\t\tfunction getHeight() {\n\t\t\tsettings.h = settings.h || $loaded.height();\n\t\t\tsettings.h = settings.mh && settings.mh < settings.h ? settings.mh : settings.h;\n\t\t\treturn settings.h;\n\t\t}\n\n\t\t$loaded.hide()\n\t\t.appendTo($loadingBay.show())// content has to be appended to the DOM for accurate size calculations.\n\t\t.css({width: getWidth(), overflow: settings.get('scrolling') ? 'auto' : 'hidden'})\n\t\t.css({height: getHeight()})// sets the height independently from the width in case the new width influences the value of height.\n\t\t.prependTo($content);\n\n\t\t$loadingBay.hide();\n\n\t\t// floating the IMG removes the bottom line-height and fixed a problem where IE miscalculates the width of the parent element as 100% of the document width.\n\n\t\t$(photo).css({'float': 'none'});\n\n\t\tsetClass(settings.get('className'));\n\n\t\tcallback = function () {\n\t\t\tvar total = $related.length,\n\t\t\t\tiframe,\n\t\t\t\tcomplete;\n\n\t\t\tif (!open) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfunction removeFilter() { // Needed for IE8 in versions of jQuery prior to 1.7.2\n\t\t\t\tif ($.support.opacity === false) {\n\t\t\t\t\t$box[0].style.removeAttribute('filter');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcomplete = function () {\n\t\t\t\tclearTimeout(loadingTimer);\n\t\t\t\t$loadingOverlay.hide();\n\t\t\t\ttrigger(event_complete);\n\t\t\t\tsettings.get('onComplete');\n\t\t\t};\n\n\n\t\t\t$title.html(settings.get('title')).show();\n\t\t\t$loaded.show();\n\n\t\t\tif (total > 1) { // handle grouping\n\t\t\t\tif (typeof settings.get('current') === \"string\") {\n\t\t\t\t\t$current.html(settings.get('current').replace('{current}', index + 1).replace('{total}', total)).show();\n\t\t\t\t}\n\n\t\t\t\t$next[(settings.get('loop') || index < total - 1) ? \"show\" : \"hide\"]().html(settings.get('next'));\n\t\t\t\t$prev[(settings.get('loop') || index) ? \"show\" : \"hide\"]().html(settings.get('previous'));\n\n\t\t\t\tslideshow();\n\n\t\t\t\t// Preloads images within a rel group\n\t\t\t\tif (settings.get('preloading')) {\n\t\t\t\t\t$.each([getIndex(-1), getIndex(1)], function(){\n\t\t\t\t\t\tvar img,\n\t\t\t\t\t\t\ti = $related[this],\n\t\t\t\t\t\t\tsettings = new Settings(i, $.data(i, colorbox)),\n\t\t\t\t\t\t\tsrc = settings.get('href');\n\n\t\t\t\t\t\tif (src && isImage(settings, src)) {\n\t\t\t\t\t\t\tsrc = retinaUrl(settings, src);\n\t\t\t\t\t\t\timg = document.createElement('img');\n\t\t\t\t\t\t\timg.src = src;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t$groupControls.hide();\n\t\t\t}\n\n\t\t\tif (settings.get('iframe')) {\n\n\t\t\t\tiframe = settings.get('createIframe');\n\n\t\t\t\tif (!settings.get('scrolling')) {\n\t\t\t\t\tiframe.scrolling = \"no\";\n\t\t\t\t}\n\n\t\t\t\t$(iframe)\n\t\t\t\t\t.attr({\n\t\t\t\t\t\tsrc: settings.get('href'),\n\t\t\t\t\t\t'class': prefix + 'Iframe'\n\t\t\t\t\t})\n\t\t\t\t\t.one('load', complete)\n\t\t\t\t\t.appendTo($loaded);\n\n\t\t\t\t$events.one(event_purge, function () {\n\t\t\t\t\tiframe.src = \"//about:blank\";\n\t\t\t\t});\n\n\t\t\t\tif (settings.get('fastIframe')) {\n\t\t\t\t\t$(iframe).trigger('load');\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcomplete();\n\t\t\t}\n\n\t\t\tif (settings.get('transition') === 'fade') {\n\t\t\t\t$box.fadeTo(speed, 1, removeFilter);\n\t\t\t} else {\n\t\t\t\tremoveFilter();\n\t\t\t}\n\t\t};\n\n\t\tif (settings.get('transition') === 'fade') {\n\t\t\t$box.fadeTo(speed, 0, function () {\n\t\t\t\tpublicMethod.position(0, callback);\n\t\t\t});\n\t\t} else {\n\t\t\tpublicMethod.position(speed, callback);\n\t\t}\n\t};\n\n\tfunction load () {\n\t\tvar href, setResize, prep = publicMethod.prep, $inline, request = ++requests;\n\n\t\tactive = true;\n\n\t\tphoto = false;\n\n\t\ttrigger(event_purge);\n\t\ttrigger(event_load);\n\t\tsettings.get('onLoad');\n\n\t\tsettings.h = settings.get('height') ?\n\t\t\t\tsetSize(settings.get('height'), 'y') - loadedHeight - interfaceHeight :\n\t\t\t\tsettings.get('innerHeight') && setSize(settings.get('innerHeight'), 'y');\n\n\t\tsettings.w = settings.get('width') ?\n\t\t\t\tsetSize(settings.get('width'), 'x') - loadedWidth - interfaceWidth :\n\t\t\t\tsettings.get('innerWidth') && setSize(settings.get('innerWidth'), 'x');\n\n\t\t// Sets the minimum dimensions for use in image scaling\n\t\tsettings.mw = settings.w;\n\t\tsettings.mh = settings.h;\n\n\t\t// Re-evaluate the minimum width and height based on maxWidth and maxHeight values.\n\t\t// If the width or height exceed the maxWidth or maxHeight, use the maximum values instead.\n\t\tif (settings.get('maxWidth')) {\n\t\t\tsettings.mw = setSize(settings.get('maxWidth'), 'x') - loadedWidth - interfaceWidth;\n\t\t\tsettings.mw = settings.w && settings.w < settings.mw ? settings.w : settings.mw;\n\t\t}\n\t\tif (settings.get('maxHeight')) {\n\t\t\tsettings.mh = setSize(settings.get('maxHeight'), 'y') - loadedHeight - interfaceHeight;\n\t\t\tsettings.mh = settings.h && settings.h < settings.mh ? settings.h : settings.mh;\n\t\t}\n\n\t\thref = settings.get('href');\n\n\t\tloadingTimer = setTimeout(function () {\n\t\t\t$loadingOverlay.show();\n\t\t}, 100);\n\n\t\tif (settings.get('inline')) {\n\t\t\tvar $target = $(href).eq(0);\n\t\t\t// Inserts an empty placeholder where inline content is being pulled from.\n\t\t\t// An event is bound to put inline content back when Colorbox closes or loads new content.\n\t\t\t$inline = $('<div>').hide().insertBefore($target);\n\n\t\t\t$events.one(event_purge, function () {\n\t\t\t\t$inline.replaceWith($target);\n\t\t\t});\n\n\t\t\tprep($target);\n\t\t} else if (settings.get('iframe')) {\n\t\t\t// IFrame element won't be added to the DOM until it is ready to be displayed,\n\t\t\t// to avoid problems with DOM-ready JS that might be trying to run in that iframe.\n\t\t\tprep(\" \");\n\t\t} else if (settings.get('html')) {\n\t\t\tprep(settings.get('html'));\n\t\t} else if (isImage(settings, href)) {\n\n\t\t\thref = retinaUrl(settings, href);\n\n\t\t\tphoto = settings.get('createImg');\n\n\t\t\t$(photo)\n\t\t\t.addClass(prefix + 'Photo')\n\t\t\t.bind('error.'+prefix,function () {\n\t\t\t\tprep($tag(div, 'Error').html(settings.get('imgError')));\n\t\t\t})\n\t\t\t.one('load', function () {\n\t\t\t\tif (request !== requests) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// A small pause because some browsers will occassionaly report a\n\t\t\t\t// img.width and img.height of zero immediately after the img.onload fires\n\t\t\t\tsetTimeout(function(){\n\t\t\t\t\tvar percent;\n\n\t\t\t\t\tif (settings.get('retinaImage') && window.devicePixelRatio > 1) {\n\t\t\t\t\t\tphoto.height = photo.height / window.devicePixelRatio;\n\t\t\t\t\t\tphoto.width = photo.width / window.devicePixelRatio;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (settings.get('scalePhotos')) {\n\t\t\t\t\t\tsetResize = function () {\n\t\t\t\t\t\t\tphoto.height -= photo.height * percent;\n\t\t\t\t\t\t\tphoto.width -= photo.width * percent;\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (settings.mw && photo.width > settings.mw) {\n\t\t\t\t\t\t\tpercent = (photo.width - settings.mw) / photo.width;\n\t\t\t\t\t\t\tsetResize();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (settings.mh && photo.height > settings.mh) {\n\t\t\t\t\t\t\tpercent = (photo.height - settings.mh) / photo.height;\n\t\t\t\t\t\t\tsetResize();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (settings.h) {\n\t\t\t\t\t\tphoto.style.marginTop = Math.max(settings.mh - photo.height, 0) / 2 + 'px';\n\t\t\t\t\t}\n\n\t\t\t\t\tif ($related[1] && (settings.get('loop') || $related[index + 1])) {\n\t\t\t\t\t\tphoto.style.cursor = 'pointer';\n\n\t\t\t\t\t\t$(photo).bind('click.'+prefix, function () {\n\t\t\t\t\t\t\tpublicMethod.next();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tphoto.style.width = photo.width + 'px';\n\t\t\t\t\tphoto.style.height = photo.height + 'px';\n\t\t\t\t\tprep(photo);\n\t\t\t\t}, 1);\n\t\t\t});\n\n\t\t\tphoto.src = href;\n\n\t\t} else if (href) {\n\t\t\t$loadingBay.load(href, settings.get('data'), function (data, status) {\n\t\t\t\tif (request === requests) {\n\t\t\t\t\tprep(status === 'error' ? $tag(div, 'Error').html(settings.get('xhrError')) : $(this).contents());\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t// Navigates to the next page/image in a set.\n\tpublicMethod.next = function () {\n\t\tif (!active && $related[1] && (settings.get('loop') || $related[index + 1])) {\n\t\t\tindex = getIndex(1);\n\t\t\tlaunch($related[index]);\n\t\t}\n\t};\n\n\tpublicMethod.prev = function () {\n\t\tif (!active && $related[1] && (settings.get('loop') || index)) {\n\t\t\tindex = getIndex(-1);\n\t\t\tlaunch($related[index]);\n\t\t}\n\t};\n\n\t// Note: to use this within an iframe use the following format: parent.jQuery.colorbox.close();\n\tpublicMethod.close = function () {\n\t\tif (open && !closing) {\n\n\t\t\tclosing = true;\n\t\t\topen = false;\n\t\t\ttrigger(event_cleanup);\n\t\t\tsettings.get('onCleanup');\n\t\t\t$window.unbind('.' + prefix);\n\t\t\t$overlay.fadeTo(settings.get('fadeOut') || 0, 0);\n\n\t\t\t$box.stop().fadeTo(settings.get('fadeOut') || 0, 0, function () {\n\t\t\t\t$box.hide();\n\t\t\t\t$overlay.hide();\n\t\t\t\ttrigger(event_purge);\n\t\t\t\t$loaded.remove();\n\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tclosing = false;\n\t\t\t\t\ttrigger(event_closed);\n\t\t\t\t\tsettings.get('onClosed');\n\t\t\t\t}, 1);\n\t\t\t});\n\t\t}\n\t};\n\n\t// Removes changes Colorbox made to the document, but does not remove the plugin.\n\tpublicMethod.remove = function () {\n\t\tif (!$box) { return; }\n\n\t\t$box.stop();\n\t\t$[colorbox].close();\n\t\t$box.stop(false, true).remove();\n\t\t$overlay.remove();\n\t\tclosing = false;\n\t\t$box = null;\n\t\t$('.' + boxElement)\n\t\t\t.removeData(colorbox)\n\t\t\t.removeClass(boxElement);\n\n\t\t$(document).unbind('click.'+prefix).unbind('keydown.'+prefix);\n\t};\n\n\t// A method for fetching the current element Colorbox is referencing.\n\t// returns a jQuery object.\n\tpublicMethod.element = function () {\n\t\treturn $(settings.el);\n\t};\n\n\tpublicMethod.settings = defaults;\n\n}(jQuery, document, window));\n","/*!\n * jQuery Form Plugin\n * version: 4.3.0\n * Requires jQuery v1.7.2 or later\n * Project repository: https://github.com/jquery-form/form\n\n * Copyright 2017 Kevin Morris\n * Copyright 2006 M. Alsup\n\n * Dual licensed under the LGPL-2.1+ or MIT licenses\n * https://github.com/jquery-form/form#license\n\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2.1 of the License, or (at your option) any later version.\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Lesser General Public License for more details.\n */\n!function(r){\"function\"==typeof define&&define.amd?define([\"jquery\"],r):\"object\"==typeof module&&module.exports?module.exports=function(e,t){return void 0===t&&(t=\"undefined\"!=typeof window?require(\"jquery\"):require(\"jquery\")(e)),r(t),t}:r(jQuery)}(function(q){\"use strict\";var m=/\\r?\\n/g,S={};S.fileapi=void 0!==q('<input type=\"file\">').get(0).files,S.formdata=void 0!==window.FormData;var _=!!q.fn.prop;function o(e){var t=e.data;e.isDefaultPrevented()||(e.preventDefault(),q(e.target).closest(\"form\").ajaxSubmit(t))}function i(e){var t=e.target,r=q(t);if(!r.is(\"[type=submit],[type=image]\")){var a=r.closest(\"[type=submit]\");if(0===a.length)return;t=a[0]}var n,o=t.form;\"image\"===(o.clk=t).type&&(void 0!==e.offsetX?(o.clk_x=e.offsetX,o.clk_y=e.offsetY):\"function\"==typeof q.fn.offset?(n=r.offset(),o.clk_x=e.pageX-n.left,o.clk_y=e.pageY-n.top):(o.clk_x=e.pageX-t.offsetLeft,o.clk_y=e.pageY-t.offsetTop)),setTimeout(function(){o.clk=o.clk_x=o.clk_y=null},100)}function N(){var e;q.fn.ajaxSubmit.debug&&(e=\"[jquery.form] \"+Array.prototype.join.call(arguments,\"\"),window.console&&window.console.log?window.console.log(e):window.opera&&window.opera.postError&&window.opera.postError(e))}q.fn.attr2=function(){if(!_)return this.attr.apply(this,arguments);var e=this.prop.apply(this,arguments);return e&&e.jquery||\"string\"==typeof e?e:this.attr.apply(this,arguments)},q.fn.ajaxSubmit=function(M,e,t,r){if(!this.length)return N(\"ajaxSubmit: skipping submit process - no element selected\"),this;var O,a,n,o,X=this;\"function\"==typeof M?M={success:M}:\"string\"==typeof M||!1===M&&0<arguments.length?(M={url:M,data:e,dataType:t},\"function\"==typeof r&&(M.success=r)):void 0===M&&(M={}),O=M.method||M.type||this.attr2(\"method\"),n=(n=(n=\"string\"==typeof(a=M.url||this.attr2(\"action\"))?q.trim(a):\"\")||window.location.href||\"\")&&(n.match(/^([^#]+)/)||[])[1],o=/(MSIE|Trident)/.test(navigator.userAgent||\"\")&&/^https/i.test(window.location.href||\"\")?\"javascript:false\":\"about:blank\",M=q.extend(!0,{url:n,success:q.ajaxSettings.success,type:O||q.ajaxSettings.type,iframeSrc:o},M);var i={};if(this.trigger(\"form-pre-serialize\",[this,M,i]),i.veto)return N(\"ajaxSubmit: submit vetoed via form-pre-serialize trigger\"),this;if(M.beforeSerialize&&!1===M.beforeSerialize(this,M))return N(\"ajaxSubmit: submit aborted via beforeSerialize callback\"),this;var s=M.traditional;void 0===s&&(s=q.ajaxSettings.traditional);var u,c,C=[],l=this.formToArray(M.semantic,C,M.filtering);if(M.data&&(c=q.isFunction(M.data)?M.data(l):M.data,M.extraData=c,u=q.param(c,s)),M.beforeSubmit&&!1===M.beforeSubmit(l,this,M))return N(\"ajaxSubmit: submit aborted via beforeSubmit callback\"),this;if(this.trigger(\"form-submit-validate\",[l,this,M,i]),i.veto)return N(\"ajaxSubmit: submit vetoed via form-submit-validate trigger\"),this;var f=q.param(l,s);u&&(f=f?f+\"&\"+u:u),\"GET\"===M.type.toUpperCase()?(M.url+=(0<=M.url.indexOf(\"?\")?\"&\":\"?\")+f,M.data=null):M.data=f;var d,m,p,h=[];M.resetForm&&h.push(function(){X.resetForm()}),M.clearForm&&h.push(function(){X.clearForm(M.includeHidden)}),!M.dataType&&M.target?(d=M.success||function(){},h.push(function(e,t,r){var a=arguments,n=M.replaceTarget?\"replaceWith\":\"html\";q(M.target)[n](e).each(function(){d.apply(this,a)})})):M.success&&(q.isArray(M.success)?q.merge(h,M.success):h.push(M.success)),M.success=function(e,t,r){for(var a=M.context||this,n=0,o=h.length;n<o;n++)h[n].apply(a,[e,t,r||X,X])},M.error&&(m=M.error,M.error=function(e,t,r){var a=M.context||this;m.apply(a,[e,t,r,X])}),M.complete&&(p=M.complete,M.complete=function(e,t){var r=M.context||this;p.apply(r,[e,t,X])});var v=0<q(\"input[type=file]:enabled\",this).filter(function(){return\"\"!==q(this).val()}).length,g=\"multipart/form-data\",x=X.attr(\"enctype\")===g||X.attr(\"encoding\")===g,y=S.fileapi&&S.formdata;N(\"fileAPI :\"+y);var b,T=(v||x)&&!y;!1!==M.iframe&&(M.iframe||T)?M.closeKeepAlive?q.get(M.closeKeepAlive,function(){b=w(l)}):b=w(l):b=(v||x)&&y?function(e){for(var r=new FormData,t=0;t<e.length;t++)r.append(e[t].name,e[t].value);if(M.extraData){var a=function(e){var t,r,a=q.param(e,M.traditional).split(\"&\"),n=a.length,o=[];for(t=0;t<n;t++)a[t]=a[t].replace(/\\+/g,\" \"),r=a[t].split(\"=\"),o.push([decodeURIComponent(r[0]),decodeURIComponent(r[1])]);return o}(M.extraData);for(t=0;t<a.length;t++)a[t]&&r.append(a[t][0],a[t][1])}M.data=null;var n=q.extend(!0,{},q.ajaxSettings,M,{contentType:!1,processData:!1,cache:!1,type:O||\"POST\"});M.uploadProgress&&(n.xhr=function(){var e=q.ajaxSettings.xhr();return e.upload&&e.upload.addEventListener(\"progress\",function(e){var t=0,r=e.loaded||e.position,a=e.total;e.lengthComputable&&(t=Math.ceil(r/a*100)),M.uploadProgress(e,r,a,t)},!1),e});n.data=null;var o=n.beforeSend;return n.beforeSend=function(e,t){M.formData?t.data=M.formData:t.data=r,o&&o.call(this,e,t)},q.ajax(n)}(l):q.ajax(M),X.removeData(\"jqxhr\").data(\"jqxhr\",b);for(var j=0;j<C.length;j++)C[j]=null;return this.trigger(\"form-submit-notify\",[this,M]),this;function w(e){var t,r,l,f,o,d,m,p,a,n,h,v,i=X[0],g=q.Deferred();if(g.abort=function(e){p.abort(e)},e)for(r=0;r<C.length;r++)t=q(C[r]),_?t.prop(\"disabled\",!1):t.removeAttr(\"disabled\");(l=q.extend(!0,{},q.ajaxSettings,M)).context=l.context||l,o=\"jqFormIO\"+(new Date).getTime();var s=i.ownerDocument,u=X.closest(\"body\");if(l.iframeTarget?(n=(d=q(l.iframeTarget,s)).attr2(\"name\"))?o=n:d.attr2(\"name\",o):(d=q('<iframe name=\"'+o+'\" src=\"'+l.iframeSrc+'\" />',s)).css({position:\"absolute\",top:\"-1000px\",left:\"-1000px\"}),m=d[0],p={aborted:0,responseText:null,responseXML:null,status:0,statusText:\"n/a\",getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){},abort:function(e){var t=\"timeout\"===e?\"timeout\":\"aborted\";N(\"aborting upload... \"+t),this.aborted=1;try{m.contentWindow.document.execCommand&&m.contentWindow.document.execCommand(\"Stop\")}catch(e){}d.attr(\"src\",l.iframeSrc),p.error=t,l.error&&l.error.call(l.context,p,t,e),f&&q.event.trigger(\"ajaxError\",[p,l,t]),l.complete&&l.complete.call(l.context,p,t)}},(f=l.global)&&0==q.active++&&q.event.trigger(\"ajaxStart\"),f&&q.event.trigger(\"ajaxSend\",[p,l]),l.beforeSend&&!1===l.beforeSend.call(l.context,p,l))return l.global&&q.active--,g.reject(),g;if(p.aborted)return g.reject(),g;(a=i.clk)&&(n=a.name)&&!a.disabled&&(l.extraData=l.extraData||{},l.extraData[n]=a.value,\"image\"===a.type&&(l.extraData[n+\".x\"]=i.clk_x,l.extraData[n+\".y\"]=i.clk_y));var x=1,y=2;function b(t){var r=null;try{t.contentWindow&&(r=t.contentWindow.document)}catch(e){N(\"cannot get iframe.contentWindow document: \"+e)}if(r)return r;try{r=t.contentDocument?t.contentDocument:t.document}catch(e){N(\"cannot get iframe.contentDocument: \"+e),r=t.document}return r}var c=q(\"meta[name=csrf-token]\").attr(\"content\"),T=q(\"meta[name=csrf-param]\").attr(\"content\");function j(){var e=X.attr2(\"target\"),t=X.attr2(\"action\"),r=X.attr(\"enctype\")||X.attr(\"encoding\")||\"multipart/form-data\";i.setAttribute(\"target\",o),O&&!/post/i.test(O)||i.setAttribute(\"method\",\"POST\"),t!==l.url&&i.setAttribute(\"action\",l.url),l.skipEncodingOverride||O&&!/post/i.test(O)||X.attr({encoding:\"multipart/form-data\",enctype:\"multipart/form-data\"}),l.timeout&&(v=setTimeout(function(){h=!0,A(x)},l.timeout));var a=[];try{if(l.extraData)for(var n in l.extraData)l.extraData.hasOwnProperty(n)&&(q.isPlainObject(l.extraData[n])&&l.extraData[n].hasOwnProperty(\"name\")&&l.extraData[n].hasOwnProperty(\"value\")?a.push(q('<input type=\"hidden\" name=\"'+l.extraData[n].name+'\">',s).val(l.extraData[n].value).appendTo(i)[0]):a.push(q('<input type=\"hidden\" name=\"'+n+'\">',s).val(l.extraData[n]).appendTo(i)[0]));l.iframeTarget||d.appendTo(u),m.attachEvent?m.attachEvent(\"onload\",A):m.addEventListener(\"load\",A,!1),setTimeout(function e(){try{var t=b(m).readyState;N(\"state = \"+t),t&&\"uninitialized\"===t.toLowerCase()&&setTimeout(e,50)}catch(e){N(\"Server abort: \",e,\" (\",e.name,\")\"),A(y),v&&clearTimeout(v),v=void 0}},15);try{i.submit()}catch(e){document.createElement(\"form\").submit.apply(i)}}finally{i.setAttribute(\"action\",t),i.setAttribute(\"enctype\",r),e?i.setAttribute(\"target\",e):X.removeAttr(\"target\"),q(a).remove()}}T&&c&&(l.extraData=l.extraData||{},l.extraData[T]=c),l.forceSync?j():setTimeout(j,10);var w,S,k,D=50;function A(e){if(!p.aborted&&!k){if((S=b(m))||(N(\"cannot access response document\"),e=y),e===x&&p)return p.abort(\"timeout\"),void g.reject(p,\"timeout\");if(e===y&&p)return p.abort(\"server abort\"),void g.reject(p,\"error\",\"server abort\");if(S&&S.location.href!==l.iframeSrc||h){m.detachEvent?m.detachEvent(\"onload\",A):m.removeEventListener(\"load\",A,!1);var t,r=\"success\";try{if(h)throw\"timeout\";var a=\"xml\"===l.dataType||S.XMLDocument||q.isXMLDoc(S);if(N(\"isXml=\"+a),!a&&window.opera&&(null===S.body||!S.body.innerHTML)&&--D)return N(\"requeing onLoad callback, DOM not available\"),void setTimeout(A,250);var n=S.body?S.body:S.documentElement;p.responseText=n?n.innerHTML:null,p.responseXML=S.XMLDocument?S.XMLDocument:S,a&&(l.dataType=\"xml\"),p.getResponseHeader=function(e){return{\"content-type\":l.dataType}[e.toLowerCase()]},n&&(p.status=Number(n.getAttribute(\"status\"))||p.status,p.statusText=n.getAttribute(\"statusText\")||p.statusText);var o,i,s,u=(l.dataType||\"\").toLowerCase(),c=/(json|script|text)/.test(u);c||l.textarea?(o=S.getElementsByTagName(\"textarea\")[0])?(p.responseText=o.value,p.status=Number(o.getAttribute(\"status\"))||p.status,p.statusText=o.getAttribute(\"statusText\")||p.statusText):c&&(i=S.getElementsByTagName(\"pre\")[0],s=S.getElementsByTagName(\"body\")[0],i?p.responseText=i.textContent?i.textContent:i.innerText:s&&(p.responseText=s.textContent?s.textContent:s.innerText)):\"xml\"===u&&!p.responseXML&&p.responseText&&(p.responseXML=F(p.responseText));try{w=E(p,u,l)}catch(e){r=\"parsererror\",p.error=t=e||r}}catch(e){N(\"error caught: \",e),r=\"error\",p.error=t=e||r}p.aborted&&(N(\"upload aborted\"),r=null),p.status&&(r=200<=p.status&&p.status<300||304===p.status?\"success\":\"error\"),\"success\"===r?(l.success&&l.success.call(l.context,w,\"success\",p),g.resolve(p.responseText,\"success\",p),f&&q.event.trigger(\"ajaxSuccess\",[p,l])):r&&(void 0===t&&(t=p.statusText),l.error&&l.error.call(l.context,p,r,t),g.reject(p,\"error\",t),f&&q.event.trigger(\"ajaxError\",[p,l,t])),f&&q.event.trigger(\"ajaxComplete\",[p,l]),f&&!--q.active&&q.event.trigger(\"ajaxStop\"),l.complete&&l.complete.call(l.context,p,r),k=!0,l.timeout&&clearTimeout(v),setTimeout(function(){l.iframeTarget?d.attr(\"src\",l.iframeSrc):d.remove(),p.responseXML=null},100)}}}var F=q.parseXML||function(e,t){return window.ActiveXObject?((t=new ActiveXObject(\"Microsoft.XMLDOM\")).async=\"false\",t.loadXML(e)):t=(new DOMParser).parseFromString(e,\"text/xml\"),t&&t.documentElement&&\"parsererror\"!==t.documentElement.nodeName?t:null},L=q.parseJSON||function(e){return window.eval(\"(\"+e+\")\")},E=function(e,t,r){var a=e.getResponseHeader(\"content-type\")||\"\",n=(\"xml\"===t||!t)&&0<=a.indexOf(\"xml\"),o=n?e.responseXML:e.responseText;return n&&\"parsererror\"===o.documentElement.nodeName&&q.error&&q.error(\"parsererror\"),r&&r.dataFilter&&(o=r.dataFilter(o,t)),\"string\"==typeof o&&((\"json\"===t||!t)&&0<=a.indexOf(\"json\")?o=L(o):(\"script\"===t||!t)&&0<=a.indexOf(\"javascript\")&&q.globalEval(o)),o};return g}},q.fn.ajaxForm=function(e,t,r,a){if((\"string\"==typeof e||!1===e&&0<arguments.length)&&(e={url:e,data:t,dataType:r},\"function\"==typeof a&&(e.success=a)),(e=e||{}).delegation=e.delegation&&q.isFunction(q.fn.on),e.delegation||0!==this.length)return e.delegation?(q(document).off(\"submit.form-plugin\",this.selector,o).off(\"click.form-plugin\",this.selector,i).on(\"submit.form-plugin\",this.selector,e,o).on(\"click.form-plugin\",this.selector,e,i),this):(e.beforeFormUnbind&&e.beforeFormUnbind(this,e),this.ajaxFormUnbind().on(\"submit.form-plugin\",e,o).on(\"click.form-plugin\",e,i));var n={s:this.selector,c:this.context};return!q.isReady&&n.s?(N(\"DOM not ready, queuing ajaxForm\"),q(function(){q(n.s,n.c).ajaxForm(e)})):N(\"terminating; zero elements found by selector\"+(q.isReady?\"\":\" (DOM not ready)\")),this},q.fn.ajaxFormUnbind=function(){return this.off(\"submit.form-plugin click.form-plugin\")},q.fn.formToArray=function(e,t,r){var a=[];if(0===this.length)return a;var n,o,i,s,u,c,l,f,d,m,p=this[0],h=this.attr(\"id\"),v=(v=e||void 0===p.elements?p.getElementsByTagName(\"*\"):p.elements)&&q.makeArray(v);if(h&&(e||/(Edge|Trident)\\//.test(navigator.userAgent))&&(n=q(':input[form=\"'+h+'\"]').get()).length&&(v=(v||[]).concat(n)),!v||!v.length)return a;for(q.isFunction(r)&&(v=q.map(v,r)),o=0,c=v.length;o<c;o++)if((m=(u=v[o]).name)&&!u.disabled)if(e&&p.clk&&\"image\"===u.type)p.clk===u&&(a.push({name:m,value:q(u).val(),type:u.type}),a.push({name:m+\".x\",value:p.clk_x},{name:m+\".y\",value:p.clk_y}));else if((s=q.fieldValue(u,!0))&&s.constructor===Array)for(t&&t.push(u),i=0,l=s.length;i<l;i++)a.push({name:m,value:s[i]});else if(S.fileapi&&\"file\"===u.type){t&&t.push(u);var g=u.files;if(g.length)for(i=0;i<g.length;i++)a.push({name:m,value:g[i],type:u.type});else a.push({name:m,value:\"\",type:u.type})}else null!=s&&(t&&t.push(u),a.push({name:m,value:s,type:u.type,required:u.required}));return e||!p.clk||(m=(d=(f=q(p.clk))[0]).name)&&!d.disabled&&\"image\"===d.type&&(a.push({name:m,value:f.val()}),a.push({name:m+\".x\",value:p.clk_x},{name:m+\".y\",value:p.clk_y})),a},q.fn.formSerialize=function(e){return q.param(this.formToArray(e))},q.fn.fieldSerialize=function(n){var o=[];return this.each(function(){var e=this.name;if(e){var t=q.fieldValue(this,n);if(t&&t.constructor===Array)for(var r=0,a=t.length;r<a;r++)o.push({name:e,value:t[r]});else null!=t&&o.push({name:this.name,value:t})}}),q.param(o)},q.fn.fieldValue=function(e){for(var t=[],r=0,a=this.length;r<a;r++){var n=this[r],o=q.fieldValue(n,e);null==o||o.constructor===Array&&!o.length||(o.constructor===Array?q.merge(t,o):t.push(o))}return t},q.fieldValue=function(e,t){var r=e.name,a=e.type,n=e.tagName.toLowerCase();if(void 0===t&&(t=!0),t&&(!r||e.disabled||\"reset\"===a||\"button\"===a||(\"checkbox\"===a||\"radio\"===a)&&!e.checked||(\"submit\"===a||\"image\"===a)&&e.form&&e.form.clk!==e||\"select\"===n&&-1===e.selectedIndex))return null;if(\"select\"!==n)return q(e).val().replace(m,\"\\r\\n\");var o=e.selectedIndex;if(o<0)return null;for(var i=[],s=e.options,u=\"select-one\"===a,c=u?o+1:s.length,l=u?o:0;l<c;l++){var f=s[l];if(f.selected&&!f.disabled){var d=(d=f.value)||(f.attributes&&f.attributes.value&&!f.attributes.value.specified?f.text:f.value);if(u)return d;i.push(d)}}return i},q.fn.clearForm=function(e){return this.each(function(){q(\"input,select,textarea\",this).clearFields(e)})},q.fn.clearFields=q.fn.clearInputs=function(r){var a=/^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i;return this.each(function(){var e=this.type,t=this.tagName.toLowerCase();a.test(e)||\"textarea\"===t?this.value=\"\":\"checkbox\"===e||\"radio\"===e?this.checked=!1:\"select\"===t?this.selectedIndex=-1:\"file\"===e?/MSIE/.test(navigator.userAgent)?q(this).replaceWith(q(this).clone(!0)):q(this).val(\"\"):r&&(!0===r&&/hidden/.test(e)||\"string\"==typeof r&&q(this).is(r))&&(this.value=\"\")})},q.fn.resetForm=function(){return this.each(function(){var t=q(this),e=this.tagName.toLowerCase();switch(e){case\"input\":this.checked=this.defaultChecked;case\"textarea\":return this.value=this.defaultValue,!0;case\"option\":case\"optgroup\":var r=t.parents(\"select\");return r.length&&r[0].multiple?\"option\"===e?this.selected=this.defaultSelected:t.find(\"option\").resetForm():r.resetForm(),!0;case\"select\":return t.find(\"option\").each(function(e){if(this.selected=this.defaultSelected,this.defaultSelected&&!t[0].multiple)return t[0].selectedIndex=e,!1}),!0;case\"label\":var a=q(t.attr(\"for\")),n=t.find(\"input,select,textarea\");return a[0]&&n.unshift(a[0]),n.resetForm(),!0;case\"form\":return\"function\"!=typeof this.reset&&(\"object\"!=typeof this.reset||this.reset.nodeType)||this.reset(),!0;default:return t.find(\"form,input,label,select,textarea\").resetForm(),!0}})},q.fn.enable=function(e){return void 0===e&&(e=!0),this.each(function(){this.disabled=!e})},q.fn.selected=function(r){return void 0===r&&(r=!0),this.each(function(){var e,t=this.type;\"checkbox\"===t||\"radio\"===t?this.checked=r:\"option\"===this.tagName.toLowerCase()&&(e=q(this).parent(\"select\"),r&&e[0]&&\"select-one\"===e[0].type&&e.find(\"option\").selected(!1),this.selected=r)})},q.fn.ajaxSubmit.debug=!1});\n//# sourceMappingURL=jquery.form.min.js.map\n","/*!\n * jQuery Migrate - v3.4.1 - 2023-02-23T15:31Z\n * Copyright OpenJS Foundation and other contributors\n */\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\" ], function( jQuery ) {\n\t\t\treturn factory( jQuery, window );\n\t\t} );\n\t} else if ( typeof module === \"object\" && module.exports ) {\n\n\t\t// Node/CommonJS\n\t\t// eslint-disable-next-line no-undef\n\t\tmodule.exports = factory( require( \"jquery\" ), window );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery, window );\n\t}\n} )( function( jQuery, window ) {\n\"use strict\";\n\njQuery.migrateVersion = \"3.4.1\";\n\n// Returns 0 if v1 == v2, -1 if v1 < v2, 1 if v1 > v2\nfunction compareVersions( v1, v2 ) {\n\tvar i,\n\t\trVersionParts = /^(\\d+)\\.(\\d+)\\.(\\d+)/,\n\t\tv1p = rVersionParts.exec( v1 ) || [ ],\n\t\tv2p = rVersionParts.exec( v2 ) || [ ];\n\n\tfor ( i = 1; i <= 3; i++ ) {\n\t\tif ( +v1p[ i ] > +v2p[ i ] ) {\n\t\t\treturn 1;\n\t\t}\n\t\tif ( +v1p[ i ] < +v2p[ i ] ) {\n\t\t\treturn -1;\n\t\t}\n\t}\n\treturn 0;\n}\n\nfunction jQueryVersionSince( version ) {\n\treturn compareVersions( jQuery.fn.jquery, version ) >= 0;\n}\n\n// A map from disabled patch codes to `true`. This should really\n// be a `Set` but those are unsupported in IE.\nvar disabledPatches = Object.create( null );\n\n// Don't apply patches for specified codes. Helpful for code bases\n// where some Migrate warnings have been addressed and it's desirable\n// to avoid needless patches or false positives.\njQuery.migrateDisablePatches = function() {\n\tvar i;\n\tfor ( i = 0; i < arguments.length; i++ ) {\n\t\tdisabledPatches[ arguments[ i ] ] = true;\n\t}\n};\n\n// Allow enabling patches disabled via `jQuery.migrateDisablePatches`.\n// Helpful if you want to disable a patch only for some code that won't\n// be updated soon to be able to focus on other warnings - and enable it\n// immediately after such a call:\n// ```js\n// jQuery.migrateDisablePatches( \"workaroundA\" );\n// elem.pluginViolatingWarningA( \"pluginMethod\" );\n// jQuery.migrateEnablePatches( \"workaroundA\" );\n// ```\njQuery.migrateEnablePatches = function() {\n\tvar i;\n\tfor ( i = 0; i < arguments.length; i++ ) {\n\t\tdelete disabledPatches[ arguments[ i ] ];\n\t}\n};\n\njQuery.migrateIsPatchEnabled = function( patchCode ) {\n\treturn !disabledPatches[ patchCode ];\n};\n\n( function() {\n\n\t// Support: IE9 only\n\t// IE9 only creates console object when dev tools are first opened\n\t// IE9 console is a host object, callable but doesn't have .apply()\n\tif ( !window.console || !window.console.log ) {\n\t\treturn;\n\t}\n\n\t// Need jQuery 3.x-4.x and no older Migrate loaded\n\tif ( !jQuery || !jQueryVersionSince( \"3.0.0\" ) ||\n\t\t\tjQueryVersionSince( \"5.0.0\" ) ) {\n\t\twindow.console.log( \"JQMIGRATE: jQuery 3.x-4.x REQUIRED\" );\n\t}\n\tif ( jQuery.migrateWarnings ) {\n\t\twindow.console.log( \"JQMIGRATE: Migrate plugin loaded multiple times\" );\n\t}\n\n\t// Show a message on the console so devs know we're active\n\twindow.console.log( \"JQMIGRATE: Migrate is installed\" +\n\t\t( jQuery.migrateMute ? \"\" : \" with logging active\" ) +\n\t\t\", version \" + jQuery.migrateVersion );\n\n} )();\n\nvar warnedAbout = {};\n\n// By default each warning is only reported once.\njQuery.migrateDeduplicateWarnings = true;\n\n// List of warnings already given; public read only\njQuery.migrateWarnings = [];\n\n// Set to false to disable traces that appear with warnings\nif ( jQuery.migrateTrace === undefined ) {\n\tjQuery.migrateTrace = true;\n}\n\n// Forget any warnings we've already given; public\njQuery.migrateReset = function() {\n\twarnedAbout = {};\n\tjQuery.migrateWarnings.length = 0;\n};\n\nfunction migrateWarn( code, msg ) {\n\tvar console = window.console;\n\tif ( jQuery.migrateIsPatchEnabled( code ) &&\n\t\t( !jQuery.migrateDeduplicateWarnings || !warnedAbout[ msg ] ) ) {\n\t\twarnedAbout[ msg ] = true;\n\t\tjQuery.migrateWarnings.push( msg + \" [\" + code + \"]\" );\n\t\tif ( console && console.warn && !jQuery.migrateMute ) {\n\t\t\tconsole.warn( \"JQMIGRATE: \" + msg );\n\t\t\tif ( jQuery.migrateTrace && console.trace ) {\n\t\t\t\tconsole.trace();\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction migrateWarnProp( obj, prop, value, code, msg ) {\n\tObject.defineProperty( obj, prop, {\n\t\tconfigurable: true,\n\t\tenumerable: true,\n\t\tget: function() {\n\t\t\tmigrateWarn( code, msg );\n\t\t\treturn value;\n\t\t},\n\t\tset: function( newValue ) {\n\t\t\tmigrateWarn( code, msg );\n\t\t\tvalue = newValue;\n\t\t}\n\t} );\n}\n\nfunction migrateWarnFuncInternal( obj, prop, newFunc, code, msg ) {\n\tvar finalFunc,\n\t\torigFunc = obj[ prop ];\n\n\tobj[ prop ] = function() {\n\n\t\t// If `msg` not provided, do not warn; more sophisticated warnings\n\t\t// logic is most likely embedded in `newFunc`, in that case here\n\t\t// we just care about the logic choosing the proper implementation\n\t\t// based on whether the patch is disabled or not.\n\t\tif ( msg ) {\n\t\t\tmigrateWarn( code, msg );\n\t\t}\n\n\t\t// Since patches can be disabled & enabled dynamically, we\n\t\t// need to decide which implementation to run on each invocation.\n\t\tfinalFunc = jQuery.migrateIsPatchEnabled( code ) ?\n\t\t\tnewFunc :\n\n\t\t\t// The function may not have existed originally so we need a fallback.\n\t\t\t( origFunc || jQuery.noop );\n\n\t\treturn finalFunc.apply( this, arguments );\n\t};\n}\n\nfunction migratePatchAndWarnFunc( obj, prop, newFunc, code, msg ) {\n\tif ( !msg ) {\n\t\tthrow new Error( \"No warning message provided\" );\n\t}\n\treturn migrateWarnFuncInternal( obj, prop, newFunc, code, msg );\n}\n\nfunction migratePatchFunc( obj, prop, newFunc, code ) {\n\treturn migrateWarnFuncInternal( obj, prop, newFunc, code );\n}\n\nif ( window.document.compatMode === \"BackCompat\" ) {\n\n\t// jQuery has never supported or tested Quirks Mode\n\tmigrateWarn( \"quirks\", \"jQuery is not compatible with Quirks Mode\" );\n}\n\nvar findProp,\n\tclass2type = {},\n\toldInit = jQuery.fn.init,\n\toldFind = jQuery.find,\n\n\trattrHashTest = /\\[(\\s*[-\\w]+\\s*)([~|^$*]?=)\\s*([-\\w#]*?#[-\\w#]*)\\s*\\]/,\n\trattrHashGlob = /\\[(\\s*[-\\w]+\\s*)([~|^$*]?=)\\s*([-\\w#]*?#[-\\w#]*)\\s*\\]/g,\n\n\t// Require that the \"whitespace run\" starts from a non-whitespace\n\t// to avoid O(N^2) behavior when the engine would try matching \"\\s+$\" at each space position.\n\trtrim = /^[\\s\\uFEFF\\xA0]+|([^\\s\\uFEFF\\xA0])[\\s\\uFEFF\\xA0]+$/g;\n\nmigratePatchFunc( jQuery.fn, \"init\", function( arg1 ) {\n\tvar args = Array.prototype.slice.call( arguments );\n\n\tif ( jQuery.migrateIsPatchEnabled( \"selector-empty-id\" ) &&\n\t\ttypeof arg1 === \"string\" && arg1 === \"#\" ) {\n\n\t\t// JQuery( \"#\" ) is a bogus ID selector, but it returned an empty set\n\t\t// before jQuery 3.0\n\t\tmigrateWarn( \"selector-empty-id\", \"jQuery( '#' ) is not a valid selector\" );\n\t\targs[ 0 ] = [];\n\t}\n\n\treturn oldInit.apply( this, args );\n}, \"selector-empty-id\" );\n\n// This is already done in Core but the above patch will lose this assignment\n// so we need to redo it. It doesn't matter whether the patch is enabled or not\n// as the method is always going to be a Migrate-created wrapper.\njQuery.fn.init.prototype = jQuery.fn;\n\nmigratePatchFunc( jQuery, \"find\", function( selector ) {\n\tvar args = Array.prototype.slice.call( arguments );\n\n\t// Support: PhantomJS 1.x\n\t// String#match fails to match when used with a //g RegExp, only on some strings\n\tif ( typeof selector === \"string\" && rattrHashTest.test( selector ) ) {\n\n\t\t// The nonstandard and undocumented unquoted-hash was removed in jQuery 1.12.0\n\t\t// First see if qS thinks it's a valid selector, if so avoid a false positive\n\t\ttry {\n\t\t\twindow.document.querySelector( selector );\n\t\t} catch ( err1 ) {\n\n\t\t\t// Didn't *look* valid to qSA, warn and try quoting what we think is the value\n\t\t\tselector = selector.replace( rattrHashGlob, function( _, attr, op, value ) {\n\t\t\t\treturn \"[\" + attr + op + \"\\\"\" + value + \"\\\"]\";\n\t\t\t} );\n\n\t\t\t// If the regexp *may* have created an invalid selector, don't update it\n\t\t\t// Note that there may be false alarms if selector uses jQuery extensions\n\t\t\ttry {\n\t\t\t\twindow.document.querySelector( selector );\n\t\t\t\tmigrateWarn( \"selector-hash\",\n\t\t\t\t\t\"Attribute selector with '#' must be quoted: \" + args[ 0 ] );\n\t\t\t\targs[ 0 ] = selector;\n\t\t\t} catch ( err2 ) {\n\t\t\t\tmigrateWarn( \"selector-hash\",\n\t\t\t\t\t\"Attribute selector with '#' was not fixed: \" + args[ 0 ] );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oldFind.apply( this, args );\n}, \"selector-hash\" );\n\n// Copy properties attached to original jQuery.find method (e.g. .attr, .isXML)\nfor ( findProp in oldFind ) {\n\tif ( Object.prototype.hasOwnProperty.call( oldFind, findProp ) ) {\n\t\tjQuery.find[ findProp ] = oldFind[ findProp ];\n\t}\n}\n\n// The number of elements contained in the matched element set\nmigratePatchAndWarnFunc( jQuery.fn, \"size\", function() {\n\treturn this.length;\n}, \"size\",\n\"jQuery.fn.size() is deprecated and removed; use the .length property\" );\n\nmigratePatchAndWarnFunc( jQuery, \"parseJSON\", function() {\n\treturn JSON.parse.apply( null, arguments );\n}, \"parseJSON\",\n\"jQuery.parseJSON is deprecated; use JSON.parse\" );\n\nmigratePatchAndWarnFunc( jQuery, \"holdReady\", jQuery.holdReady,\n\t\"holdReady\", \"jQuery.holdReady is deprecated\" );\n\nmigratePatchAndWarnFunc( jQuery, \"unique\", jQuery.uniqueSort,\n\t\"unique\", \"jQuery.unique is deprecated; use jQuery.uniqueSort\" );\n\n// Now jQuery.expr.pseudos is the standard incantation\nmigrateWarnProp( jQuery.expr, \"filters\", jQuery.expr.pseudos, \"expr-pre-pseudos\",\n\t\"jQuery.expr.filters is deprecated; use jQuery.expr.pseudos\" );\nmigrateWarnProp( jQuery.expr, \":\", jQuery.expr.pseudos, \"expr-pre-pseudos\",\n\t\"jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos\" );\n\n// Prior to jQuery 3.1.1 there were internal refs so we don't warn there\nif ( jQueryVersionSince( \"3.1.1\" ) ) {\n\tmigratePatchAndWarnFunc( jQuery, \"trim\", function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"$1\" );\n\t}, \"trim\",\n\t\"jQuery.trim is deprecated; use String.prototype.trim\" );\n}\n\n// Prior to jQuery 3.2 there were internal refs so we don't warn there\nif ( jQueryVersionSince( \"3.2.0\" ) ) {\n\tmigratePatchAndWarnFunc( jQuery, \"nodeName\", function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t}, \"nodeName\",\n\t\"jQuery.nodeName is deprecated\" );\n\n\tmigratePatchAndWarnFunc( jQuery, \"isArray\", Array.isArray, \"isArray\",\n\t\t\"jQuery.isArray is deprecated; use Array.isArray\"\n\t);\n}\n\nif ( jQueryVersionSince( \"3.3.0\" ) ) {\n\n\tmigratePatchAndWarnFunc( jQuery, \"isNumeric\", function( obj ) {\n\n\t\t\t// As of jQuery 3.0, isNumeric is limited to\n\t\t\t// strings and numbers (primitives or objects)\n\t\t\t// that can be coerced to finite numbers (gh-2662)\n\t\t\tvar type = typeof obj;\n\t\t\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t\t\t// ...but misinterprets leading-number strings, e.g. hex literals (\"0x...\")\n\t\t\t\t// subtraction forces infinities to NaN\n\t\t\t\t!isNaN( obj - parseFloat( obj ) );\n\t\t}, \"isNumeric\",\n\t\t\"jQuery.isNumeric() is deprecated\"\n\t);\n\n\t// Populate the class2type map\n\tjQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".\n\t\tsplit( \" \" ),\n\tfunction( _, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\n\tmigratePatchAndWarnFunc( jQuery, \"type\", function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + \"\";\n\t\t}\n\n\t\t// Support: Android <=2.3 only (functionish RegExp)\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ Object.prototype.toString.call( obj ) ] || \"object\" :\n\t\t\ttypeof obj;\n\t}, \"type\",\n\t\"jQuery.type is deprecated\" );\n\n\tmigratePatchAndWarnFunc( jQuery, \"isFunction\",\n\t\tfunction( obj ) {\n\t\t\treturn typeof obj === \"function\";\n\t\t}, \"isFunction\",\n\t\t\"jQuery.isFunction() is deprecated\" );\n\n\tmigratePatchAndWarnFunc( jQuery, \"isWindow\",\n\t\tfunction( obj ) {\n\t\t\treturn obj != null && obj === obj.window;\n\t\t}, \"isWindow\",\n\t\t\"jQuery.isWindow() is deprecated\"\n\t);\n}\n\n// Support jQuery slim which excludes the ajax module\nif ( jQuery.ajax ) {\n\nvar oldAjax = jQuery.ajax,\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\nmigratePatchFunc( jQuery, \"ajax\", function() {\n\tvar jQXHR = oldAjax.apply( this, arguments );\n\n\t// Be sure we got a jQXHR (e.g., not sync)\n\tif ( jQXHR.promise ) {\n\t\tmigratePatchAndWarnFunc( jQXHR, \"success\", jQXHR.done, \"jqXHR-methods\",\n\t\t\t\"jQXHR.success is deprecated and removed\" );\n\t\tmigratePatchAndWarnFunc( jQXHR, \"error\", jQXHR.fail, \"jqXHR-methods\",\n\t\t\t\"jQXHR.error is deprecated and removed\" );\n\t\tmigratePatchAndWarnFunc( jQXHR, \"complete\", jQXHR.always, \"jqXHR-methods\",\n\t\t\t\"jQXHR.complete is deprecated and removed\" );\n\t}\n\n\treturn jQXHR;\n}, \"jqXHR-methods\" );\n\n// Only trigger the logic in jQuery <4 as the JSON-to-JSONP auto-promotion\n// behavior is gone in jQuery 4.0 and as it has security implications, we don't\n// want to restore the legacy behavior.\nif ( !jQueryVersionSince( \"4.0.0\" ) ) {\n\n\t// Register this prefilter before the jQuery one. Otherwise, a promoted\n\t// request is transformed into one with the script dataType and we can't\n\t// catch it anymore.\n\tjQuery.ajaxPrefilter( \"+json\", function( s ) {\n\n\t\t// Warn if JSON-to-JSONP auto-promotion happens.\n\t\tif ( s.jsonp !== false && ( rjsonp.test( s.url ) ||\n\t\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data )\n\t\t) ) {\n\t\t\tmigrateWarn( \"jsonp-promotion\", \"JSON-to-JSONP auto-promotion is deprecated\" );\n\t\t}\n\t} );\n}\n\n}\n\nvar oldRemoveAttr = jQuery.fn.removeAttr,\n\toldToggleClass = jQuery.fn.toggleClass,\n\trmatchNonSpace = /\\S+/g;\n\nmigratePatchFunc( jQuery.fn, \"removeAttr\", function( name ) {\n\tvar self = this,\n\t\tpatchNeeded = false;\n\n\tjQuery.each( name.match( rmatchNonSpace ), function( _i, attr ) {\n\t\tif ( jQuery.expr.match.bool.test( attr ) ) {\n\n\t\t\t// Only warn if at least a single node had the property set to\n\t\t\t// something else than `false`. Otherwise, this Migrate patch\n\t\t\t// doesn't influence the behavior and there's no need to set or warn.\n\t\t\tself.each( function() {\n\t\t\t\tif ( jQuery( this ).prop( attr ) !== false ) {\n\t\t\t\t\tpatchNeeded = true;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\tif ( patchNeeded ) {\n\t\t\tmigrateWarn( \"removeAttr-bool\",\n\t\t\t\t\"jQuery.fn.removeAttr no longer sets boolean properties: \" + attr );\n\t\t\tself.prop( attr, false );\n\t\t}\n\t} );\n\n\treturn oldRemoveAttr.apply( this, arguments );\n}, \"removeAttr-bool\" );\n\nmigratePatchFunc( jQuery.fn, \"toggleClass\", function( state ) {\n\n\t// Only deprecating no-args or single boolean arg\n\tif ( state !== undefined && typeof state !== \"boolean\" ) {\n\n\t\treturn oldToggleClass.apply( this, arguments );\n\t}\n\n\tmigrateWarn( \"toggleClass-bool\", \"jQuery.fn.toggleClass( boolean ) is deprecated\" );\n\n\t// Toggle entire class name of each element\n\treturn this.each( function() {\n\t\tvar className = this.getAttribute && this.getAttribute( \"class\" ) || \"\";\n\n\t\tif ( className ) {\n\t\t\tjQuery.data( this, \"__className__\", className );\n\t\t}\n\n\t\t// If the element has a class name or if we're passed `false`,\n\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t// falling back to the empty string if nothing was stored.\n\t\tif ( this.setAttribute ) {\n\t\t\tthis.setAttribute( \"class\",\n\t\t\t\tclassName || state === false ?\n\t\t\t\t\"\" :\n\t\t\t\tjQuery.data( this, \"__className__\" ) || \"\"\n\t\t\t);\n\t\t}\n\t} );\n}, \"toggleClass-bool\" );\n\nfunction camelCase( string ) {\n\treturn string.replace( /-([a-z])/g, function( _, letter ) {\n\t\treturn letter.toUpperCase();\n\t} );\n}\n\nvar origFnCss, internalCssNumber,\n\tinternalSwapCall = false,\n\tralphaStart = /^[a-z]/,\n\n\t// The regex visualized:\n\t//\n\t// /----------\\\n\t// | | /-------\\\n\t// | / Top \\ | | |\n\t// /--- Border ---+-| Right |-+---+- Width -+---\\\n\t// | | Bottom | |\n\t// | \\ Left / |\n\t// | |\n\t// | /----------\\ |\n\t// | /-------------\\ | | |- END\n\t// | | | | / Top \\ | |\n\t// | | / Margin \\ | | | Right | | |\n\t// |---------+-| |-+---+-| Bottom |-+----|\n\t// | \\ Padding / \\ Left / |\n\t// BEGIN -| |\n\t// | /---------\\ |\n\t// | | | |\n\t// | | / Min \\ | / Width \\ |\n\t// \\--------------+-| |-+---| |---/\n\t// \\ Max / \\ Height /\n\trautoPx = /^(?:Border(?:Top|Right|Bottom|Left)?(?:Width|)|(?:Margin|Padding)?(?:Top|Right|Bottom|Left)?|(?:Min|Max)?(?:Width|Height))$/;\n\n// If this version of jQuery has .swap(), don't false-alarm on internal uses\nif ( jQuery.swap ) {\n\tjQuery.each( [ \"height\", \"width\", \"reliableMarginRight\" ], function( _, name ) {\n\t\tvar oldHook = jQuery.cssHooks[ name ] && jQuery.cssHooks[ name ].get;\n\n\t\tif ( oldHook ) {\n\t\t\tjQuery.cssHooks[ name ].get = function() {\n\t\t\t\tvar ret;\n\n\t\t\t\tinternalSwapCall = true;\n\t\t\t\tret = oldHook.apply( this, arguments );\n\t\t\t\tinternalSwapCall = false;\n\t\t\t\treturn ret;\n\t\t\t};\n\t\t}\n\t} );\n}\n\nmigratePatchFunc( jQuery, \"swap\", function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\tif ( !internalSwapCall ) {\n\t\tmigrateWarn( \"swap\", \"jQuery.swap() is undocumented and deprecated\" );\n\t}\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n}, \"swap\" );\n\nif ( jQueryVersionSince( \"3.4.0\" ) && typeof Proxy !== \"undefined\" ) {\n\tjQuery.cssProps = new Proxy( jQuery.cssProps || {}, {\n\t\tset: function() {\n\t\t\tmigrateWarn( \"cssProps\", \"jQuery.cssProps is deprecated\" );\n\t\t\treturn Reflect.set.apply( this, arguments );\n\t\t}\n\t} );\n}\n\n// In jQuery >=4 where jQuery.cssNumber is missing fill it with the latest 3.x version:\n// https://github.com/jquery/jquery/blob/3.6.0/src/css.js#L212-L233\n// This way, number values for the CSS properties below won't start triggering\n// Migrate warnings when jQuery gets updated to >=4.0.0 (gh-438).\nif ( jQueryVersionSince( \"4.0.0\" ) ) {\n\n\t// We need to keep this as a local variable as we need it internally\n\t// in a `jQuery.fn.css` patch and this usage shouldn't warn.\n\tinternalCssNumber = {\n\t\tanimationIterationCount: true,\n\t\tcolumnCount: true,\n\t\tfillOpacity: true,\n\t\tflexGrow: true,\n\t\tflexShrink: true,\n\t\tfontWeight: true,\n\t\tgridArea: true,\n\t\tgridColumn: true,\n\t\tgridColumnEnd: true,\n\t\tgridColumnStart: true,\n\t\tgridRow: true,\n\t\tgridRowEnd: true,\n\t\tgridRowStart: true,\n\t\tlineHeight: true,\n\t\topacity: true,\n\t\torder: true,\n\t\torphans: true,\n\t\twidows: true,\n\t\tzIndex: true,\n\t\tzoom: true\n\t};\n\n\tif ( typeof Proxy !== \"undefined\" ) {\n\t\tjQuery.cssNumber = new Proxy( internalCssNumber, {\n\t\t\tget: function() {\n\t\t\t\tmigrateWarn( \"css-number\", \"jQuery.cssNumber is deprecated\" );\n\t\t\t\treturn Reflect.get.apply( this, arguments );\n\t\t\t},\n\t\t\tset: function() {\n\t\t\t\tmigrateWarn( \"css-number\", \"jQuery.cssNumber is deprecated\" );\n\t\t\t\treturn Reflect.set.apply( this, arguments );\n\t\t\t}\n\t\t} );\n\t} else {\n\n\t\t// Support: IE 9-11+\n\t\t// IE doesn't support proxies, but we still want to restore the legacy\n\t\t// jQuery.cssNumber there.\n\t\tjQuery.cssNumber = internalCssNumber;\n\t}\n} else {\n\n\t// Make `internalCssNumber` defined for jQuery <4 as well as it's needed\n\t// in the `jQuery.fn.css` patch below.\n\tinternalCssNumber = jQuery.cssNumber;\n}\n\nfunction isAutoPx( prop ) {\n\n\t// The first test is used to ensure that:\n\t// 1. The prop starts with a lowercase letter (as we uppercase it for the second regex).\n\t// 2. The prop is not empty.\n\treturn ralphaStart.test( prop ) &&\n\t\trautoPx.test( prop[ 0 ].toUpperCase() + prop.slice( 1 ) );\n}\n\norigFnCss = jQuery.fn.css;\n\nmigratePatchFunc( jQuery.fn, \"css\", function( name, value ) {\n\tvar camelName,\n\t\torigThis = this;\n\n\tif ( name && typeof name === \"object\" && !Array.isArray( name ) ) {\n\t\tjQuery.each( name, function( n, v ) {\n\t\t\tjQuery.fn.css.call( origThis, n, v );\n\t\t} );\n\t\treturn this;\n\t}\n\n\tif ( typeof value === \"number\" ) {\n\t\tcamelName = camelCase( name );\n\n\t\t// Use `internalCssNumber` to avoid triggering our warnings in this\n\t\t// internal check.\n\t\tif ( !isAutoPx( camelName ) && !internalCssNumber[ camelName ] ) {\n\t\t\tmigrateWarn( \"css-number\",\n\t\t\t\t\"Number-typed values are deprecated for jQuery.fn.css( \\\"\" +\n\t\t\t\tname + \"\\\", value )\" );\n\t\t}\n\t}\n\n\treturn origFnCss.apply( this, arguments );\n}, \"css-number\" );\n\nvar origData = jQuery.data;\n\nmigratePatchFunc( jQuery, \"data\", function( elem, name, value ) {\n\tvar curData, sameKeys, key;\n\n\t// Name can be an object, and each entry in the object is meant to be set as data\n\tif ( name && typeof name === \"object\" && arguments.length === 2 ) {\n\n\t\tcurData = jQuery.hasData( elem ) && origData.call( this, elem );\n\t\tsameKeys = {};\n\t\tfor ( key in name ) {\n\t\t\tif ( key !== camelCase( key ) ) {\n\t\t\t\tmigrateWarn( \"data-camelCase\",\n\t\t\t\t\t\"jQuery.data() always sets/gets camelCased names: \" + key );\n\t\t\t\tcurData[ key ] = name[ key ];\n\t\t\t} else {\n\t\t\t\tsameKeys[ key ] = name[ key ];\n\t\t\t}\n\t\t}\n\n\t\torigData.call( this, elem, sameKeys );\n\n\t\treturn name;\n\t}\n\n\t// If the name is transformed, look for the un-transformed name in the data object\n\tif ( name && typeof name === \"string\" && name !== camelCase( name ) ) {\n\n\t\tcurData = jQuery.hasData( elem ) && origData.call( this, elem );\n\t\tif ( curData && name in curData ) {\n\t\t\tmigrateWarn( \"data-camelCase\",\n\t\t\t\t\"jQuery.data() always sets/gets camelCased names: \" + name );\n\t\t\tif ( arguments.length > 2 ) {\n\t\t\t\tcurData[ name ] = value;\n\t\t\t}\n\t\t\treturn curData[ name ];\n\t\t}\n\t}\n\n\treturn origData.apply( this, arguments );\n}, \"data-camelCase\" );\n\n// Support jQuery slim which excludes the effects module\nif ( jQuery.fx ) {\n\nvar intervalValue, intervalMsg,\n\toldTweenRun = jQuery.Tween.prototype.run,\n\tlinearEasing = function( pct ) {\n\t\treturn pct;\n\t};\n\nmigratePatchFunc( jQuery.Tween.prototype, \"run\", function( ) {\n\tif ( jQuery.easing[ this.easing ].length > 1 ) {\n\t\tmigrateWarn(\n\t\t\t\"easing-one-arg\",\n\t\t\t\"'jQuery.easing.\" + this.easing.toString() + \"' should use only one argument\"\n\t\t);\n\n\t\tjQuery.easing[ this.easing ] = linearEasing;\n\t}\n\n\toldTweenRun.apply( this, arguments );\n}, \"easing-one-arg\" );\n\nintervalValue = jQuery.fx.interval;\nintervalMsg = \"jQuery.fx.interval is deprecated\";\n\n// Support: IE9, Android <=4.4\n// Avoid false positives on browsers that lack rAF\n// Don't warn if document is hidden, jQuery uses setTimeout (#292)\nif ( window.requestAnimationFrame ) {\n\tObject.defineProperty( jQuery.fx, \"interval\", {\n\t\tconfigurable: true,\n\t\tenumerable: true,\n\t\tget: function() {\n\t\t\tif ( !window.document.hidden ) {\n\t\t\t\tmigrateWarn( \"fx-interval\", intervalMsg );\n\t\t\t}\n\n\t\t\t// Only fallback to the default if patch is enabled\n\t\t\tif ( !jQuery.migrateIsPatchEnabled( \"fx-interval\" ) ) {\n\t\t\t\treturn intervalValue;\n\t\t\t}\n\t\t\treturn intervalValue === undefined ? 13 : intervalValue;\n\t\t},\n\t\tset: function( newValue ) {\n\t\t\tmigrateWarn( \"fx-interval\", intervalMsg );\n\t\t\tintervalValue = newValue;\n\t\t}\n\t} );\n}\n\n}\n\nvar oldLoad = jQuery.fn.load,\n\toldEventAdd = jQuery.event.add,\n\toriginalFix = jQuery.event.fix;\n\njQuery.event.props = [];\njQuery.event.fixHooks = {};\n\nmigrateWarnProp( jQuery.event.props, \"concat\", jQuery.event.props.concat,\n\t\"event-old-patch\",\n\t\"jQuery.event.props.concat() is deprecated and removed\" );\n\nmigratePatchFunc( jQuery.event, \"fix\", function( originalEvent ) {\n\tvar event,\n\t\ttype = originalEvent.type,\n\t\tfixHook = this.fixHooks[ type ],\n\t\tprops = jQuery.event.props;\n\n\tif ( props.length ) {\n\t\tmigrateWarn( \"event-old-patch\",\n\t\t\t\"jQuery.event.props are deprecated and removed: \" + props.join() );\n\t\twhile ( props.length ) {\n\t\t\tjQuery.event.addProp( props.pop() );\n\t\t}\n\t}\n\n\tif ( fixHook && !fixHook._migrated_ ) {\n\t\tfixHook._migrated_ = true;\n\t\tmigrateWarn( \"event-old-patch\",\n\t\t\t\"jQuery.event.fixHooks are deprecated and removed: \" + type );\n\t\tif ( ( props = fixHook.props ) && props.length ) {\n\t\t\twhile ( props.length ) {\n\t\t\t\tjQuery.event.addProp( props.pop() );\n\t\t\t}\n\t\t}\n\t}\n\n\tevent = originalFix.call( this, originalEvent );\n\n\treturn fixHook && fixHook.filter ?\n\t\tfixHook.filter( event, originalEvent ) :\n\t\tevent;\n}, \"event-old-patch\" );\n\nmigratePatchFunc( jQuery.event, \"add\", function( elem, types ) {\n\n\t// This misses the multiple-types case but that seems awfully rare\n\tif ( elem === window && types === \"load\" && window.document.readyState === \"complete\" ) {\n\t\tmigrateWarn( \"load-after-event\",\n\t\t\t\"jQuery(window).on('load'...) called after load event occurred\" );\n\t}\n\treturn oldEventAdd.apply( this, arguments );\n}, \"load-after-event\" );\n\njQuery.each( [ \"load\", \"unload\", \"error\" ], function( _, name ) {\n\n\tmigratePatchFunc( jQuery.fn, name, function() {\n\t\tvar args = Array.prototype.slice.call( arguments, 0 );\n\n\t\t// If this is an ajax load() the first arg should be the string URL;\n\t\t// technically this could also be the \"Anything\" arg of the event .load()\n\t\t// which just goes to show why this dumb signature has been deprecated!\n\t\t// jQuery custom builds that exclude the Ajax module justifiably die here.\n\t\tif ( name === \"load\" && typeof args[ 0 ] === \"string\" ) {\n\t\t\treturn oldLoad.apply( this, args );\n\t\t}\n\n\t\tmigrateWarn( \"shorthand-removed-v3\",\n\t\t\t\"jQuery.fn.\" + name + \"() is deprecated\" );\n\n\t\targs.splice( 0, 0, name );\n\t\tif ( arguments.length ) {\n\t\t\treturn this.on.apply( this, args );\n\t\t}\n\n\t\t// Use .triggerHandler here because:\n\t\t// - load and unload events don't need to bubble, only applied to window or image\n\t\t// - error event should not bubble to window, although it does pre-1.7\n\t\t// See http://bugs.jquery.com/ticket/11820\n\t\tthis.triggerHandler.apply( this, args );\n\t\treturn this;\n\t}, \"shorthand-removed-v3\" );\n\n} );\n\njQuery.each( ( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t// Handle event binding\n\tmigratePatchAndWarnFunc( jQuery.fn, name, function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t\t},\n\t\t\"shorthand-deprecated-v3\",\n\t\t\"jQuery.fn.\" + name + \"() event shorthand is deprecated\" );\n} );\n\n// Trigger \"ready\" event only once, on document ready\njQuery( function() {\n\tjQuery( window.document ).triggerHandler( \"ready\" );\n} );\n\njQuery.event.special.ready = {\n\tsetup: function() {\n\t\tif ( this === window.document ) {\n\t\t\tmigrateWarn( \"ready-event\", \"'ready' event is deprecated\" );\n\t\t}\n\t}\n};\n\nmigratePatchAndWarnFunc( jQuery.fn, \"bind\", function( types, data, fn ) {\n\treturn this.on( types, null, data, fn );\n}, \"pre-on-methods\", \"jQuery.fn.bind() is deprecated\" );\nmigratePatchAndWarnFunc( jQuery.fn, \"unbind\", function( types, fn ) {\n\treturn this.off( types, null, fn );\n}, \"pre-on-methods\", \"jQuery.fn.unbind() is deprecated\" );\nmigratePatchAndWarnFunc( jQuery.fn, \"delegate\", function( selector, types, data, fn ) {\n\treturn this.on( types, selector, data, fn );\n}, \"pre-on-methods\", \"jQuery.fn.delegate() is deprecated\" );\nmigratePatchAndWarnFunc( jQuery.fn, \"undelegate\", function( selector, types, fn ) {\n\treturn arguments.length === 1 ?\n\t\tthis.off( selector, \"**\" ) :\n\t\tthis.off( types, selector || \"**\", fn );\n}, \"pre-on-methods\", \"jQuery.fn.undelegate() is deprecated\" );\nmigratePatchAndWarnFunc( jQuery.fn, \"hover\", function( fnOver, fnOut ) {\n\treturn this.on( \"mouseenter\", fnOver ).on( \"mouseleave\", fnOut || fnOver );\n}, \"pre-on-methods\", \"jQuery.fn.hover() is deprecated\" );\n\nvar rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\tmakeMarkup = function( html ) {\n\t\tvar doc = window.document.implementation.createHTMLDocument( \"\" );\n\t\tdoc.body.innerHTML = html;\n\t\treturn doc.body && doc.body.innerHTML;\n\t},\n\twarnIfChanged = function( html ) {\n\t\tvar changed = html.replace( rxhtmlTag, \"<$1></$2>\" );\n\t\tif ( changed !== html && makeMarkup( html ) !== makeMarkup( changed ) ) {\n\t\t\tmigrateWarn( \"self-closed-tags\",\n\t\t\t\t\"HTML tags must be properly nested and closed: \" + html );\n\t\t}\n\t};\n\n/**\n * Deprecated, please use `jQuery.migrateDisablePatches( \"self-closed-tags\" )` instead.\n * @deprecated\n */\njQuery.UNSAFE_restoreLegacyHtmlPrefilter = function() {\n\tjQuery.migrateEnablePatches( \"self-closed-tags\" );\n};\n\nmigratePatchFunc( jQuery, \"htmlPrefilter\", function( html ) {\n\twarnIfChanged( html );\n\treturn html.replace( rxhtmlTag, \"<$1></$2>\" );\n}, \"self-closed-tags\" );\n\n// This patch needs to be disabled by default as it re-introduces\n// security issues (CVE-2020-11022, CVE-2020-11023).\njQuery.migrateDisablePatches( \"self-closed-tags\" );\n\nvar origOffset = jQuery.fn.offset;\n\nmigratePatchFunc( jQuery.fn, \"offset\", function() {\n\tvar elem = this[ 0 ];\n\n\tif ( elem && ( !elem.nodeType || !elem.getBoundingClientRect ) ) {\n\t\tmigrateWarn( \"offset-valid-elem\", \"jQuery.fn.offset() requires a valid DOM element\" );\n\t\treturn arguments.length ? this : undefined;\n\t}\n\n\treturn origOffset.apply( this, arguments );\n}, \"offset-valid-elem\" );\n\n// Support jQuery slim which excludes the ajax module\n// The jQuery.param patch is about respecting `jQuery.ajaxSettings.traditional`\n// so it doesn't make sense for the slim build.\nif ( jQuery.ajax ) {\n\nvar origParam = jQuery.param;\n\nmigratePatchFunc( jQuery, \"param\", function( data, traditional ) {\n\tvar ajaxTraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;\n\n\tif ( traditional === undefined && ajaxTraditional ) {\n\n\t\tmigrateWarn( \"param-ajax-traditional\",\n\t\t\t\"jQuery.param() no longer uses jQuery.ajaxSettings.traditional\" );\n\t\ttraditional = ajaxTraditional;\n\t}\n\n\treturn origParam.call( this, data, traditional );\n}, \"param-ajax-traditional\" );\n\n}\n\nmigratePatchAndWarnFunc( jQuery.fn, \"andSelf\", jQuery.fn.addBack, \"andSelf\",\n\t\"jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()\" );\n\n// Support jQuery slim which excludes the deferred module in jQuery 4.0+\nif ( jQuery.Deferred ) {\n\nvar oldDeferred = jQuery.Deferred,\n\ttuples = [\n\n\t\t// Action, add listener, callbacks, .then handlers, final state\n\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\tjQuery.Callbacks( \"once memory\" ), \"resolved\" ],\n\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\tjQuery.Callbacks( \"once memory\" ), \"rejected\" ],\n\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\tjQuery.Callbacks( \"memory\" ) ]\n\t];\n\nmigratePatchFunc( jQuery, \"Deferred\", function( func ) {\n\tvar deferred = oldDeferred(),\n\t\tpromise = deferred.promise();\n\n\tfunction newDeferredPipe( /* fnDone, fnFail, fnProgress */ ) {\n\t\tvar fns = arguments;\n\n\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\tvar fn = typeof fns[ i ] === \"function\" && fns[ i ];\n\n\t\t\t\t// Deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\tif ( returned && typeof returned.promise === \"function\" ) {\n\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t.fail( newDefer.reject )\n\t\t\t\t\t\t\t.progress( newDefer.notify );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\tthis === promise ? newDefer.promise() : this,\n\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t\tfns = null;\n\t\t} ).promise();\n\t}\n\n\tmigratePatchAndWarnFunc( deferred, \"pipe\", newDeferredPipe, \"deferred-pipe\",\n\t\t\"deferred.pipe() is deprecated\" );\n\tmigratePatchAndWarnFunc( promise, \"pipe\", newDeferredPipe, \"deferred-pipe\",\n\t\t\"deferred.pipe() is deprecated\" );\n\n\tif ( func ) {\n\t\tfunc.call( deferred, deferred );\n\t}\n\n\treturn deferred;\n}, \"deferred-pipe\" );\n\n// Preserve handler of uncaught exceptions in promise chains\njQuery.Deferred.exceptionHook = oldDeferred.exceptionHook;\n\n}\n\nreturn jQuery;\n} );\n","/*!\n * jQuery Typeahead\n * Copyright (C) 2020 RunningCoder.org\n * Licensed under the MIT license\n *\n * @author Tom Bertrand\n * @version 2.11.1 (2020-5-18)\n * @link http://www.runningcoder.org/jquerytypeahead/\n */\n!function(e){var t;\"function\"==typeof define&&define.amd?define(\"jquery-typeahead\",[\"jquery\"],function(t){return e(t)}):\"object\"==typeof module&&module.exports?module.exports=(void 0===t&&(t=\"undefined\"!=typeof window?require(\"jquery\"):require(\"jquery\")(void 0)),e(t)):e(jQuery)}(function(j){\"use strict\";function r(t,e){this.rawQuery=t.val()||\"\",this.query=t.val()||\"\",this.selector=t[0].selector,this.deferred=null,this.tmpSource={},this.source={},this.dynamicGroups=[],this.hasDynamicGroups=!1,this.generatedGroupCount=0,this.groupBy=\"group\",this.groups=[],this.searchGroups=[],this.generateGroups=[],this.requestGroups=[],this.result=[],this.tmpResult={},this.groupTemplate=\"\",this.resultHtml=null,this.resultCount=0,this.resultCountPerGroup={},this.options=e,this.node=t,this.namespace=\".\"+this.helper.slugify.call(this,this.selector)+\".typeahead\",this.isContentEditable=void 0!==this.node.attr(\"contenteditable\")&&\"false\"!==this.node.attr(\"contenteditable\"),this.container=null,this.resultContainer=null,this.item=null,this.items=null,this.comparedItems=null,this.xhr={},this.hintIndex=null,this.filters={dropdown:{},dynamic:{}},this.dropdownFilter={static:[],dynamic:[]},this.dropdownFilterAll=null,this.isDropdownEvent=!1,this.requests={},this.backdrop={},this.hint={},this.label={},this.hasDragged=!1,this.focusOnly=!1,this.displayEmptyTemplate,this.__construct()}var i,s={input:null,minLength:2,maxLength:!(window.Typeahead={version:\"2.11.1\"}),maxItem:8,dynamic:!1,delay:300,order:null,offset:!1,hint:!1,accent:!1,highlight:!0,multiselect:null,group:!1,groupOrder:null,maxItemPerGroup:null,dropdownFilter:!1,dynamicFilter:null,backdrop:!1,backdropOnFocus:!1,cache:!1,ttl:36e5,compression:!1,searchOnFocus:!1,blurOnTab:!0,resultContainer:null,generateOnLoad:null,mustSelectItem:!1,href:null,display:[\"display\"],template:null,templateValue:null,groupTemplate:null,correlativeTemplate:!1,emptyTemplate:!1,cancelButton:!0,loadingAnimation:!0,asyncResult:!1,filter:!0,matcher:null,source:null,callback:{onInit:null,onReady:null,onShowLayout:null,onHideLayout:null,onSearch:null,onResult:null,onLayoutBuiltBefore:null,onLayoutBuiltAfter:null,onNavigateBefore:null,onNavigateAfter:null,onEnter:null,onLeave:null,onClickBefore:null,onClickAfter:null,onDropdownFilter:null,onSendRequest:null,onReceiveRequest:null,onPopulateSource:null,onCacheSave:null,onSubmit:null,onCancel:null},selector:{container:\"typeahead__container\",result:\"typeahead__result\",list:\"typeahead__list\",group:\"typeahead__group\",item:\"typeahead__item\",empty:\"typeahead__empty\",display:\"typeahead__display\",query:\"typeahead__query\",filter:\"typeahead__filter\",filterButton:\"typeahead__filter-button\",dropdown:\"typeahead__dropdown\",dropdownItem:\"typeahead__dropdown-item\",labelContainer:\"typeahead__label-container\",label:\"typeahead__label\",button:\"typeahead__button\",backdrop:\"typeahead__backdrop\",hint:\"typeahead__hint\",cancelButton:\"typeahead__cancel-button\"},debug:!1},o={from:\"ãà áäâẽèéëêìÃïîõòóöôùúüûñç\",to:\"aaaaaeeeeeiiiiooooouuuunc\"},n=~window.navigator.appVersion.indexOf(\"MSIE 9.\"),a=~window.navigator.appVersion.indexOf(\"MSIE 10\"),l=!!~window.navigator.userAgent.indexOf(\"Trident\")&&~window.navigator.userAgent.indexOf(\"rv:11\");r.prototype={_validateCacheMethod:function(t){var e;if(!0===t)t=\"localStorage\";else if(\"string\"==typeof t&&!~[\"localStorage\",\"sessionStorage\"].indexOf(t))return!1;e=void 0!==window[t];try{window[t].setItem(\"typeahead\",\"typeahead\"),window[t].removeItem(\"typeahead\")}catch(t){e=!1}return e&&t||!1},extendOptions:function(){if(this.options.cache=this._validateCacheMethod(this.options.cache),this.options.compression&&(\"object\"==typeof LZString&&this.options.cache||(this.options.compression=!1)),this.options.maxLength&&!isNaN(this.options.maxLength)||(this.options.maxLength=1/0),void 0!==this.options.maxItem&&~[0,!1].indexOf(this.options.maxItem)&&(this.options.maxItem=1/0),this.options.maxItemPerGroup&&!/^\\d+$/.test(this.options.maxItemPerGroup)&&(this.options.maxItemPerGroup=null),this.options.display&&!Array.isArray(this.options.display)&&(this.options.display=[this.options.display]),this.options.multiselect&&(this.items=[],this.comparedItems=[],\"string\"==typeof this.options.multiselect.matchOn&&(this.options.multiselect.matchOn=[this.options.multiselect.matchOn])),this.options.group&&(Array.isArray(this.options.group)||(\"string\"==typeof this.options.group?this.options.group={key:this.options.group}:\"boolean\"==typeof this.options.group&&(this.options.group={key:\"group\"}),this.options.group.key=this.options.group.key||\"group\")),this.options.highlight&&!~[\"any\",!0].indexOf(this.options.highlight)&&(this.options.highlight=!1),this.options.dropdownFilter&&this.options.dropdownFilter instanceof Object){Array.isArray(this.options.dropdownFilter)||(this.options.dropdownFilter=[this.options.dropdownFilter]);for(var t=0,e=this.options.dropdownFilter.length;t<e;++t)this.dropdownFilter[this.options.dropdownFilter[t].value?\"static\":\"dynamic\"].push(this.options.dropdownFilter[t])}this.options.dynamicFilter&&!Array.isArray(this.options.dynamicFilter)&&(this.options.dynamicFilter=[this.options.dynamicFilter]),this.options.accent&&(\"object\"==typeof this.options.accent?this.options.accent.from&&this.options.accent.to&&(this.options.accent.from.length,this.options.accent.to.length):this.options.accent=o),this.options.groupTemplate&&(this.groupTemplate=this.options.groupTemplate),this.options.resultContainer&&(\"string\"==typeof this.options.resultContainer&&(this.options.resultContainer=j(this.options.resultContainer)),this.options.resultContainer instanceof j&&this.options.resultContainer[0]&&(this.resultContainer=this.options.resultContainer)),this.options.group&&this.options.group.key&&(this.groupBy=this.options.group.key),this.options.callback&&this.options.callback.onClick&&(this.options.callback.onClickBefore=this.options.callback.onClick,delete this.options.callback.onClick),this.options.callback&&this.options.callback.onNavigate&&(this.options.callback.onNavigateBefore=this.options.callback.onNavigate,delete this.options.callback.onNavigate),this.options=j.extend(!0,{},s,this.options)},unifySourceFormat:function(){var t,e,i;for(t in this.dynamicGroups=[],Array.isArray(this.options.source)&&(this.options.source={group:{data:this.options.source}}),\"string\"==typeof this.options.source&&(this.options.source={group:{ajax:{url:this.options.source}}}),this.options.source.ajax&&(this.options.source={group:{ajax:this.options.source.ajax}}),(this.options.source.url||this.options.source.data)&&(this.options.source={group:this.options.source}),this.options.source)if(this.options.source.hasOwnProperty(t)){if(\"string\"==typeof(e=this.options.source[t])&&(e={ajax:{url:e}}),i=e.url||e.ajax,Array.isArray(i)?(e.ajax=\"string\"==typeof i[0]?{url:i[0]}:i[0],e.ajax.path=e.ajax.path||i[1]||null):\"object\"==typeof e.url?e.ajax=e.url:\"string\"==typeof e.url&&(e.ajax={url:e.url}),delete e.url,!e.data&&!e.ajax)return!1;e.display&&!Array.isArray(e.display)&&(e.display=[e.display]),e.minLength=\"number\"==typeof e.minLength?e.minLength:this.options.minLength,e.maxLength=\"number\"==typeof e.maxLength?e.maxLength:this.options.maxLength,e.dynamic=\"boolean\"==typeof e.dynamic||this.options.dynamic,e.minLength>e.maxLength&&(e.minLength=e.maxLength),this.options.source[t]=e,this.options.source[t].dynamic&&this.dynamicGroups.push(t),e.cache=void 0!==e.cache?this._validateCacheMethod(e.cache):this.options.cache,e.compression&&(\"object\"==typeof LZString&&e.cache||(e.compression=!1))}return this.hasDynamicGroups=this.options.dynamic||!!this.dynamicGroups.length,!0},init:function(){this.helper.executeCallback.call(this,this.options.callback.onInit,[this.node]),this.container=this.node.closest(\".\"+this.options.selector.container)},delegateEvents:function(){var i=this,t=[\"focus\"+this.namespace,\"input\"+this.namespace,\"propertychange\"+this.namespace,\"keydown\"+this.namespace,\"keyup\"+this.namespace,\"search\"+this.namespace,\"generate\"+this.namespace];j(\"html\").on(\"touchmove\",function(){i.hasDragged=!0}).on(\"touchstart\",function(){i.hasDragged=!1}),this.node.closest(\"form\").on(\"submit\",function(t){if(!i.options.mustSelectItem||!i.helper.isEmpty(i.item))return i.options.backdropOnFocus||i.hideLayout(),i.options.callback.onSubmit?i.helper.executeCallback.call(i,i.options.callback.onSubmit,[i.node,this,i.item||i.items,t]):void 0;t.preventDefault()}).on(\"reset\",function(){setTimeout(function(){i.node.trigger(\"input\"+i.namespace),i.hideLayout()})});var s=!1;if(this.node.attr(\"placeholder\")&&(a||l)){var e=!0;this.node.on(\"focusin focusout\",function(){e=!(this.value||!this.placeholder)}),this.node.on(\"input\",function(t){e&&(t.stopImmediatePropagation(),e=!1)})}this.node.off(this.namespace).on(t.join(\" \"),function(t,e){switch(t.type){case\"generate\":i.generateSource(Object.keys(i.options.source));break;case\"focus\":if(i.focusOnly){i.focusOnly=!1;break}i.options.backdropOnFocus&&(i.buildBackdropLayout(),i.showLayout()),i.options.searchOnFocus&&!i.item&&(i.deferred=j.Deferred(),i.assignQuery(),i.generateSource());break;case\"keydown\":8===t.keyCode&&i.options.multiselect&&i.options.multiselect.cancelOnBackspace&&\"\"===i.query&&i.items.length?i.cancelMultiselectItem(i.items.length-1,null,t):t.keyCode&&~[9,13,27,38,39,40].indexOf(t.keyCode)&&(s=!0,i.navigate(t));break;case\"keyup\":n&&i.node[0].value.replace(/^\\s+/,\"\").toString().length<i.query.length&&i.node.trigger(\"input\"+i.namespace);break;case\"propertychange\":if(s){s=!1;break}case\"input\":i.deferred=j.Deferred(),i.assignQuery(),\"\"===i.rawQuery&&\"\"===i.query&&(t.originalEvent=e||{},i.helper.executeCallback.call(i,i.options.callback.onCancel,[i.node,i.item,t]),i.item=null),i.options.cancelButton&&i.toggleCancelButtonVisibility(),i.options.hint&&i.hint.container&&\"\"!==i.hint.container.val()&&0!==i.hint.container.val().indexOf(i.rawQuery)&&(i.hint.container.val(\"\"),i.isContentEditable&&i.hint.container.text(\"\")),i.hasDynamicGroups?i.helper.typeWatch(function(){i.generateSource()},i.options.delay):i.generateSource();break;case\"search\":i.searchResult(),i.buildLayout(),i.result.length||i.searchGroups.length&&i.displayEmptyTemplate?i.showLayout():i.hideLayout(),i.deferred&&i.deferred.resolve()}return i.deferred&&i.deferred.promise()}),this.options.generateOnLoad&&this.node.trigger(\"generate\"+this.namespace)},assignQuery:function(){this.isContentEditable?this.rawQuery=this.node.text():this.rawQuery=this.node.val().toString(),this.rawQuery=this.rawQuery.replace(/^\\s+/,\"\"),this.rawQuery!==this.query&&(this.query=this.rawQuery)},filterGenerateSource:function(){if(this.searchGroups=[],this.generateGroups=[],!this.focusOnly||this.options.multiselect)for(var t in this.options.source)if(this.options.source.hasOwnProperty(t)&&this.query.length>=this.options.source[t].minLength&&this.query.length<=this.options.source[t].maxLength){if(this.filters.dropdown&&\"group\"===this.filters.dropdown.key&&this.filters.dropdown.value!==t)continue;if(this.searchGroups.push(t),!this.options.source[t].dynamic&&this.source[t])continue;this.generateGroups.push(t)}},generateSource:function(t){if(this.filterGenerateSource(),this.generatedGroupCount=0,Array.isArray(t)&&t.length)this.generateGroups=t;else if(!this.generateGroups.length)return void this.node.trigger(\"search\"+this.namespace);if(this.requestGroups=[],this.options.loadingAnimation&&this.container.addClass(\"loading\"),!this.helper.isEmpty(this.xhr)){for(var e in this.xhr)this.xhr.hasOwnProperty(e)&&this.xhr[e].abort();this.xhr={}}for(var i,s,o,n,r,a,l,h=this,c=(e=0,this.generateGroups.length);e<c;++e){if(i=this.generateGroups[e],n=(o=this.options.source[i]).cache,r=o.compression,this.options.asyncResult&&delete this.source[i],n&&(a=window[n].getItem(\"TYPEAHEAD_\"+this.selector+\":\"+i))){r&&(a=LZString.decompressFromUTF16(a)),l=!1;try{(a=JSON.parse(a+\"\")).data&&a.ttl>(new Date).getTime()?(this.populateSource(a.data,i),l=!0):window[n].removeItem(\"TYPEAHEAD_\"+this.selector+\":\"+i)}catch(t){}if(l)continue}!o.data||o.ajax?o.ajax&&(this.requests[i]||(this.requests[i]=this.generateRequestObject(i)),this.requestGroups.push(i)):\"function\"==typeof o.data?(s=o.data.call(this),Array.isArray(s)?h.populateSource(s,i):\"function\"==typeof s.promise&&function(e){j.when(s).then(function(t){t&&Array.isArray(t)&&h.populateSource(t,e)})}(i)):this.populateSource(j.extend(!0,[],o.data),i)}return this.requestGroups.length&&this.handleRequests(),this.options.asyncResult&&this.searchGroups.length!==this.generateGroups&&this.node.trigger(\"search\"+this.namespace),!!this.generateGroups.length},generateRequestObject:function(s){var o=this,n=this.options.source[s],t={request:{url:n.ajax.url||null,dataType:\"json\",beforeSend:function(t,e){o.xhr[s]=t;var i=o.requests[s].callback.beforeSend||n.ajax.beforeSend;\"function\"==typeof i&&i.apply(null,arguments)}},callback:{beforeSend:null,done:null,fail:null,then:null,always:null},extra:{path:n.ajax.path||null,group:s},validForGroup:[s]};if(\"function\"!=typeof n.ajax&&(n.ajax instanceof Object&&(t=this.extendXhrObject(t,n.ajax)),1<Object.keys(this.options.source).length))for(var e in this.requests)this.requests.hasOwnProperty(e)&&(this.requests[e].isDuplicated||t.request.url&&t.request.url===this.requests[e].request.url&&(this.requests[e].validForGroup.push(s),t.isDuplicated=!0,delete t.validForGroup));return t},extendXhrObject:function(t,e){return\"object\"==typeof e.callback&&(t.callback=e.callback,delete e.callback),\"function\"==typeof e.beforeSend&&(t.callback.beforeSend=e.beforeSend,delete e.beforeSend),t.request=j.extend(!0,t.request,e),\"jsonp\"!==t.request.dataType.toLowerCase()||t.request.jsonpCallback||(t.request.jsonpCallback=\"callback_\"+t.extra.group),t},handleRequests:function(){var t,h=this,c=this.requestGroups.length;if(!1!==this.helper.executeCallback.call(this,this.options.callback.onSendRequest,[this.node,this.query]))for(var e=0,i=this.requestGroups.length;e<i;++e)t=this.requestGroups[e],this.requests[t].isDuplicated||function(t,r){if(\"function\"==typeof h.options.source[t].ajax){var e=h.options.source[t].ajax.call(h,h.query);if(\"object\"!=typeof(r=h.extendXhrObject(h.generateRequestObject(t),\"object\"==typeof e?e:{})).request||!r.request.url)return h.populateSource([],t);h.requests[t]=r}var a,i=!1,l={};if(~r.request.url.indexOf(\"{{query}}\")&&(i||(r=j.extend(!0,{},r),i=!0),r.request.url=r.request.url.replace(\"{{query}}\",encodeURIComponent(h.query))),r.request.data)for(var s in r.request.data)if(r.request.data.hasOwnProperty(s)&&~String(r.request.data[s]).indexOf(\"{{query}}\")){i||(r=j.extend(!0,{},r),i=!0),r.request.data[s]=r.request.data[s].replace(\"{{query}}\",h.query);break}j.ajax(r.request).done(function(t,e,i){for(var s,o=0,n=r.validForGroup.length;o<n;o++)s=r.validForGroup[o],\"function\"==typeof(a=h.requests[s]).callback.done&&(l[s]=a.callback.done.call(h,t,e,i))}).fail(function(t,e,i){for(var s=0,o=r.validForGroup.length;s<o;s++)(a=h.requests[r.validForGroup[s]]).callback.fail instanceof Function&&a.callback.fail.call(h,t,e,i)}).always(function(t,e,i){for(var s,o=0,n=r.validForGroup.length;o<n;o++){if(s=r.validForGroup[o],(a=h.requests[s]).callback.always instanceof Function&&a.callback.always.call(h,t,e,i),\"abort\"===e)return;h.populateSource(null!==t&&\"function\"==typeof t.promise&&[]||l[s]||t,a.extra.group,a.extra.path||a.request.path),0===(c-=1)&&h.helper.executeCallback.call(h,h.options.callback.onReceiveRequest,[h.node,h.query])}}).then(function(t,e){for(var i=0,s=r.validForGroup.length;i<s;i++)(a=h.requests[r.validForGroup[i]]).callback.then instanceof Function&&a.callback.then.call(h,t,e)})}(t,this.requests[t])},populateSource:function(i,t,e){var s=this,o=this.options.source[t],n=o.ajax&&o.data;e&&\"string\"==typeof e&&(i=this.helper.namespace.call(this,e,i)),Array.isArray(i)||(i=[]),n&&(\"function\"==typeof n&&(n=n()),Array.isArray(n)&&(i=i.concat(n)));for(var r,a=o.display?\"compiled\"===o.display[0]?o.display[1]:o.display[0]:\"compiled\"===this.options.display[0]?this.options.display[1]:this.options.display[0],l=0,h=i.length;l<h;l++)null!==i[l]&&\"boolean\"!=typeof i[l]&&(\"string\"==typeof i[l]&&((r={})[a]=i[l],i[l]=r),i[l].group=t);if(!this.hasDynamicGroups&&this.dropdownFilter.dynamic.length){var c,p,u={};for(l=0,h=i.length;l<h;l++)for(var d=0,f=this.dropdownFilter.dynamic.length;d<f;d++)c=this.dropdownFilter.dynamic[d].key,(p=i[l][c])&&(this.dropdownFilter.dynamic[d].value||(this.dropdownFilter.dynamic[d].value=[]),u[c]||(u[c]=[]),~u[c].indexOf(p.toLowerCase())||(u[c].push(p.toLowerCase()),this.dropdownFilter.dynamic[d].value.push(p)))}if(this.options.correlativeTemplate){var m=o.template||this.options.template,g=\"\";if(\"function\"==typeof m&&(m=m.call(this,\"\",{})),m){if(Array.isArray(this.options.correlativeTemplate))for(l=0,h=this.options.correlativeTemplate.length;l<h;l++)g+=\"{{\"+this.options.correlativeTemplate[l]+\"}} \";else g=m.replace(/<.+?>/g,\" \").replace(/\\s{2,}/,\" \").trim();for(l=0,h=i.length;l<h;l++)i[l].compiled=j(\"<textarea />\").html(g.replace(/\\{\\{([\\w\\-\\.]+)(?:\\|(\\w+))?}}/g,function(t,e){return s.helper.namespace.call(s,e,i[l],\"get\",\"\")}).trim()).text();o.display?~o.display.indexOf(\"compiled\")||o.display.unshift(\"compiled\"):~this.options.display.indexOf(\"compiled\")||this.options.display.unshift(\"compiled\")}else;}this.options.callback.onPopulateSource&&(i=this.helper.executeCallback.call(this,this.options.callback.onPopulateSource,[this.node,i,t,e])),this.tmpSource[t]=Array.isArray(i)&&i||[];var y=this.options.source[t].cache,v=this.options.source[t].compression,b=this.options.source[t].ttl||this.options.ttl;if(y&&!window[y].getItem(\"TYPEAHEAD_\"+this.selector+\":\"+t)){this.options.callback.onCacheSave&&(i=this.helper.executeCallback.call(this,this.options.callback.onCacheSave,[this.node,i,t,e]));var k=JSON.stringify({data:i,ttl:(new Date).getTime()+b});v&&(k=LZString.compressToUTF16(k)),window[y].setItem(\"TYPEAHEAD_\"+this.selector+\":\"+t,k)}this.incrementGeneratedGroup(t)},incrementGeneratedGroup:function(t){if(this.generatedGroupCount++,this.generatedGroupCount===this.generateGroups.length||this.options.asyncResult){this.xhr&&this.xhr[t]&&delete this.xhr[t];for(var e=0,i=this.generateGroups.length;e<i;e++)this.source[this.generateGroups[e]]=this.tmpSource[this.generateGroups[e]];this.hasDynamicGroups||this.buildDropdownItemLayout(\"dynamic\"),this.generatedGroupCount===this.generateGroups.length&&(this.xhr={},this.options.loadingAnimation&&this.container.removeClass(\"loading\")),this.node.trigger(\"search\"+this.namespace)}},navigate:function(t){if(this.helper.executeCallback.call(this,this.options.callback.onNavigateBefore,[this.node,this.query,t]),27===t.keyCode)return t.preventDefault(),void(this.query.length?(this.resetInput(),this.node.trigger(\"input\"+this.namespace,[t])):(this.node.blur(),this.hideLayout()));if(this.result.length){var e,i=this.resultContainer.find(\".\"+this.options.selector.item).not(\"[disabled]\"),s=i.filter(\".active\"),o=s[0]?i.index(s):null,n=s[0]?s.attr(\"data-index\"):null,r=null;if(this.clearActiveItem(),this.helper.executeCallback.call(this,this.options.callback.onLeave,[this.node,null!==o&&i.eq(o)||void 0,null!==n&&this.result[n]||void 0,t]),13===t.keyCode)return t.preventDefault(),void(0<s.length?\"javascript:;\"===s.find(\"a:first\")[0].href?s.find(\"a:first\").trigger(\"click\",t):s.find(\"a:first\")[0].click():this.node.closest(\"form\").trigger(\"submit\"));if(39!==t.keyCode){9===t.keyCode?this.options.blurOnTab?this.hideLayout():0<s.length?o+1<i.length?(t.preventDefault(),r=o+1,this.addActiveItem(i.eq(r))):this.hideLayout():i.length?(t.preventDefault(),r=0,this.addActiveItem(i.first())):this.hideLayout():38===t.keyCode?(t.preventDefault(),0<s.length?0<=o-1&&(r=o-1,this.addActiveItem(i.eq(r))):i.length&&(r=i.length-1,this.addActiveItem(i.last()))):40===t.keyCode&&(t.preventDefault(),0<s.length?o+1<i.length&&(r=o+1,this.addActiveItem(i.eq(r))):i.length&&(r=0,this.addActiveItem(i.first()))),e=null!==r?i.eq(r).attr(\"data-index\"):null,this.helper.executeCallback.call(this,this.options.callback.onEnter,[this.node,null!==r&&i.eq(r)||void 0,null!==e&&this.result[e]||void 0,t]),t.preventInputChange&&~[38,40].indexOf(t.keyCode)&&this.buildHintLayout(null!==e&&e<this.result.length?[this.result[e]]:null),this.options.hint&&this.hint.container&&this.hint.container.css(\"color\",t.preventInputChange?this.hint.css.color:null===e&&this.hint.css.color||this.hint.container.css(\"background-color\")||\"fff\");var a=null===e||t.preventInputChange?this.rawQuery:this.getTemplateValue.call(this,this.result[e]);this.node.val(a),this.isContentEditable&&this.node.text(a),this.helper.executeCallback.call(this,this.options.callback.onNavigateAfter,[this.node,i,null!==r&&i.eq(r).find(\"a:first\")||void 0,null!==e&&this.result[e]||void 0,this.query,t])}else null!==o?i.eq(o).find(\"a:first\")[0].click():this.options.hint&&\"\"!==this.hint.container.val()&&this.helper.getCaret(this.node[0])>=this.query.length&&i.filter('[data-index=\"'+this.hintIndex+'\"]').find(\"a:first\")[0].click()}},getTemplateValue:function(i){if(i){var t=i.group&&this.options.source[i.group].templateValue||this.options.templateValue;if(\"function\"==typeof t&&(t=t.call(this)),!t)return this.helper.namespace.call(this,i.matchedKey,i).toString();var s=this;return t.replace(/\\{\\{([\\w\\-.]+)}}/gi,function(t,e){return s.helper.namespace.call(s,e,i,\"get\",\"\")})}},clearActiveItem:function(){this.resultContainer.find(\".\"+this.options.selector.item).removeClass(\"active\")},addActiveItem:function(t){t.addClass(\"active\")},searchResult:function(){this.resetLayout(),!1!==this.helper.executeCallback.call(this,this.options.callback.onSearch,[this.node,this.query])&&(!this.searchGroups.length||this.options.multiselect&&this.options.multiselect.limit&&this.items.length>=this.options.multiselect.limit||this.searchResultData(),this.helper.executeCallback.call(this,this.options.callback.onResult,[this.node,this.query,this.result,this.resultCount,this.resultCountPerGroup]),this.isDropdownEvent&&(this.helper.executeCallback.call(this,this.options.callback.onDropdownFilter,[this.node,this.query,this.filters.dropdown,this.result]),this.isDropdownEvent=!1))},searchResultData:function(){var t,e,i,s,o,n,r,a,l,h,c,p=this.groupBy,u=null,d=this.query.toLowerCase(),f=this.options.maxItem,m=this.options.maxItemPerGroup,g=this.filters.dynamic&&!this.helper.isEmpty(this.filters.dynamic),y=\"function\"==typeof this.options.matcher&&this.options.matcher;this.options.accent&&(d=this.helper.removeAccent.call(this,d));for(var v=0,b=this.searchGroups.length;v<b;++v)if(F=this.searchGroups[v],(!this.filters.dropdown||\"group\"!==this.filters.dropdown.key||this.filters.dropdown.value===F)&&(o=void 0!==this.options.source[F].filter?this.options.source[F].filter:this.options.filter,r=\"function\"==typeof this.options.source[F].matcher&&this.options.source[F].matcher||y,this.source[F]))for(var k=0,w=this.source[F].length;k<w&&(!(this.resultItemCount>=f)||this.options.callback.onResult);k++)if((!g||this.dynamicFilter.validate.apply(this,[this.source[F][k]]))&&null!==(t=this.source[F][k])&&\"boolean\"!=typeof t&&(!this.options.multiselect||this.isMultiselectUniqueData(t))&&(!this.filters.dropdown||(t[this.filters.dropdown.key]||\"\").toLowerCase()===(this.filters.dropdown.value||\"\").toLowerCase())){if((u=\"group\"===p?F:t[p]?t[p]:t.group)&&!this.tmpResult[u]&&(this.tmpResult[u]=[],this.resultCountPerGroup[u]=0),m&&\"group\"===p&&this.tmpResult[u].length>=m&&!this.options.callback.onResult)break;for(var x=0,C=(S=this.options.source[F].display||this.options.display).length;x<C;++x){if(!1!==o){if(void 0===(s=/\\./.test(S[x])?this.helper.namespace.call(this,S[x],t):t[S[x]])||\"\"===s)continue;s=this.helper.cleanStringFromScript(s)}if(\"function\"==typeof o){if(void 0===(n=o.call(this,t,s)))break;if(!n)continue;\"object\"==typeof n&&(t=n)}if(~[void 0,!0].indexOf(o)){if(null===s)continue;if(i=(i=s).toString().toLowerCase(),this.options.accent&&(i=this.helper.removeAccent.call(this,i)),e=i.indexOf(d),this.options.correlativeTemplate&&\"compiled\"===S[x]&&e<0&&/\\s/.test(d)){l=!0,c=i;for(var q=0,A=(h=d.split(\" \")).length;q<A;q++)if(\"\"!==h[q]){if(!~c.indexOf(h[q])){l=!1;break}c=c.replace(h[q],\"\")}}if(e<0&&!l)continue;if(this.options.offset&&0!==e)continue;if(r){if(void 0===(a=r.call(this,t,s)))break;if(!a)continue;\"object\"==typeof a&&(t=a)}}if(this.resultCount++,this.resultCountPerGroup[u]++,this.resultItemCount<f){if(m&&this.tmpResult[u].length>=m)break;this.tmpResult[u].push(j.extend(!0,{matchedKey:S[x]},t)),this.resultItemCount++}break}if(!this.options.callback.onResult){if(this.resultItemCount>=f)break;if(m&&this.tmpResult[u].length>=m&&\"group\"===p)break}}if(this.options.order){var O,S=[];for(var F in this.tmpResult)if(this.tmpResult.hasOwnProperty(F)){for(v=0,b=this.tmpResult[F].length;v<b;v++)O=this.options.source[this.tmpResult[F][v].group].display||this.options.display,~S.indexOf(O[0])||S.push(O[0]);this.tmpResult[F].sort(this.helper.sort(S,\"asc\"===this.options.order,function(t){return t?t.toString().toUpperCase():\"\"}))}}var L=[],I=[];for(v=0,b=(I=\"function\"==typeof this.options.groupOrder?this.options.groupOrder.apply(this,[this.node,this.query,this.tmpResult,this.resultCount,this.resultCountPerGroup]):Array.isArray(this.options.groupOrder)?this.options.groupOrder:\"string\"==typeof this.options.groupOrder&&~[\"asc\",\"desc\"].indexOf(this.options.groupOrder)?Object.keys(this.tmpResult).sort(this.helper.sort([],\"asc\"===this.options.groupOrder,function(t){return t.toString().toUpperCase()})):Object.keys(this.tmpResult)).length;v<b;v++)L=L.concat(this.tmpResult[I[v]]||[]);this.groups=JSON.parse(JSON.stringify(I)),this.result=L},buildLayout:function(){this.buildHtmlLayout(),this.buildBackdropLayout(),this.buildHintLayout(),this.options.callback.onLayoutBuiltBefore&&(this.tmpResultHtml=this.helper.executeCallback.call(this,this.options.callback.onLayoutBuiltBefore,[this.node,this.query,this.result,this.resultHtml])),this.tmpResultHtml instanceof j?this.resultContainer.html(this.tmpResultHtml):this.resultHtml instanceof j&&this.resultContainer.html(this.resultHtml),this.options.callback.onLayoutBuiltAfter&&this.helper.executeCallback.call(this,this.options.callback.onLayoutBuiltAfter,[this.node,this.query,this.result])},buildHtmlLayout:function(){if(!1!==this.options.resultContainer){var h;if(this.resultContainer||(this.resultContainer=j(\"<div/>\",{class:this.options.selector.result}),this.container.append(this.resultContainer)),!this.result.length&&this.generatedGroupCount===this.generateGroups.length)if(this.options.multiselect&&this.options.multiselect.limit&&this.items.length>=this.options.multiselect.limit)h=this.options.multiselect.limitTemplate?\"function\"==typeof this.options.multiselect.limitTemplate?this.options.multiselect.limitTemplate.call(this,this.query):this.options.multiselect.limitTemplate.replace(/\\{\\{query}}/gi,j(\"<div>\").text(this.helper.cleanStringFromScript(this.query)).html()):\"Can't select more than \"+this.items.length+\" items.\";else{if(!this.options.emptyTemplate||\"\"===this.query)return;h=\"function\"==typeof this.options.emptyTemplate?this.options.emptyTemplate.call(this,this.query):this.options.emptyTemplate.replace(/\\{\\{query}}/gi,j(\"<div>\").text(this.helper.cleanStringFromScript(this.query)).html())}this.displayEmptyTemplate=!!h;var o=this.query.toLowerCase();this.options.accent&&(o=this.helper.removeAccent.call(this,o));var c=this,t=this.groupTemplate||\"<ul></ul>\",p=!1;this.groupTemplate?t=j(t.replace(/<([^>]+)>\\{\\{(.+?)}}<\\/[^>]+>/g,function(t,e,i,s,o){var n=\"\",r=\"group\"===i?c.groups:[i];if(!c.result.length)return!0===p?\"\":(p=!0,\"<\"+e+' class=\"'+c.options.selector.empty+'\">'+h+\"</\"+e+\">\");for(var a=0,l=r.length;a<l;++a)n+=\"<\"+e+' data-group-template=\"'+r[a]+'\"><ul></ul></'+e+\">\";return n})):(t=j(t),this.result.length||t.append(h instanceof j?h:'<li class=\"'+c.options.selector.empty+'\">'+h+\"</li>\")),t.addClass(this.options.selector.list+(this.helper.isEmpty(this.result)?\" empty\":\"\"));for(var e,i,n,s,r,a,l,u,d,f,m,g,y,v=this.groupTemplate&&this.result.length&&c.groups||[],b=0,k=this.result.length;b<k;++b)e=(n=this.result[b]).group,s=!this.options.multiselect&&this.options.source[n.group].href||this.options.href,u=[],d=this.options.source[n.group].display||this.options.display,this.options.group&&(e=n[this.options.group.key],this.options.group.template&&(\"function\"==typeof this.options.group.template?i=this.options.group.template.call(this,n):\"string\"==typeof this.options.group.template&&(i=this.options.group.template.replace(/\\{\\{([\\w\\-\\.]+)}}/gi,function(t,e){return c.helper.namespace.call(c,e,n,\"get\",\"\")}))),t.find('[data-search-group=\"'+e+'\"]')[0]||(this.groupTemplate?t.find('[data-group-template=\"'+e+'\"] ul'):t).append(j(\"<li/>\",{class:c.options.selector.group,html:j(\"<a/>\",{href:\"javascript:;\",html:i||e,tabindex:-1}),\"data-search-group\":e}))),this.groupTemplate&&v.length&&~(m=v.indexOf(e||n.group))&&v.splice(m,1),r=j(\"<li/>\",{class:c.options.selector.item+\" \"+c.options.selector.group+\"-\"+this.helper.slugify.call(this,e),disabled:!!n.disabled,\"data-group\":e,\"data-index\":b,html:j(\"<a/>\",{href:s&&!n.disabled?(g=s,y=n,y.href=c.generateHref.call(c,g,y)):\"javascript:;\",html:function(){if(a=n.group&&c.options.source[n.group].template||c.options.template)\"function\"==typeof a&&(a=a.call(c,c.query,n)),l=a.replace(/\\{\\{([^\\|}]+)(?:\\|([^}]+))*}}/gi,function(t,e,i){var s=c.helper.cleanStringFromScript(String(c.helper.namespace.call(c,e,n,\"get\",\"\")));return~(i=i&&i.split(\"|\")||[]).indexOf(\"slugify\")&&(s=c.helper.slugify.call(c,s)),~i.indexOf(\"raw\")||!0===c.options.highlight&&o&&~d.indexOf(e)&&(s=c.helper.highlight.call(c,s,o.split(\" \"),c.options.accent)),s});else{for(var t=0,e=d.length;t<e;t++)void 0!==(f=/\\./.test(d[t])?c.helper.namespace.call(c,d[t],n,\"get\",\"\"):n[d[t]])&&\"\"!==f&&u.push(f);l='<span class=\"'+c.options.selector.display+'\">'+c.helper.cleanStringFromScript(String(u.join(\" \")))+\"</span>\"}(!0===c.options.highlight&&o&&!a||\"any\"===c.options.highlight)&&(l=c.helper.highlight.call(c,l,o.split(\" \"),c.options.accent)),j(this).append(l)}})}),function(t,i,e){e.on(\"click\",function(t,e){i.disabled?t.preventDefault():(e&&\"object\"==typeof e&&(t.originalEvent=e),c.options.mustSelectItem&&c.helper.isEmpty(i)?t.preventDefault():(c.options.multiselect||(c.item=i),!1!==c.helper.executeCallback.call(c,c.options.callback.onClickBefore,[c.node,j(this),i,t])&&(t.originalEvent&&t.originalEvent.defaultPrevented||t.isDefaultPrevented()||(c.options.multiselect?(c.query=c.rawQuery=\"\",c.addMultiselectItemLayout(i)):(c.focusOnly=!0,c.query=c.rawQuery=c.getTemplateValue.call(c,i),c.isContentEditable&&(c.node.text(c.query),c.helper.setCaretAtEnd(c.node[0]))),c.hideLayout(),c.node.val(c.query).focus(),c.options.cancelButton&&c.toggleCancelButtonVisibility(),c.helper.executeCallback.call(c,c.options.callback.onClickAfter,[c.node,j(this),i,t])))))}),e.on(\"mouseenter\",function(t){i.disabled||(c.clearActiveItem(),c.addActiveItem(j(this))),c.helper.executeCallback.call(c,c.options.callback.onEnter,[c.node,j(this),i,t])}),e.on(\"mouseleave\",function(t){i.disabled||c.clearActiveItem(),c.helper.executeCallback.call(c,c.options.callback.onLeave,[c.node,j(this),i,t])})}(0,n,r),(this.groupTemplate?t.find('[data-group-template=\"'+e+'\"] ul'):t).append(r);if(this.result.length&&v.length)for(b=0,k=v.length;b<k;++b)t.find('[data-group-template=\"'+v[b]+'\"]').remove();this.resultHtml=t}},generateHref:function(t,o){var n=this;return\"string\"==typeof t?t=t.replace(/\\{\\{([^\\|}]+)(?:\\|([^}]+))*}}/gi,function(t,e,i){var s=n.helper.namespace.call(n,e,o,\"get\",\"\");return~(i=i&&i.split(\"|\")||[]).indexOf(\"slugify\")&&(s=n.helper.slugify.call(n,s)),s}):\"function\"==typeof t&&(t=t.call(this,o)),t},getMultiselectComparedData:function(t){var e=\"\";if(Array.isArray(this.options.multiselect.matchOn))for(var i=0,s=this.options.multiselect.matchOn.length;i<s;++i)e+=void 0!==t[this.options.multiselect.matchOn[i]]?t[this.options.multiselect.matchOn[i]]:\"\";else{var o=JSON.parse(JSON.stringify(t)),n=[\"group\",\"matchedKey\",\"compiled\",\"href\"];for(i=0,s=n.length;i<s;++i)delete o[n[i]];e=JSON.stringify(o)}return e},buildBackdropLayout:function(){this.options.backdrop&&(this.backdrop.container||(this.backdrop.css=j.extend({opacity:.6,filter:\"alpha(opacity=60)\",position:\"fixed\",top:0,right:0,bottom:0,left:0,\"z-index\":1040,\"background-color\":\"#000\"},this.options.backdrop),this.backdrop.container=j(\"<div/>\",{class:this.options.selector.backdrop,css:this.backdrop.css}).insertAfter(this.container)),this.container.addClass(\"backdrop\").css({\"z-index\":this.backdrop.css[\"z-index\"]+1,position:\"relative\"}))},buildHintLayout:function(t){if(this.options.hint)if(this.node[0].scrollWidth>Math.ceil(this.node.innerWidth()))this.hint.container&&this.hint.container.val(\"\");else{var e=this,i=\"\",s=(t=t||this.result,this.query.toLowerCase());if(this.options.accent&&(s=this.helper.removeAccent.call(this,s)),this.hintIndex=null,this.searchGroups.length){if(this.hint.container||(this.hint.css=j.extend({\"border-color\":\"transparent\",position:\"absolute\",top:0,display:\"inline\",\"z-index\":-1,float:\"none\",color:\"silver\",\"box-shadow\":\"none\",cursor:\"default\",\"-webkit-user-select\":\"none\",\"-moz-user-select\":\"none\",\"-ms-user-select\":\"none\",\"user-select\":\"none\"},this.options.hint),this.hint.container=j(\"<\"+this.node[0].nodeName+\"/>\",{type:this.node.attr(\"type\"),class:this.node.attr(\"class\"),readonly:!0,unselectable:\"on\",\"aria-hidden\":\"true\",tabindex:-1,click:function(){e.node.focus()}}).addClass(this.options.selector.hint).css(this.hint.css).insertAfter(this.node),this.node.parent().css({position:\"relative\"})),this.hint.container.css(\"color\",this.hint.css.color),s)for(var o,n,r,a=0,l=t.length;a<l;a++)if(!t[a].disabled){n=t[a].group;for(var h=0,c=(o=this.options.source[n].display||this.options.display).length;h<c;h++)if(r=String(t[a][o[h]]).toLowerCase(),this.options.accent&&(r=this.helper.removeAccent.call(this,r)),0===r.indexOf(s)){i=String(t[a][o[h]]),this.hintIndex=a;break}if(null!==this.hintIndex)break}var p=0<i.length&&this.rawQuery+i.substring(this.query.length)||\"\";this.hint.container.val(p),this.isContentEditable&&this.hint.container.text(p)}}},buildDropdownLayout:function(){if(this.options.dropdownFilter){var i=this;j(\"<span/>\",{class:this.options.selector.filter,html:function(){j(this).append(j(\"<button/>\",{type:\"button\",class:i.options.selector.filterButton,style:\"display: none;\",click:function(){i.container.toggleClass(\"filter\");var e=i.namespace+\"-dropdown-filter\";j(\"html\").off(e),i.container.hasClass(\"filter\")&&j(\"html\").on(\"click\"+e+\" touchend\"+e,function(t){j(t.target).closest(\".\"+i.options.selector.filter)[0]&&j(t.target).closest(i.container)[0]||i.hasDragged||(i.container.removeClass(\"filter\"),j(\"html\").off(e))})}})),j(this).append(j(\"<ul/>\",{class:i.options.selector.dropdown}))}}).insertAfter(i.container.find(\".\"+i.options.selector.query))}},buildDropdownItemLayout:function(t){if(this.options.dropdownFilter){var e,i,o=this,n=\"string\"==typeof this.options.dropdownFilter&&this.options.dropdownFilter||\"All\",r=this.container.find(\".\"+this.options.selector.dropdown);\"static\"!==t||!0!==this.options.dropdownFilter&&\"string\"!=typeof this.options.dropdownFilter||this.dropdownFilter.static.push({key:\"group\",template:\"{{group}}\",all:n,value:Object.keys(this.options.source)});for(var s=0,a=this.dropdownFilter[t].length;s<a;s++){i=this.dropdownFilter[t][s],Array.isArray(i.value)||(i.value=[i.value]),i.all&&(this.dropdownFilterAll=i.all);for(var l=0,h=i.value.length;l<=h;l++)l===h&&s!==a-1||l===h&&s===a-1&&\"static\"===t&&this.dropdownFilter.dynamic.length||(e=this.dropdownFilterAll||n,i.value[l]?e=i.template?i.template.replace(new RegExp(\"{{\"+i.key+\"}}\",\"gi\"),i.value[l]):i.value[l]:this.container.find(\".\"+o.options.selector.filterButton).html(e),function(e,i,s){r.append(j(\"<li/>\",{class:o.options.selector.dropdownItem+\" \"+o.helper.slugify.call(o,i.key+\"-\"+(i.value[e]||n)),html:j(\"<a/>\",{href:\"javascript:;\",html:s,click:function(t){t.preventDefault(),c.call(o,{key:i.key,value:i.value[e]||\"*\",template:s})}})}))}(l,i,e))}this.dropdownFilter[t].length&&this.container.find(\".\"+o.options.selector.filterButton).removeAttr(\"style\")}function c(t){\"*\"===t.value?delete this.filters.dropdown:this.filters.dropdown=t,this.container.removeClass(\"filter\").find(\".\"+this.options.selector.filterButton).html(t.template),this.isDropdownEvent=!0,this.node.trigger(\"input\"+this.namespace),this.options.multiselect&&this.adjustInputSize(),this.node.focus()}},dynamicFilter:{init:function(){this.options.dynamicFilter&&(this.dynamicFilter.bind.call(this),this.isDynamicFilterEnabled=!0)},validate:function(t){var e,i,s=null,o=null;for(var n in this.filters.dynamic)if(this.filters.dynamic.hasOwnProperty(n)&&(i=~n.indexOf(\".\")?this.helper.namespace.call(this,n,t,\"get\"):t[n],\"|\"!==this.filters.dynamic[n].modifier||s||(s=i==this.filters.dynamic[n].value||!1),\"&\"===this.filters.dynamic[n].modifier)){if(i!=this.filters.dynamic[n].value){o=!1;break}o=!0}return e=s,null!==o&&!0===(e=o)&&null!==s&&(e=s),!!e},set:function(t,e){var i=t.match(/^([|&])?(.+)/);e?this.filters.dynamic[i[2]]={modifier:i[1]||\"|\",value:e}:delete this.filters.dynamic[i[2]],this.isDynamicFilterEnabled&&this.generateSource()},bind:function(){for(var t,e=this,i=0,s=this.options.dynamicFilter.length;i<s;i++)\"string\"==typeof(t=this.options.dynamicFilter[i]).selector&&(t.selector=j(t.selector)),t.selector instanceof j&&t.selector[0]&&t.key&&function(t){t.selector.off(e.namespace).on(\"change\"+e.namespace,function(){e.dynamicFilter.set.apply(e,[t.key,e.dynamicFilter.getValue(this)])}).trigger(\"change\"+e.namespace)}(t)},getValue:function(t){var e;return\"SELECT\"===t.tagName?e=t.value:\"INPUT\"===t.tagName&&(\"checkbox\"===t.type?e=t.checked&&t.getAttribute(\"value\")||t.checked||null:\"radio\"===t.type&&t.checked&&(e=t.value)),e}},buildMultiselectLayout:function(){if(this.options.multiselect){var t,e=this;this.label.container=j(\"<span/>\",{class:this.options.selector.labelContainer,\"data-padding-left\":parseFloat(this.node.css(\"padding-left\"))||0,\"data-padding-right\":parseFloat(this.node.css(\"padding-right\"))||0,\"data-padding-top\":parseFloat(this.node.css(\"padding-top\"))||0,click:function(t){j(t.target).hasClass(e.options.selector.labelContainer)&&e.node.focus()}}),this.node.closest(\".\"+this.options.selector.query).prepend(this.label.container),this.options.multiselect.data&&(Array.isArray(this.options.multiselect.data)?this.populateMultiselectData(this.options.multiselect.data):\"function\"==typeof this.options.multiselect.data&&(t=this.options.multiselect.data.call(this),Array.isArray(t)?this.populateMultiselectData(t):\"function\"==typeof t.promise&&j.when(t).then(function(t){t&&Array.isArray(t)&&e.populateMultiselectData(t)})))}},isMultiselectUniqueData:function(t){for(var e=!0,i=0,s=this.comparedItems.length;i<s;++i)if(this.comparedItems[i]===this.getMultiselectComparedData(t)){e=!1;break}return e},populateMultiselectData:function(t){for(var e=0,i=t.length;e<i;++e)this.addMultiselectItemLayout(t[e]);this.node.trigger(\"search\"+this.namespace,{origin:\"populateMultiselectData\"})},addMultiselectItemLayout:function(t){if(this.isMultiselectUniqueData(t)){this.items.push(t),this.comparedItems.push(this.getMultiselectComparedData(t));var e,i=this.getTemplateValue(t),s=this,o=this.options.multiselect.href?\"a\":\"span\",n=j(\"<span/>\",{class:this.options.selector.label,html:j(\"<\"+o+\"/>\",{text:i,click:function(t){var e=j(this).closest(\".\"+s.options.selector.label),i=s.label.container.find(\".\"+s.options.selector.label).index(e);s.options.multiselect.callback&&s.helper.executeCallback.call(s,s.options.multiselect.callback.onClick,[s.node,s.items[i],t])},href:this.options.multiselect.href?(e=s.items[s.items.length-1],s.generateHref.call(s,s.options.multiselect.href,e)):null})});return n.append(j(\"<span/>\",{class:this.options.selector.cancelButton,html:\"×\",click:function(t){var e=j(this).closest(\".\"+s.options.selector.label),i=s.label.container.find(\".\"+s.options.selector.label).index(e);s.cancelMultiselectItem(i,e,t)}})),this.label.container.append(n),this.adjustInputSize(),!0}},cancelMultiselectItem:function(t,e,i){var s=this.items[t];(e=e||this.label.container.find(\".\"+this.options.selector.label).eq(t)).remove(),this.items.splice(t,1),this.comparedItems.splice(t,1),this.options.multiselect.callback&&this.helper.executeCallback.call(this,this.options.multiselect.callback.onCancel,[this.node,s,i]),this.adjustInputSize(),this.focusOnly=!0,this.node.focus().trigger(\"input\"+this.namespace,{origin:\"cancelMultiselectItem\"})},adjustInputSize:function(){var i=this.node[0].getBoundingClientRect().width-(parseFloat(this.label.container.data(\"padding-right\"))||0)-(parseFloat(this.label.container.css(\"padding-left\"))||0),s=0,o=0,n=0,r=!1,a=0;this.label.container.find(\".\"+this.options.selector.label).filter(function(t,e){0===t&&(a=j(e)[0].getBoundingClientRect().height+parseFloat(j(e).css(\"margin-bottom\")||0)),s=j(e)[0].getBoundingClientRect().width+parseFloat(j(e).css(\"margin-right\")||0),.7*i<n+s&&!r&&(o++,r=!0),n+s<i?n+=s:(r=!1,n=s)});var t=parseFloat(this.label.container.data(\"padding-left\")||0)+(r?0:n),e=o*a+parseFloat(this.label.container.data(\"padding-top\")||0);this.container.find(\".\"+this.options.selector.query).find(\"input, textarea, [contenteditable], .typeahead__hint\").css({paddingLeft:t,paddingTop:e})},showLayout:function(){!this.container.hasClass(\"result\")&&(this.result.length||this.displayEmptyTemplate||this.options.backdropOnFocus)&&(function(){var e=this;j(\"html\").off(\"keydown\"+this.namespace).on(\"keydown\"+this.namespace,function(t){t.keyCode&&9===t.keyCode&&setTimeout(function(){j(\":focus\").closest(e.container).find(e.node)[0]||e.hideLayout()},0)}),j(\"html\").off(\"click\"+this.namespace+\" touchend\"+this.namespace).on(\"click\"+this.namespace+\" touchend\"+this.namespace,function(t){j(t.target).closest(e.container)[0]||j(t.target).closest(\".\"+e.options.selector.item)[0]||t.target.className===e.options.selector.cancelButton||e.hasDragged||e.hideLayout()})}.call(this),this.container.addClass([this.result.length||this.searchGroups.length&&this.displayEmptyTemplate?\"result \":\"\",this.options.hint&&this.searchGroups.length?\"hint\":\"\",this.options.backdrop||this.options.backdropOnFocus?\"backdrop\":\"\"].join(\" \")),this.helper.executeCallback.call(this,this.options.callback.onShowLayout,[this.node,this.query]))},hideLayout:function(){(this.container.hasClass(\"result\")||this.container.hasClass(\"backdrop\"))&&(this.container.removeClass(\"result hint filter\"+(this.options.backdropOnFocus&&j(this.node).is(\":focus\")?\"\":\" backdrop\")),this.options.backdropOnFocus&&this.container.hasClass(\"backdrop\")||(j(\"html\").off(this.namespace),this.helper.executeCallback.call(this,this.options.callback.onHideLayout,[this.node,this.query])))},resetLayout:function(){this.result=[],this.tmpResult={},this.groups=[],this.resultCount=0,this.resultCountPerGroup={},this.resultItemCount=0,this.resultHtml=null,this.options.hint&&this.hint.container&&(this.hint.container.val(\"\"),this.isContentEditable&&this.hint.container.text(\"\"))},resetInput:function(){this.node.val(\"\"),this.isContentEditable&&this.node.text(\"\"),this.query=\"\",this.rawQuery=\"\"},buildCancelButtonLayout:function(){if(this.options.cancelButton){var e=this;j(\"<span/>\",{class:this.options.selector.cancelButton,html:\"×\",mousedown:function(t){t.stopImmediatePropagation(),t.preventDefault(),e.resetInput(),e.node.trigger(\"input\"+e.namespace,[t])}}).insertBefore(this.node)}},toggleCancelButtonVisibility:function(){this.container.toggleClass(\"cancel\",!!this.query.length)},__construct:function(){this.extendOptions(),this.unifySourceFormat()&&(this.dynamicFilter.init.apply(this),this.init(),this.buildDropdownLayout(),this.buildDropdownItemLayout(\"static\"),this.buildMultiselectLayout(),this.delegateEvents(),this.buildCancelButtonLayout(),this.helper.executeCallback.call(this,this.options.callback.onReady,[this.node]))},helper:{isEmpty:function(t){for(var e in t)if(t.hasOwnProperty(e))return!1;return!0},removeAccent:function(t){if(\"string\"==typeof t){var e=o;return\"object\"==typeof this.options.accent&&(e=this.options.accent),t=t.toLowerCase().replace(new RegExp(\"[\"+e.from+\"]\",\"g\"),function(t){return e.to[e.from.indexOf(t)]})}},slugify:function(t){return\"\"!==(t=String(t))&&(t=(t=this.helper.removeAccent.call(this,t)).replace(/[^-a-z0-9]+/g,\"-\").replace(/-+/g,\"-\").replace(/^-|-$/g,\"\")),t},sort:function(s,i,o){function n(t){for(var e=0,i=s.length;e<i;e++)if(void 0!==t[s[e]])return o(t[s[e]]);return t}return i=[-1,1][+!!i],function(t,e){return t=n(t),e=n(e),i*((e<t)-(t<e))}},replaceAt:function(t,e,i,s){return t.substring(0,e)+s+t.substring(e+i)},highlight:function(t,e,i){t=String(t);var s=i&&this.helper.removeAccent.call(this,t)||t,o=[];Array.isArray(e)||(e=[e]),e.sort(function(t,e){return e.length-t.length});for(var n=e.length-1;0<=n;n--)\"\"!==e[n].trim()?e[n]=e[n].replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g,\"\\\\$&\"):e.splice(n,1);s.replace(new RegExp(\"(?:\"+e.join(\"|\")+\")(?!([^<]+)?>)\",\"gi\"),function(t,e,i){o.push({offset:i,length:t.length})});for(n=o.length-1;0<=n;n--)t=this.helper.replaceAt(t,o[n].offset,o[n].length,\"<strong>\"+t.substr(o[n].offset,o[n].length)+\"</strong>\");return t},getCaret:function(t){var e=0;if(t.selectionStart)return t.selectionStart;if(document.selection){var i=document.selection.createRange();if(null===i)return e;var s=t.createTextRange(),o=s.duplicate();s.moveToBookmark(i.getBookmark()),o.setEndPoint(\"EndToStart\",s),e=o.text.length}else if(window.getSelection){var n=window.getSelection();if(n.rangeCount){var r=n.getRangeAt(0);r.commonAncestorContainer.parentNode==t&&(e=r.endOffset)}}return e},setCaretAtEnd:function(t){if(void 0!==window.getSelection&&void 0!==document.createRange){var e=document.createRange();e.selectNodeContents(t),e.collapse(!1);var i=window.getSelection();i.removeAllRanges(),i.addRange(e)}else if(void 0!==document.body.createTextRange){var s=document.body.createTextRange();s.moveToElementText(t),s.collapse(!1),s.select()}},cleanStringFromScript:function(t){return\"string\"==typeof t&&t.replace(/<\\/?(?:script|iframe)\\b[^>]*>/gm,\"\")||t},executeCallback:function(t,e){if(t){var i;if(\"function\"==typeof t)i=t;else if((\"string\"==typeof t||Array.isArray(t))&&(\"string\"==typeof t&&(t=[t,[]]),\"function\"!=typeof(i=this.helper.namespace.call(this,t[0],window))))return;return i.apply(this,(t[1]||[]).concat(e||[]))}},namespace:function(t,e,i,s){if(\"string\"!=typeof t||\"\"===t)return!1;var o=void 0!==s?s:void 0;if(!~t.indexOf(\".\"))return e[t]||o;for(var n=t.split(\".\"),r=e||window,a=(i=i||\"get\",\"\"),l=0,h=n.length;l<h;l++){if(void 0===r[a=n[l]]){if(~[\"get\",\"delete\"].indexOf(i))return void 0!==s?s:void 0;r[a]={}}if(~[\"set\",\"create\",\"delete\"].indexOf(i)&&l===h-1){if(\"set\"!==i&&\"create\"!==i)return delete r[a],!0;r[a]=o}r=r[a]}return r},typeWatch:(i=0,function(t,e){clearTimeout(i),i=setTimeout(t,e)})}},j.fn.typeahead=j.typeahead=function(t){return e.typeahead(this,t)};var e={typeahead:function(t,e){if(e&&e.source&&\"object\"==typeof e.source){if(\"function\"==typeof t){if(!e.input)return;t=j(e.input)}if(t.length){if(void 0===t[0].value&&(t[0].value=t.text()),1===t.length)return t[0].selector=t.selector||e.input||t[0].nodeName.toLowerCase(),window.Typeahead[t[0].selector]=new r(t,e);for(var i,s={},o=0,n=t.length;o<n;++o)void 0!==s[i=t[o].nodeName.toLowerCase()]&&(i+=o),t[o].selector=i,window.Typeahead[i]=s[i]=new r(t.eq(o),e);return s}}}};return window.console=window.console||{log:function(){}},Array.isArray||(Array.isArray=function(t){return\"[object Array]\"===Object.prototype.toString.call(t)}),\"trim\"in String.prototype||(String.prototype.trim=function(){return this.replace(/^\\s+/,\"\").replace(/\\s+$/,\"\")}),\"indexOf\"in Array.prototype||(Array.prototype.indexOf=function(t,e){void 0===e&&(e=0),e<0&&(e+=this.length),e<0&&(e=0);for(var i=this.length;e<i;e++)if(e in this&&this[e]===t)return e;return-1}),Object.keys||(Object.keys=function(t){var e,i=[];for(e in t)Object.prototype.hasOwnProperty.call(t,e)&&i.push(e);return i}),r});","/*!\n * jQuery UI :data 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: :data Selector\n//>>group: Core\n//>>description: Selects elements which have data stored under the specified key.\n//>>docs: http://api.jqueryui.com/data-selector/\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} ( function( $ ) {\nreturn $.extend( $.expr[ \":\" ], {\n\tdata: $.expr.createPseudo ?\n\t\t$.expr.createPseudo( function( dataName ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn !!$.data( elem, dataName );\n\t\t\t};\n\t\t} ) :\n\n\t\t// Support: jQuery <1.8\n\t\tfunction( elem, i, match ) {\n\t\t\treturn !!$.data( elem, match[ 3 ] );\n\t\t}\n} );\n} ) );\n","/*!\n * jQuery UI Disable Selection 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: disableSelection\n//>>group: Core\n//>>description: Disable selection of text content within the set of matched elements.\n//>>docs: http://api.jqueryui.com/disableSelection/\n\n// This file is deprecated\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} ( function( $ ) {\n\nreturn $.fn.extend( {\n\tdisableSelection: ( function() {\n\t\tvar eventType = \"onselectstart\" in document.createElement( \"div\" ) ?\n\t\t\t\"selectstart\" :\n\t\t\t\"mousedown\";\n\n\t\treturn function() {\n\t\t\treturn this.on( eventType + \".ui-disableSelection\", function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t} );\n\t\t};\n\t} )(),\n\n\tenableSelection: function() {\n\t\treturn this.off( \".ui-disableSelection\" );\n\t}\n} );\n\n} ) );\n","/*!\n * jQuery UI Effects 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Effects Core\n//>>group: Effects\n// jscs:disable maximumLineLength\n//>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.\n// jscs:enable maximumLineLength\n//>>docs: http://api.jqueryui.com/category/effects-core/\n//>>demos: http://jqueryui.com/effect/\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n\nvar dataSpace = \"ui-effects-\",\n\tdataSpaceStyle = \"ui-effects-style\",\n\tdataSpaceAnimated = \"ui-effects-animated\",\n\n\t// Create a local jQuery because jQuery Color relies on it and the\n\t// global may not exist with AMD and a custom build (#10199)\n\tjQuery = $;\n\n$.effects = {\n\teffect: {}\n};\n\n/*!\n * jQuery Color Animations v2.1.2\n * https://github.com/jquery/jquery-color\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * Date: Wed Jan 16 08:47:09 2013 -0600\n */\n( function( jQuery, undefined ) {\n\n\tvar stepHooks = \"backgroundColor borderBottomColor borderLeftColor borderRightColor \" +\n\t\t\"borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor\",\n\n\t// Plusequals test for += 100 -= 100\n\trplusequals = /^([\\-+])=\\s*(\\d+\\.?\\d*)/,\n\n\t// A set of RE's that can match strings and generate color tuples.\n\tstringParsers = [ {\n\t\t\tre: /rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ],\n\t\t\t\t\texecResult[ 3 ],\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /rgba?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ] * 2.55,\n\t\t\t\t\texecResult[ 2 ] * 2.55,\n\t\t\t\t\texecResult[ 3 ] * 2.55,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\n\t\t\t// This regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ], 16 )\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\n\t\t\t// This regex ignores A-F because it's compared against an already lowercased string\n\t\t\tre: /#([a-f0-9])([a-f0-9])([a-f0-9])/,\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\tparseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),\n\t\t\t\t\tparseInt( execResult[ 3 ] + execResult[ 3 ], 16 )\n\t\t\t\t];\n\t\t\t}\n\t\t}, {\n\t\t\tre: /hsla?\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n\t\t\tspace: \"hsla\",\n\t\t\tparse: function( execResult ) {\n\t\t\t\treturn [\n\t\t\t\t\texecResult[ 1 ],\n\t\t\t\t\texecResult[ 2 ] / 100,\n\t\t\t\t\texecResult[ 3 ] / 100,\n\t\t\t\t\texecResult[ 4 ]\n\t\t\t\t];\n\t\t\t}\n\t\t} ],\n\n\t// JQuery.Color( )\n\tcolor = jQuery.Color = function( color, green, blue, alpha ) {\n\t\treturn new jQuery.Color.fn.parse( color, green, blue, alpha );\n\t},\n\tspaces = {\n\t\trgba: {\n\t\t\tprops: {\n\t\t\t\tred: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tgreen: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t},\n\t\t\t\tblue: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"byte\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\thsla: {\n\t\t\tprops: {\n\t\t\t\thue: {\n\t\t\t\t\tidx: 0,\n\t\t\t\t\ttype: \"degrees\"\n\t\t\t\t},\n\t\t\t\tsaturation: {\n\t\t\t\t\tidx: 1,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t},\n\t\t\t\tlightness: {\n\t\t\t\t\tidx: 2,\n\t\t\t\t\ttype: \"percent\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tpropTypes = {\n\t\t\"byte\": {\n\t\t\tfloor: true,\n\t\t\tmax: 255\n\t\t},\n\t\t\"percent\": {\n\t\t\tmax: 1\n\t\t},\n\t\t\"degrees\": {\n\t\t\tmod: 360,\n\t\t\tfloor: true\n\t\t}\n\t},\n\tsupport = color.support = {},\n\n\t// Element for support tests\n\tsupportElem = jQuery( \"<p>\" )[ 0 ],\n\n\t// Colors = jQuery.Color.names\n\tcolors,\n\n\t// Local aliases of functions called often\n\teach = jQuery.each;\n\n// Determine rgba support immediately\nsupportElem.style.cssText = \"background-color:rgba(1,1,1,.5)\";\nsupport.rgba = supportElem.style.backgroundColor.indexOf( \"rgba\" ) > -1;\n\n// Define cache name and alpha properties\n// for rgba and hsla spaces\neach( spaces, function( spaceName, space ) {\n\tspace.cache = \"_\" + spaceName;\n\tspace.props.alpha = {\n\t\tidx: 3,\n\t\ttype: \"percent\",\n\t\tdef: 1\n\t};\n} );\n\nfunction clamp( value, prop, allowEmpty ) {\n\tvar type = propTypes[ prop.type ] || {};\n\n\tif ( value == null ) {\n\t\treturn ( allowEmpty || !prop.def ) ? null : prop.def;\n\t}\n\n\t// ~~ is an short way of doing floor for positive numbers\n\tvalue = type.floor ? ~~value : parseFloat( value );\n\n\t// IE will pass in empty strings as value for alpha,\n\t// which will hit this case\n\tif ( isNaN( value ) ) {\n\t\treturn prop.def;\n\t}\n\n\tif ( type.mod ) {\n\n\t\t// We add mod before modding to make sure that negatives values\n\t\t// get converted properly: -10 -> 350\n\t\treturn ( value + type.mod ) % type.mod;\n\t}\n\n\t// For now all property types without mod have min and max\n\treturn 0 > value ? 0 : type.max < value ? type.max : value;\n}\n\nfunction stringParse( string ) {\n\tvar inst = color(),\n\t\trgba = inst._rgba = [];\n\n\tstring = string.toLowerCase();\n\n\teach( stringParsers, function( i, parser ) {\n\t\tvar parsed,\n\t\t\tmatch = parser.re.exec( string ),\n\t\t\tvalues = match && parser.parse( match ),\n\t\t\tspaceName = parser.space || \"rgba\";\n\n\t\tif ( values ) {\n\t\t\tparsed = inst[ spaceName ]( values );\n\n\t\t\t// If this was an rgba parse the assignment might happen twice\n\t\t\t// oh well....\n\t\t\tinst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];\n\t\t\trgba = inst._rgba = parsed._rgba;\n\n\t\t\t// Exit each( stringParsers ) here because we matched\n\t\t\treturn false;\n\t\t}\n\t} );\n\n\t// Found a stringParser that handled it\n\tif ( rgba.length ) {\n\n\t\t// If this came from a parsed string, force \"transparent\" when alpha is 0\n\t\t// chrome, (and maybe others) return \"transparent\" as rgba(0,0,0,0)\n\t\tif ( rgba.join() === \"0,0,0,0\" ) {\n\t\t\tjQuery.extend( rgba, colors.transparent );\n\t\t}\n\t\treturn inst;\n\t}\n\n\t// Named colors\n\treturn colors[ string ];\n}\n\ncolor.fn = jQuery.extend( color.prototype, {\n\tparse: function( red, green, blue, alpha ) {\n\t\tif ( red === undefined ) {\n\t\t\tthis._rgba = [ null, null, null, null ];\n\t\t\treturn this;\n\t\t}\n\t\tif ( red.jquery || red.nodeType ) {\n\t\t\tred = jQuery( red ).css( green );\n\t\t\tgreen = undefined;\n\t\t}\n\n\t\tvar inst = this,\n\t\t\ttype = jQuery.type( red ),\n\t\t\trgba = this._rgba = [];\n\n\t\t// More than 1 argument specified - assume ( red, green, blue, alpha )\n\t\tif ( green !== undefined ) {\n\t\t\tred = [ red, green, blue, alpha ];\n\t\t\ttype = \"array\";\n\t\t}\n\n\t\tif ( type === \"string\" ) {\n\t\t\treturn this.parse( stringParse( red ) || colors._default );\n\t\t}\n\n\t\tif ( type === \"array\" ) {\n\t\t\teach( spaces.rgba.props, function( key, prop ) {\n\t\t\t\trgba[ prop.idx ] = clamp( red[ prop.idx ], prop );\n\t\t\t} );\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( type === \"object\" ) {\n\t\t\tif ( red instanceof color ) {\n\t\t\t\teach( spaces, function( spaceName, space ) {\n\t\t\t\t\tif ( red[ space.cache ] ) {\n\t\t\t\t\t\tinst[ space.cache ] = red[ space.cache ].slice();\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\teach( spaces, function( spaceName, space ) {\n\t\t\t\t\tvar cache = space.cache;\n\t\t\t\t\teach( space.props, function( key, prop ) {\n\n\t\t\t\t\t\t// If the cache doesn't exist, and we know how to convert\n\t\t\t\t\t\tif ( !inst[ cache ] && space.to ) {\n\n\t\t\t\t\t\t\t// If the value was null, we don't need to copy it\n\t\t\t\t\t\t\t// if the key was alpha, we don't need to copy it either\n\t\t\t\t\t\t\tif ( key === \"alpha\" || red[ key ] == null ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tinst[ cache ] = space.to( inst._rgba );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// This is the only case where we allow nulls for ALL properties.\n\t\t\t\t\t\t// call clamp with alwaysAllowEmpty\n\t\t\t\t\t\tinst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );\n\t\t\t\t\t} );\n\n\t\t\t\t\t// Everything defined but alpha?\n\t\t\t\t\tif ( inst[ cache ] &&\n\t\t\t\t\t\t\tjQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {\n\n\t\t\t\t\t\t// Use the default of 1\n\t\t\t\t\t\tinst[ cache ][ 3 ] = 1;\n\t\t\t\t\t\tif ( space.from ) {\n\t\t\t\t\t\t\tinst._rgba = space.from( inst[ cache ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t},\n\tis: function( compare ) {\n\t\tvar is = color( compare ),\n\t\t\tsame = true,\n\t\t\tinst = this;\n\n\t\teach( spaces, function( _, space ) {\n\t\t\tvar localCache,\n\t\t\t\tisCache = is[ space.cache ];\n\t\t\tif ( isCache ) {\n\t\t\t\tlocalCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];\n\t\t\t\teach( space.props, function( _, prop ) {\n\t\t\t\t\tif ( isCache[ prop.idx ] != null ) {\n\t\t\t\t\t\tsame = ( isCache[ prop.idx ] === localCache[ prop.idx ] );\n\t\t\t\t\t\treturn same;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn same;\n\t\t} );\n\t\treturn same;\n\t},\n\t_space: function() {\n\t\tvar used = [],\n\t\t\tinst = this;\n\t\teach( spaces, function( spaceName, space ) {\n\t\t\tif ( inst[ space.cache ] ) {\n\t\t\t\tused.push( spaceName );\n\t\t\t}\n\t\t} );\n\t\treturn used.pop();\n\t},\n\ttransition: function( other, distance ) {\n\t\tvar end = color( other ),\n\t\t\tspaceName = end._space(),\n\t\t\tspace = spaces[ spaceName ],\n\t\t\tstartColor = this.alpha() === 0 ? color( \"transparent\" ) : this,\n\t\t\tstart = startColor[ space.cache ] || space.to( startColor._rgba ),\n\t\t\tresult = start.slice();\n\n\t\tend = end[ space.cache ];\n\t\teach( space.props, function( key, prop ) {\n\t\t\tvar index = prop.idx,\n\t\t\t\tstartValue = start[ index ],\n\t\t\t\tendValue = end[ index ],\n\t\t\t\ttype = propTypes[ prop.type ] || {};\n\n\t\t\t// If null, don't override start value\n\t\t\tif ( endValue === null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If null - use end\n\t\t\tif ( startValue === null ) {\n\t\t\t\tresult[ index ] = endValue;\n\t\t\t} else {\n\t\t\t\tif ( type.mod ) {\n\t\t\t\t\tif ( endValue - startValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue += type.mod;\n\t\t\t\t\t} else if ( startValue - endValue > type.mod / 2 ) {\n\t\t\t\t\t\tstartValue -= type.mod;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresult[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );\n\t\t\t}\n\t\t} );\n\t\treturn this[ spaceName ]( result );\n\t},\n\tblend: function( opaque ) {\n\n\t\t// If we are already opaque - return ourself\n\t\tif ( this._rgba[ 3 ] === 1 ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tvar rgb = this._rgba.slice(),\n\t\t\ta = rgb.pop(),\n\t\t\tblend = color( opaque )._rgba;\n\n\t\treturn color( jQuery.map( rgb, function( v, i ) {\n\t\t\treturn ( 1 - a ) * blend[ i ] + a * v;\n\t\t} ) );\n\t},\n\ttoRgbaString: function() {\n\t\tvar prefix = \"rgba(\",\n\t\t\trgba = jQuery.map( this._rgba, function( v, i ) {\n\t\t\t\treturn v == null ? ( i > 2 ? 1 : 0 ) : v;\n\t\t\t} );\n\n\t\tif ( rgba[ 3 ] === 1 ) {\n\t\t\trgba.pop();\n\t\t\tprefix = \"rgb(\";\n\t\t}\n\n\t\treturn prefix + rgba.join() + \")\";\n\t},\n\ttoHslaString: function() {\n\t\tvar prefix = \"hsla(\",\n\t\t\thsla = jQuery.map( this.hsla(), function( v, i ) {\n\t\t\t\tif ( v == null ) {\n\t\t\t\t\tv = i > 2 ? 1 : 0;\n\t\t\t\t}\n\n\t\t\t\t// Catch 1 and 2\n\t\t\t\tif ( i && i < 3 ) {\n\t\t\t\t\tv = Math.round( v * 100 ) + \"%\";\n\t\t\t\t}\n\t\t\t\treturn v;\n\t\t\t} );\n\n\t\tif ( hsla[ 3 ] === 1 ) {\n\t\t\thsla.pop();\n\t\t\tprefix = \"hsl(\";\n\t\t}\n\t\treturn prefix + hsla.join() + \")\";\n\t},\n\ttoHexString: function( includeAlpha ) {\n\t\tvar rgba = this._rgba.slice(),\n\t\t\talpha = rgba.pop();\n\n\t\tif ( includeAlpha ) {\n\t\t\trgba.push( ~~( alpha * 255 ) );\n\t\t}\n\n\t\treturn \"#\" + jQuery.map( rgba, function( v ) {\n\n\t\t\t// Default to 0 when nulls exist\n\t\t\tv = ( v || 0 ).toString( 16 );\n\t\t\treturn v.length === 1 ? \"0\" + v : v;\n\t\t} ).join( \"\" );\n\t},\n\ttoString: function() {\n\t\treturn this._rgba[ 3 ] === 0 ? \"transparent\" : this.toRgbaString();\n\t}\n} );\ncolor.fn.parse.prototype = color.fn;\n\n// Hsla conversions adapted from:\n// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021\n\nfunction hue2rgb( p, q, h ) {\n\th = ( h + 1 ) % 1;\n\tif ( h * 6 < 1 ) {\n\t\treturn p + ( q - p ) * h * 6;\n\t}\n\tif ( h * 2 < 1 ) {\n\t\treturn q;\n\t}\n\tif ( h * 3 < 2 ) {\n\t\treturn p + ( q - p ) * ( ( 2 / 3 ) - h ) * 6;\n\t}\n\treturn p;\n}\n\nspaces.hsla.to = function( rgba ) {\n\tif ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {\n\t\treturn [ null, null, null, rgba[ 3 ] ];\n\t}\n\tvar r = rgba[ 0 ] / 255,\n\t\tg = rgba[ 1 ] / 255,\n\t\tb = rgba[ 2 ] / 255,\n\t\ta = rgba[ 3 ],\n\t\tmax = Math.max( r, g, b ),\n\t\tmin = Math.min( r, g, b ),\n\t\tdiff = max - min,\n\t\tadd = max + min,\n\t\tl = add * 0.5,\n\t\th, s;\n\n\tif ( min === max ) {\n\t\th = 0;\n\t} else if ( r === max ) {\n\t\th = ( 60 * ( g - b ) / diff ) + 360;\n\t} else if ( g === max ) {\n\t\th = ( 60 * ( b - r ) / diff ) + 120;\n\t} else {\n\t\th = ( 60 * ( r - g ) / diff ) + 240;\n\t}\n\n\t// Chroma (diff) == 0 means greyscale which, by definition, saturation = 0%\n\t// otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)\n\tif ( diff === 0 ) {\n\t\ts = 0;\n\t} else if ( l <= 0.5 ) {\n\t\ts = diff / add;\n\t} else {\n\t\ts = diff / ( 2 - add );\n\t}\n\treturn [ Math.round( h ) % 360, s, l, a == null ? 1 : a ];\n};\n\nspaces.hsla.from = function( hsla ) {\n\tif ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {\n\t\treturn [ null, null, null, hsla[ 3 ] ];\n\t}\n\tvar h = hsla[ 0 ] / 360,\n\t\ts = hsla[ 1 ],\n\t\tl = hsla[ 2 ],\n\t\ta = hsla[ 3 ],\n\t\tq = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,\n\t\tp = 2 * l - q;\n\n\treturn [\n\t\tMath.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h ) * 255 ),\n\t\tMath.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),\n\t\ta\n\t];\n};\n\neach( spaces, function( spaceName, space ) {\n\tvar props = space.props,\n\t\tcache = space.cache,\n\t\tto = space.to,\n\t\tfrom = space.from;\n\n\t// Makes rgba() and hsla()\n\tcolor.fn[ spaceName ] = function( value ) {\n\n\t\t// Generate a cache for this space if it doesn't exist\n\t\tif ( to && !this[ cache ] ) {\n\t\t\tthis[ cache ] = to( this._rgba );\n\t\t}\n\t\tif ( value === undefined ) {\n\t\t\treturn this[ cache ].slice();\n\t\t}\n\n\t\tvar ret,\n\t\t\ttype = jQuery.type( value ),\n\t\t\tarr = ( type === \"array\" || type === \"object\" ) ? value : arguments,\n\t\t\tlocal = this[ cache ].slice();\n\n\t\teach( props, function( key, prop ) {\n\t\t\tvar val = arr[ type === \"object\" ? key : prop.idx ];\n\t\t\tif ( val == null ) {\n\t\t\t\tval = local[ prop.idx ];\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = clamp( val, prop );\n\t\t} );\n\n\t\tif ( from ) {\n\t\t\tret = color( from( local ) );\n\t\t\tret[ cache ] = local;\n\t\t\treturn ret;\n\t\t} else {\n\t\t\treturn color( local );\n\t\t}\n\t};\n\n\t// Makes red() green() blue() alpha() hue() saturation() lightness()\n\teach( props, function( key, prop ) {\n\n\t\t// Alpha is included in more than one space\n\t\tif ( color.fn[ key ] ) {\n\t\t\treturn;\n\t\t}\n\t\tcolor.fn[ key ] = function( value ) {\n\t\t\tvar vtype = jQuery.type( value ),\n\t\t\t\tfn = ( key === \"alpha\" ? ( this._hsla ? \"hsla\" : \"rgba\" ) : spaceName ),\n\t\t\t\tlocal = this[ fn ](),\n\t\t\t\tcur = local[ prop.idx ],\n\t\t\t\tmatch;\n\n\t\t\tif ( vtype === \"undefined\" ) {\n\t\t\t\treturn cur;\n\t\t\t}\n\n\t\t\tif ( vtype === \"function\" ) {\n\t\t\t\tvalue = value.call( this, cur );\n\t\t\t\tvtype = jQuery.type( value );\n\t\t\t}\n\t\t\tif ( value == null && prop.empty ) {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\tif ( vtype === \"string\" ) {\n\t\t\t\tmatch = rplusequals.exec( value );\n\t\t\t\tif ( match ) {\n\t\t\t\t\tvalue = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === \"+\" ? 1 : -1 );\n\t\t\t\t}\n\t\t\t}\n\t\t\tlocal[ prop.idx ] = value;\n\t\t\treturn this[ fn ]( local );\n\t\t};\n\t} );\n} );\n\n// Add cssHook and .fx.step function for each named hook.\n// accept a space separated string of properties\ncolor.hook = function( hook ) {\n\tvar hooks = hook.split( \" \" );\n\teach( hooks, function( i, hook ) {\n\t\tjQuery.cssHooks[ hook ] = {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar parsed, curElem,\n\t\t\t\t\tbackgroundColor = \"\";\n\n\t\t\t\tif ( value !== \"transparent\" && ( jQuery.type( value ) !== \"string\" ||\n\t\t\t\t\t\t( parsed = stringParse( value ) ) ) ) {\n\t\t\t\t\tvalue = color( parsed || value );\n\t\t\t\t\tif ( !support.rgba && value._rgba[ 3 ] !== 1 ) {\n\t\t\t\t\t\tcurElem = hook === \"backgroundColor\" ? elem.parentNode : elem;\n\t\t\t\t\t\twhile (\n\t\t\t\t\t\t\t( backgroundColor === \"\" || backgroundColor === \"transparent\" ) &&\n\t\t\t\t\t\t\tcurElem && curElem.style\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tbackgroundColor = jQuery.css( curElem, \"backgroundColor\" );\n\t\t\t\t\t\t\t\tcurElem = curElem.parentNode;\n\t\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvalue = value.blend( backgroundColor && backgroundColor !== \"transparent\" ?\n\t\t\t\t\t\t\tbackgroundColor :\n\t\t\t\t\t\t\t\"_default\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tvalue = value.toRgbaString();\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\telem.style[ hook ] = value;\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// Wrapped to prevent IE from throwing errors on \"invalid\" values like\n\t\t\t\t\t// 'auto' or 'inherit'\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tjQuery.fx.step[ hook ] = function( fx ) {\n\t\t\tif ( !fx.colorInit ) {\n\t\t\t\tfx.start = color( fx.elem, hook );\n\t\t\t\tfx.end = color( fx.end );\n\t\t\t\tfx.colorInit = true;\n\t\t\t}\n\t\t\tjQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );\n\t\t};\n\t} );\n\n};\n\ncolor.hook( stepHooks );\n\njQuery.cssHooks.borderColor = {\n\texpand: function( value ) {\n\t\tvar expanded = {};\n\n\t\teach( [ \"Top\", \"Right\", \"Bottom\", \"Left\" ], function( i, part ) {\n\t\t\texpanded[ \"border\" + part + \"Color\" ] = value;\n\t\t} );\n\t\treturn expanded;\n\t}\n};\n\n// Basic color names only.\n// Usage of any of the other color names requires adding yourself or including\n// jquery.color.svg-names.js.\ncolors = jQuery.Color.names = {\n\n\t// 4.1. Basic color keywords\n\taqua: \"#00ffff\",\n\tblack: \"#000000\",\n\tblue: \"#0000ff\",\n\tfuchsia: \"#ff00ff\",\n\tgray: \"#808080\",\n\tgreen: \"#008000\",\n\tlime: \"#00ff00\",\n\tmaroon: \"#800000\",\n\tnavy: \"#000080\",\n\tolive: \"#808000\",\n\tpurple: \"#800080\",\n\tred: \"#ff0000\",\n\tsilver: \"#c0c0c0\",\n\tteal: \"#008080\",\n\twhite: \"#ffffff\",\n\tyellow: \"#ffff00\",\n\n\t// 4.2.3. \"transparent\" color keyword\n\ttransparent: [ null, null, null, 0 ],\n\n\t_default: \"#ffffff\"\n};\n\n} )( jQuery );\n\n/******************************************************************************/\n/****************************** CLASS ANIMATIONS ******************************/\n/******************************************************************************/\n( function() {\n\nvar classAnimationActions = [ \"add\", \"remove\", \"toggle\" ],\n\tshorthandStyles = {\n\t\tborder: 1,\n\t\tborderBottom: 1,\n\t\tborderColor: 1,\n\t\tborderLeft: 1,\n\t\tborderRight: 1,\n\t\tborderTop: 1,\n\t\tborderWidth: 1,\n\t\tmargin: 1,\n\t\tpadding: 1\n\t};\n\n$.each(\n\t[ \"borderLeftStyle\", \"borderRightStyle\", \"borderBottomStyle\", \"borderTopStyle\" ],\n\tfunction( _, prop ) {\n\t\t$.fx.step[ prop ] = function( fx ) {\n\t\t\tif ( fx.end !== \"none\" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {\n\t\t\t\tjQuery.style( fx.elem, prop, fx.end );\n\t\t\t\tfx.setAttr = true;\n\t\t\t}\n\t\t};\n\t}\n);\n\nfunction getElementStyles( elem ) {\n\tvar key, len,\n\t\tstyle = elem.ownerDocument.defaultView ?\n\t\t\telem.ownerDocument.defaultView.getComputedStyle( elem, null ) :\n\t\t\telem.currentStyle,\n\t\tstyles = {};\n\n\tif ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {\n\t\tlen = style.length;\n\t\twhile ( len-- ) {\n\t\t\tkey = style[ len ];\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tstyles[ $.camelCase( key ) ] = style[ key ];\n\t\t\t}\n\t\t}\n\n\t// Support: Opera, IE <9\n\t} else {\n\t\tfor ( key in style ) {\n\t\t\tif ( typeof style[ key ] === \"string\" ) {\n\t\t\t\tstyles[ key ] = style[ key ];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn styles;\n}\n\nfunction styleDifference( oldStyle, newStyle ) {\n\tvar diff = {},\n\t\tname, value;\n\n\tfor ( name in newStyle ) {\n\t\tvalue = newStyle[ name ];\n\t\tif ( oldStyle[ name ] !== value ) {\n\t\t\tif ( !shorthandStyles[ name ] ) {\n\t\t\t\tif ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {\n\t\t\t\t\tdiff[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn diff;\n}\n\n// Support: jQuery <1.8\nif ( !$.fn.addBack ) {\n\t$.fn.addBack = function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t};\n}\n\n$.effects.animateClass = function( value, duration, easing, callback ) {\n\tvar o = $.speed( duration, easing, callback );\n\n\treturn this.queue( function() {\n\t\tvar animated = $( this ),\n\t\t\tbaseClass = animated.attr( \"class\" ) || \"\",\n\t\t\tapplyClassChange,\n\t\t\tallAnimations = o.children ? animated.find( \"*\" ).addBack() : animated;\n\n\t\t// Map the animated objects to store the original styles.\n\t\tallAnimations = allAnimations.map( function() {\n\t\t\tvar el = $( this );\n\t\t\treturn {\n\t\t\t\tel: el,\n\t\t\t\tstart: getElementStyles( this )\n\t\t\t};\n\t\t} );\n\n\t\t// Apply class change\n\t\tapplyClassChange = function() {\n\t\t\t$.each( classAnimationActions, function( i, action ) {\n\t\t\t\tif ( value[ action ] ) {\n\t\t\t\t\tanimated[ action + \"Class\" ]( value[ action ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\t\tapplyClassChange();\n\n\t\t// Map all animated objects again - calculate new styles and diff\n\t\tallAnimations = allAnimations.map( function() {\n\t\t\tthis.end = getElementStyles( this.el[ 0 ] );\n\t\t\tthis.diff = styleDifference( this.start, this.end );\n\t\t\treturn this;\n\t\t} );\n\n\t\t// Apply original class\n\t\tanimated.attr( \"class\", baseClass );\n\n\t\t// Map all animated objects again - this time collecting a promise\n\t\tallAnimations = allAnimations.map( function() {\n\t\t\tvar styleInfo = this,\n\t\t\t\tdfd = $.Deferred(),\n\t\t\t\topts = $.extend( {}, o, {\n\t\t\t\t\tqueue: false,\n\t\t\t\t\tcomplete: function() {\n\t\t\t\t\t\tdfd.resolve( styleInfo );\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\tthis.el.animate( this.diff, opts );\n\t\t\treturn dfd.promise();\n\t\t} );\n\n\t\t// Once all animations have completed:\n\t\t$.when.apply( $, allAnimations.get() ).done( function() {\n\n\t\t\t// Set the final class\n\t\t\tapplyClassChange();\n\n\t\t\t// For each animated element,\n\t\t\t// clear all css properties that were animated\n\t\t\t$.each( arguments, function() {\n\t\t\t\tvar el = this.el;\n\t\t\t\t$.each( this.diff, function( key ) {\n\t\t\t\t\tel.css( key, \"\" );\n\t\t\t\t} );\n\t\t\t} );\n\n\t\t\t// This is guarnteed to be there if you use jQuery.speed()\n\t\t\t// it also handles dequeuing the next anim...\n\t\t\to.complete.call( animated[ 0 ] );\n\t\t} );\n\t} );\n};\n\n$.fn.extend( {\n\taddClass: ( function( orig ) {\n\t\treturn function( classNames, speed, easing, callback ) {\n\t\t\treturn speed ?\n\t\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t\t{ add: classNames }, speed, easing, callback ) :\n\t\t\t\torig.apply( this, arguments );\n\t\t};\n\t} )( $.fn.addClass ),\n\n\tremoveClass: ( function( orig ) {\n\t\treturn function( classNames, speed, easing, callback ) {\n\t\t\treturn arguments.length > 1 ?\n\t\t\t\t$.effects.animateClass.call( this,\n\t\t\t\t\t{ remove: classNames }, speed, easing, callback ) :\n\t\t\t\torig.apply( this, arguments );\n\t\t};\n\t} )( $.fn.removeClass ),\n\n\ttoggleClass: ( function( orig ) {\n\t\treturn function( classNames, force, speed, easing, callback ) {\n\t\t\tif ( typeof force === \"boolean\" || force === undefined ) {\n\t\t\t\tif ( !speed ) {\n\n\t\t\t\t\t// Without speed parameter\n\t\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t\t} else {\n\t\t\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t\t\t( force ? { add: classNames } : { remove: classNames } ),\n\t\t\t\t\t\tspeed, easing, callback );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Without force parameter\n\t\t\t\treturn $.effects.animateClass.call( this,\n\t\t\t\t\t{ toggle: classNames }, force, speed, easing );\n\t\t\t}\n\t\t};\n\t} )( $.fn.toggleClass ),\n\n\tswitchClass: function( remove, add, speed, easing, callback ) {\n\t\treturn $.effects.animateClass.call( this, {\n\t\t\tadd: add,\n\t\t\tremove: remove\n\t\t}, speed, easing, callback );\n\t}\n} );\n\n} )();\n\n/******************************************************************************/\n/*********************************** EFFECTS **********************************/\n/******************************************************************************/\n\n( function() {\n\nif ( $.expr && $.expr.filters && $.expr.filters.animated ) {\n\t$.expr.filters.animated = ( function( orig ) {\n\t\treturn function( elem ) {\n\t\t\treturn !!$( elem ).data( dataSpaceAnimated ) || orig( elem );\n\t\t};\n\t} )( $.expr.filters.animated );\n}\n\nif ( $.uiBackCompat !== false ) {\n\t$.extend( $.effects, {\n\n\t\t// Saves a set of properties in a data storage\n\t\tsave: function( element, set ) {\n\t\t\tvar i = 0, length = set.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\t\telement.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Restores a set of previously saved properties from a data storage\n\t\trestore: function( element, set ) {\n\t\t\tvar val, i = 0, length = set.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( set[ i ] !== null ) {\n\t\t\t\t\tval = element.data( dataSpace + set[ i ] );\n\t\t\t\t\telement.css( set[ i ], val );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tsetMode: function( el, mode ) {\n\t\t\tif ( mode === \"toggle\" ) {\n\t\t\t\tmode = el.is( \":hidden\" ) ? \"show\" : \"hide\";\n\t\t\t}\n\t\t\treturn mode;\n\t\t},\n\n\t\t// Wraps the element around a wrapper that copies position properties\n\t\tcreateWrapper: function( element ) {\n\n\t\t\t// If the element is already wrapped, return it\n\t\t\tif ( element.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t\t\treturn element.parent();\n\t\t\t}\n\n\t\t\t// Wrap the element\n\t\t\tvar props = {\n\t\t\t\t\twidth: element.outerWidth( true ),\n\t\t\t\t\theight: element.outerHeight( true ),\n\t\t\t\t\t\"float\": element.css( \"float\" )\n\t\t\t\t},\n\t\t\t\twrapper = $( \"<div></div>\" )\n\t\t\t\t\t.addClass( \"ui-effects-wrapper\" )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\tfontSize: \"100%\",\n\t\t\t\t\t\tbackground: \"transparent\",\n\t\t\t\t\t\tborder: \"none\",\n\t\t\t\t\t\tmargin: 0,\n\t\t\t\t\t\tpadding: 0\n\t\t\t\t\t} ),\n\n\t\t\t\t// Store the size in case width/height are defined in % - Fixes #5245\n\t\t\t\tsize = {\n\t\t\t\t\twidth: element.width(),\n\t\t\t\t\theight: element.height()\n\t\t\t\t},\n\t\t\t\tactive = document.activeElement;\n\n\t\t\t// Support: Firefox\n\t\t\t// Firefox incorrectly exposes anonymous content\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=561664\n\t\t\ttry {\n\t\t\t\tactive.id;\n\t\t\t} catch ( e ) {\n\t\t\t\tactive = document.body;\n\t\t\t}\n\n\t\t\telement.wrap( wrapper );\n\n\t\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t\t$( active ).trigger( \"focus\" );\n\t\t\t}\n\n\t\t\t// Hotfix for jQuery 1.4 since some change in wrap() seems to actually\n\t\t\t// lose the reference to the wrapped element\n\t\t\twrapper = element.parent();\n\n\t\t\t// Transfer positioning properties to the wrapper\n\t\t\tif ( element.css( \"position\" ) === \"static\" ) {\n\t\t\t\twrapper.css( { position: \"relative\" } );\n\t\t\t\telement.css( { position: \"relative\" } );\n\t\t\t} else {\n\t\t\t\t$.extend( props, {\n\t\t\t\t\tposition: element.css( \"position\" ),\n\t\t\t\t\tzIndex: element.css( \"z-index\" )\n\t\t\t\t} );\n\t\t\t\t$.each( [ \"top\", \"left\", \"bottom\", \"right\" ], function( i, pos ) {\n\t\t\t\t\tprops[ pos ] = element.css( pos );\n\t\t\t\t\tif ( isNaN( parseInt( props[ pos ], 10 ) ) ) {\n\t\t\t\t\t\tprops[ pos ] = \"auto\";\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\telement.css( {\n\t\t\t\t\tposition: \"relative\",\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: 0,\n\t\t\t\t\tright: \"auto\",\n\t\t\t\t\tbottom: \"auto\"\n\t\t\t\t} );\n\t\t\t}\n\t\t\telement.css( size );\n\n\t\t\treturn wrapper.css( props ).show();\n\t\t},\n\n\t\tremoveWrapper: function( element ) {\n\t\t\tvar active = document.activeElement;\n\n\t\t\tif ( element.parent().is( \".ui-effects-wrapper\" ) ) {\n\t\t\t\telement.parent().replaceWith( element );\n\n\t\t\t\t// Fixes #7595 - Elements lose focus when wrapped.\n\t\t\t\tif ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {\n\t\t\t\t\t$( active ).trigger( \"focus\" );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn element;\n\t\t}\n\t} );\n}\n\n$.extend( $.effects, {\n\tversion: \"1.12.1\",\n\n\tdefine: function( name, mode, effect ) {\n\t\tif ( !effect ) {\n\t\t\teffect = mode;\n\t\t\tmode = \"effect\";\n\t\t}\n\n\t\t$.effects.effect[ name ] = effect;\n\t\t$.effects.effect[ name ].mode = mode;\n\n\t\treturn effect;\n\t},\n\n\tscaledDimensions: function( element, percent, direction ) {\n\t\tif ( percent === 0 ) {\n\t\t\treturn {\n\t\t\t\theight: 0,\n\t\t\t\twidth: 0,\n\t\t\t\touterHeight: 0,\n\t\t\t\touterWidth: 0\n\t\t\t};\n\t\t}\n\n\t\tvar x = direction !== \"horizontal\" ? ( ( percent || 100 ) / 100 ) : 1,\n\t\t\ty = direction !== \"vertical\" ? ( ( percent || 100 ) / 100 ) : 1;\n\n\t\treturn {\n\t\t\theight: element.height() * y,\n\t\t\twidth: element.width() * x,\n\t\t\touterHeight: element.outerHeight() * y,\n\t\t\touterWidth: element.outerWidth() * x\n\t\t};\n\n\t},\n\n\tclipToBox: function( animation ) {\n\t\treturn {\n\t\t\twidth: animation.clip.right - animation.clip.left,\n\t\t\theight: animation.clip.bottom - animation.clip.top,\n\t\t\tleft: animation.clip.left,\n\t\t\ttop: animation.clip.top\n\t\t};\n\t},\n\n\t// Injects recently queued functions to be first in line (after \"inprogress\")\n\tunshift: function( element, queueLength, count ) {\n\t\tvar queue = element.queue();\n\n\t\tif ( queueLength > 1 ) {\n\t\t\tqueue.splice.apply( queue,\n\t\t\t\t[ 1, 0 ].concat( queue.splice( queueLength, count ) ) );\n\t\t}\n\t\telement.dequeue();\n\t},\n\n\tsaveStyle: function( element ) {\n\t\telement.data( dataSpaceStyle, element[ 0 ].style.cssText );\n\t},\n\n\trestoreStyle: function( element ) {\n\t\telement[ 0 ].style.cssText = element.data( dataSpaceStyle ) || \"\";\n\t\telement.removeData( dataSpaceStyle );\n\t},\n\n\tmode: function( element, mode ) {\n\t\tvar hidden = element.is( \":hidden\" );\n\n\t\tif ( mode === \"toggle\" ) {\n\t\t\tmode = hidden ? \"show\" : \"hide\";\n\t\t}\n\t\tif ( hidden ? mode === \"hide\" : mode === \"show\" ) {\n\t\t\tmode = \"none\";\n\t\t}\n\t\treturn mode;\n\t},\n\n\t// Translates a [top,left] array into a baseline value\n\tgetBaseline: function( origin, original ) {\n\t\tvar y, x;\n\n\t\tswitch ( origin[ 0 ] ) {\n\t\tcase \"top\":\n\t\t\ty = 0;\n\t\t\tbreak;\n\t\tcase \"middle\":\n\t\t\ty = 0.5;\n\t\t\tbreak;\n\t\tcase \"bottom\":\n\t\t\ty = 1;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\ty = origin[ 0 ] / original.height;\n\t\t}\n\n\t\tswitch ( origin[ 1 ] ) {\n\t\tcase \"left\":\n\t\t\tx = 0;\n\t\t\tbreak;\n\t\tcase \"center\":\n\t\t\tx = 0.5;\n\t\t\tbreak;\n\t\tcase \"right\":\n\t\t\tx = 1;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tx = origin[ 1 ] / original.width;\n\t\t}\n\n\t\treturn {\n\t\t\tx: x,\n\t\t\ty: y\n\t\t};\n\t},\n\n\t// Creates a placeholder element so that the original element can be made absolute\n\tcreatePlaceholder: function( element ) {\n\t\tvar placeholder,\n\t\t\tcssPosition = element.css( \"position\" ),\n\t\t\tposition = element.position();\n\n\t\t// Lock in margins first to account for form elements, which\n\t\t// will change margin if you explicitly set height\n\t\t// see: http://jsfiddle.net/JZSMt/3/ https://bugs.webkit.org/show_bug.cgi?id=107380\n\t\t// Support: Safari\n\t\telement.css( {\n\t\t\tmarginTop: element.css( \"marginTop\" ),\n\t\t\tmarginBottom: element.css( \"marginBottom\" ),\n\t\t\tmarginLeft: element.css( \"marginLeft\" ),\n\t\t\tmarginRight: element.css( \"marginRight\" )\n\t\t} )\n\t\t.outerWidth( element.outerWidth() )\n\t\t.outerHeight( element.outerHeight() );\n\n\t\tif ( /^(static|relative)/.test( cssPosition ) ) {\n\t\t\tcssPosition = \"absolute\";\n\n\t\t\tplaceholder = $( \"<\" + element[ 0 ].nodeName + \">\" ).insertAfter( element ).css( {\n\n\t\t\t\t// Convert inline to inline block to account for inline elements\n\t\t\t\t// that turn to inline block based on content (like img)\n\t\t\t\tdisplay: /^(inline|ruby)/.test( element.css( \"display\" ) ) ?\n\t\t\t\t\t\"inline-block\" :\n\t\t\t\t\t\"block\",\n\t\t\t\tvisibility: \"hidden\",\n\n\t\t\t\t// Margins need to be set to account for margin collapse\n\t\t\t\tmarginTop: element.css( \"marginTop\" ),\n\t\t\t\tmarginBottom: element.css( \"marginBottom\" ),\n\t\t\t\tmarginLeft: element.css( \"marginLeft\" ),\n\t\t\t\tmarginRight: element.css( \"marginRight\" ),\n\t\t\t\t\"float\": element.css( \"float\" )\n\t\t\t} )\n\t\t\t.outerWidth( element.outerWidth() )\n\t\t\t.outerHeight( element.outerHeight() )\n\t\t\t.addClass( \"ui-effects-placeholder\" );\n\n\t\t\telement.data( dataSpace + \"placeholder\", placeholder );\n\t\t}\n\n\t\telement.css( {\n\t\t\tposition: cssPosition,\n\t\t\tleft: position.left,\n\t\t\ttop: position.top\n\t\t} );\n\n\t\treturn placeholder;\n\t},\n\n\tremovePlaceholder: function( element ) {\n\t\tvar dataKey = dataSpace + \"placeholder\",\n\t\t\t\tplaceholder = element.data( dataKey );\n\n\t\tif ( placeholder ) {\n\t\t\tplaceholder.remove();\n\t\t\telement.removeData( dataKey );\n\t\t}\n\t},\n\n\t// Removes a placeholder if it exists and restores\n\t// properties that were modified during placeholder creation\n\tcleanUp: function( element ) {\n\t\t$.effects.restoreStyle( element );\n\t\t$.effects.removePlaceholder( element );\n\t},\n\n\tsetTransition: function( element, list, factor, value ) {\n\t\tvalue = value || {};\n\t\t$.each( list, function( i, x ) {\n\t\t\tvar unit = element.cssUnit( x );\n\t\t\tif ( unit[ 0 ] > 0 ) {\n\t\t\t\tvalue[ x ] = unit[ 0 ] * factor + unit[ 1 ];\n\t\t\t}\n\t\t} );\n\t\treturn value;\n\t}\n} );\n\n// Return an effect options object for the given parameters:\nfunction _normalizeArguments( effect, options, speed, callback ) {\n\n\t// Allow passing all options as the first parameter\n\tif ( $.isPlainObject( effect ) ) {\n\t\toptions = effect;\n\t\teffect = effect.effect;\n\t}\n\n\t// Convert to an object\n\teffect = { effect: effect };\n\n\t// Catch (effect, null, ...)\n\tif ( options == null ) {\n\t\toptions = {};\n\t}\n\n\t// Catch (effect, callback)\n\tif ( $.isFunction( options ) ) {\n\t\tcallback = options;\n\t\tspeed = null;\n\t\toptions = {};\n\t}\n\n\t// Catch (effect, speed, ?)\n\tif ( typeof options === \"number\" || $.fx.speeds[ options ] ) {\n\t\tcallback = speed;\n\t\tspeed = options;\n\t\toptions = {};\n\t}\n\n\t// Catch (effect, options, callback)\n\tif ( $.isFunction( speed ) ) {\n\t\tcallback = speed;\n\t\tspeed = null;\n\t}\n\n\t// Add options to effect\n\tif ( options ) {\n\t\t$.extend( effect, options );\n\t}\n\n\tspeed = speed || options.duration;\n\teffect.duration = $.fx.off ? 0 :\n\t\ttypeof speed === \"number\" ? speed :\n\t\tspeed in $.fx.speeds ? $.fx.speeds[ speed ] :\n\t\t$.fx.speeds._default;\n\n\teffect.complete = callback || options.complete;\n\n\treturn effect;\n}\n\nfunction standardAnimationOption( option ) {\n\n\t// Valid standard speeds (nothing, number, named speed)\n\tif ( !option || typeof option === \"number\" || $.fx.speeds[ option ] ) {\n\t\treturn true;\n\t}\n\n\t// Invalid strings - treat as \"normal\" speed\n\tif ( typeof option === \"string\" && !$.effects.effect[ option ] ) {\n\t\treturn true;\n\t}\n\n\t// Complete callback\n\tif ( $.isFunction( option ) ) {\n\t\treturn true;\n\t}\n\n\t// Options hash (but not naming an effect)\n\tif ( typeof option === \"object\" && !option.effect ) {\n\t\treturn true;\n\t}\n\n\t// Didn't match any standard API\n\treturn false;\n}\n\n$.fn.extend( {\n\teffect: function( /* effect, options, speed, callback */ ) {\n\t\tvar args = _normalizeArguments.apply( this, arguments ),\n\t\t\teffectMethod = $.effects.effect[ args.effect ],\n\t\t\tdefaultMode = effectMethod.mode,\n\t\t\tqueue = args.queue,\n\t\t\tqueueName = queue || \"fx\",\n\t\t\tcomplete = args.complete,\n\t\t\tmode = args.mode,\n\t\t\tmodes = [],\n\t\t\tprefilter = function( next ) {\n\t\t\t\tvar el = $( this ),\n\t\t\t\t\tnormalizedMode = $.effects.mode( el, mode ) || defaultMode;\n\n\t\t\t\t// Sentinel for duck-punching the :animated psuedo-selector\n\t\t\t\tel.data( dataSpaceAnimated, true );\n\n\t\t\t\t// Save effect mode for later use,\n\t\t\t\t// we can't just call $.effects.mode again later,\n\t\t\t\t// as the .show() below destroys the initial state\n\t\t\t\tmodes.push( normalizedMode );\n\n\t\t\t\t// See $.uiBackCompat inside of run() for removal of defaultMode in 1.13\n\t\t\t\tif ( defaultMode && ( normalizedMode === \"show\" ||\n\t\t\t\t\t\t( normalizedMode === defaultMode && normalizedMode === \"hide\" ) ) ) {\n\t\t\t\t\tel.show();\n\t\t\t\t}\n\n\t\t\t\tif ( !defaultMode || normalizedMode !== \"none\" ) {\n\t\t\t\t\t$.effects.saveStyle( el );\n\t\t\t\t}\n\n\t\t\t\tif ( $.isFunction( next ) ) {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( $.fx.off || !effectMethod ) {\n\n\t\t\t// Delegate to the original method (e.g., .show()) if possible\n\t\t\tif ( mode ) {\n\t\t\t\treturn this[ mode ]( args.duration, complete );\n\t\t\t} else {\n\t\t\t\treturn this.each( function() {\n\t\t\t\t\tif ( complete ) {\n\t\t\t\t\t\tcomplete.call( this );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t\tfunction run( next ) {\n\t\t\tvar elem = $( this );\n\n\t\t\tfunction cleanup() {\n\t\t\t\telem.removeData( dataSpaceAnimated );\n\n\t\t\t\t$.effects.cleanUp( elem );\n\n\t\t\t\tif ( args.mode === \"hide\" ) {\n\t\t\t\t\telem.hide();\n\t\t\t\t}\n\n\t\t\t\tdone();\n\t\t\t}\n\n\t\t\tfunction done() {\n\t\t\t\tif ( $.isFunction( complete ) ) {\n\t\t\t\t\tcomplete.call( elem[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\tif ( $.isFunction( next ) ) {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override mode option on a per element basis,\n\t\t\t// as toggle can be either show or hide depending on element state\n\t\t\targs.mode = modes.shift();\n\n\t\t\tif ( $.uiBackCompat !== false && !defaultMode ) {\n\t\t\t\tif ( elem.is( \":hidden\" ) ? mode === \"hide\" : mode === \"show\" ) {\n\n\t\t\t\t\t// Call the core method to track \"olddisplay\" properly\n\t\t\t\t\telem[ mode ]();\n\t\t\t\t\tdone();\n\t\t\t\t} else {\n\t\t\t\t\teffectMethod.call( elem[ 0 ], args, done );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( args.mode === \"none\" ) {\n\n\t\t\t\t\t// Call the core method to track \"olddisplay\" properly\n\t\t\t\t\telem[ mode ]();\n\t\t\t\t\tdone();\n\t\t\t\t} else {\n\t\t\t\t\teffectMethod.call( elem[ 0 ], args, cleanup );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Run prefilter on all elements first to ensure that\n\t\t// any showing or hiding happens before placeholder creation,\n\t\t// which ensures that any layout changes are correctly captured.\n\t\treturn queue === false ?\n\t\t\tthis.each( prefilter ).each( run ) :\n\t\t\tthis.queue( queueName, prefilter ).queue( queueName, run );\n\t},\n\n\tshow: ( function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"show\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t} )( $.fn.show ),\n\n\thide: ( function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"hide\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t} )( $.fn.hide ),\n\n\ttoggle: ( function( orig ) {\n\t\treturn function( option ) {\n\t\t\tif ( standardAnimationOption( option ) || typeof option === \"boolean\" ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t} else {\n\t\t\t\tvar args = _normalizeArguments.apply( this, arguments );\n\t\t\t\targs.mode = \"toggle\";\n\t\t\t\treturn this.effect.call( this, args );\n\t\t\t}\n\t\t};\n\t} )( $.fn.toggle ),\n\n\tcssUnit: function( key ) {\n\t\tvar style = this.css( key ),\n\t\t\tval = [];\n\n\t\t$.each( [ \"em\", \"px\", \"%\", \"pt\" ], function( i, unit ) {\n\t\t\tif ( style.indexOf( unit ) > 0 ) {\n\t\t\t\tval = [ parseFloat( style ), unit ];\n\t\t\t}\n\t\t} );\n\t\treturn val;\n\t},\n\n\tcssClip: function( clipObj ) {\n\t\tif ( clipObj ) {\n\t\t\treturn this.css( \"clip\", \"rect(\" + clipObj.top + \"px \" + clipObj.right + \"px \" +\n\t\t\t\tclipObj.bottom + \"px \" + clipObj.left + \"px)\" );\n\t\t}\n\t\treturn parseClip( this.css( \"clip\" ), this );\n\t},\n\n\ttransfer: function( options, done ) {\n\t\tvar element = $( this ),\n\t\t\ttarget = $( options.to ),\n\t\t\ttargetFixed = target.css( \"position\" ) === \"fixed\",\n\t\t\tbody = $( \"body\" ),\n\t\t\tfixTop = targetFixed ? body.scrollTop() : 0,\n\t\t\tfixLeft = targetFixed ? body.scrollLeft() : 0,\n\t\t\tendPosition = target.offset(),\n\t\t\tanimation = {\n\t\t\t\ttop: endPosition.top - fixTop,\n\t\t\t\tleft: endPosition.left - fixLeft,\n\t\t\t\theight: target.innerHeight(),\n\t\t\t\twidth: target.innerWidth()\n\t\t\t},\n\t\t\tstartPosition = element.offset(),\n\t\t\ttransfer = $( \"<div class='ui-effects-transfer'></div>\" )\n\t\t\t\t.appendTo( \"body\" )\n\t\t\t\t.addClass( options.className )\n\t\t\t\t.css( {\n\t\t\t\t\ttop: startPosition.top - fixTop,\n\t\t\t\t\tleft: startPosition.left - fixLeft,\n\t\t\t\t\theight: element.innerHeight(),\n\t\t\t\t\twidth: element.innerWidth(),\n\t\t\t\t\tposition: targetFixed ? \"fixed\" : \"absolute\"\n\t\t\t\t} )\n\t\t\t\t.animate( animation, options.duration, options.easing, function() {\n\t\t\t\t\ttransfer.remove();\n\t\t\t\t\tif ( $.isFunction( done ) ) {\n\t\t\t\t\t\tdone();\n\t\t\t\t\t}\n\t\t\t\t} );\n\t}\n} );\n\nfunction parseClip( str, element ) {\n\t\tvar outerWidth = element.outerWidth(),\n\t\t\touterHeight = element.outerHeight(),\n\t\t\tclipRegex = /^rect\\((-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto)\\)$/,\n\t\t\tvalues = clipRegex.exec( str ) || [ \"\", 0, outerWidth, outerHeight, 0 ];\n\n\t\treturn {\n\t\t\ttop: parseFloat( values[ 1 ] ) || 0,\n\t\t\tright: values[ 2 ] === \"auto\" ? outerWidth : parseFloat( values[ 2 ] ),\n\t\t\tbottom: values[ 3 ] === \"auto\" ? outerHeight : parseFloat( values[ 3 ] ),\n\t\t\tleft: parseFloat( values[ 4 ] ) || 0\n\t\t};\n}\n\n$.fx.step.clip = function( fx ) {\n\tif ( !fx.clipInit ) {\n\t\tfx.start = $( fx.elem ).cssClip();\n\t\tif ( typeof fx.end === \"string\" ) {\n\t\t\tfx.end = parseClip( fx.end, fx.elem );\n\t\t}\n\t\tfx.clipInit = true;\n\t}\n\n\t$( fx.elem ).cssClip( {\n\t\ttop: fx.pos * ( fx.end.top - fx.start.top ) + fx.start.top,\n\t\tright: fx.pos * ( fx.end.right - fx.start.right ) + fx.start.right,\n\t\tbottom: fx.pos * ( fx.end.bottom - fx.start.bottom ) + fx.start.bottom,\n\t\tleft: fx.pos * ( fx.end.left - fx.start.left ) + fx.start.left\n\t} );\n};\n\n} )();\n\n/******************************************************************************/\n/*********************************** EASING ***********************************/\n/******************************************************************************/\n\n( function() {\n\n// Based on easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\nvar baseEasings = {};\n\n$.each( [ \"Quad\", \"Cubic\", \"Quart\", \"Quint\", \"Expo\" ], function( i, name ) {\n\tbaseEasings[ name ] = function( p ) {\n\t\treturn Math.pow( p, i + 2 );\n\t};\n} );\n\n$.extend( baseEasings, {\n\tSine: function( p ) {\n\t\treturn 1 - Math.cos( p * Math.PI / 2 );\n\t},\n\tCirc: function( p ) {\n\t\treturn 1 - Math.sqrt( 1 - p * p );\n\t},\n\tElastic: function( p ) {\n\t\treturn p === 0 || p === 1 ? p :\n\t\t\t-Math.pow( 2, 8 * ( p - 1 ) ) * Math.sin( ( ( p - 1 ) * 80 - 7.5 ) * Math.PI / 15 );\n\t},\n\tBack: function( p ) {\n\t\treturn p * p * ( 3 * p - 2 );\n\t},\n\tBounce: function( p ) {\n\t\tvar pow2,\n\t\t\tbounce = 4;\n\n\t\twhile ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}\n\t\treturn 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );\n\t}\n} );\n\n$.each( baseEasings, function( name, easeIn ) {\n\t$.easing[ \"easeIn\" + name ] = easeIn;\n\t$.easing[ \"easeOut\" + name ] = function( p ) {\n\t\treturn 1 - easeIn( 1 - p );\n\t};\n\t$.easing[ \"easeInOut\" + name ] = function( p ) {\n\t\treturn p < 0.5 ?\n\t\t\teaseIn( p * 2 ) / 2 :\n\t\t\t1 - easeIn( p * -2 + 2 ) / 2;\n\t};\n} );\n\n} )();\n\nreturn $.effects;\n\n} ) );\n","/*!\n * jQuery UI Effects Blind 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Blind Effect\n//>>group: Effects\n//>>description: Blinds the element.\n//>>docs: http://api.jqueryui.com/blind-effect/\n//>>demos: http://jqueryui.com/effect/\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"../version\",\n\t\t\t\"../effect\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n\nreturn $.effects.define( \"blind\", \"hide\", function( options, done ) {\n\tvar map = {\n\t\t\tup: [ \"bottom\", \"top\" ],\n\t\t\tvertical: [ \"bottom\", \"top\" ],\n\t\t\tdown: [ \"top\", \"bottom\" ],\n\t\t\tleft: [ \"right\", \"left\" ],\n\t\t\thorizontal: [ \"right\", \"left\" ],\n\t\t\tright: [ \"left\", \"right\" ]\n\t\t},\n\t\telement = $( this ),\n\t\tdirection = options.direction || \"up\",\n\t\tstart = element.cssClip(),\n\t\tanimate = { clip: $.extend( {}, start ) },\n\t\tplaceholder = $.effects.createPlaceholder( element );\n\n\tanimate.clip[ map[ direction ][ 0 ] ] = animate.clip[ map[ direction ][ 1 ] ];\n\n\tif ( options.mode === \"show\" ) {\n\t\telement.cssClip( animate.clip );\n\t\tif ( placeholder ) {\n\t\t\tplaceholder.css( $.effects.clipToBox( animate ) );\n\t\t}\n\n\t\tanimate.clip = start;\n\t}\n\n\tif ( placeholder ) {\n\t\tplaceholder.animate( $.effects.clipToBox( animate ), options.duration, options.easing );\n\t}\n\n\telement.animate( animate, {\n\t\tqueue: false,\n\t\tduration: options.duration,\n\t\teasing: options.easing,\n\t\tcomplete: done\n\t} );\n} );\n\n} ) );\n","/*!\n * jQuery UI Effects Highlight 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Highlight Effect\n//>>group: Effects\n//>>description: Highlights the background of an element in a defined color for a custom duration.\n//>>docs: http://api.jqueryui.com/highlight-effect/\n//>>demos: http://jqueryui.com/effect/\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"../version\",\n\t\t\t\"../effect\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n\nreturn $.effects.define( \"highlight\", \"show\", function( options, done ) {\n\tvar element = $( this ),\n\t\tanimation = {\n\t\t\tbackgroundColor: element.css( \"backgroundColor\" )\n\t\t};\n\n\tif ( options.mode === \"hide\" ) {\n\t\tanimation.opacity = 0;\n\t}\n\n\t$.effects.saveStyle( element );\n\n\telement\n\t\t.css( {\n\t\t\tbackgroundImage: \"none\",\n\t\t\tbackgroundColor: options.color || \"#ffff99\"\n\t\t} )\n\t\t.animate( animation, {\n\t\t\tqueue: false,\n\t\t\tduration: options.duration,\n\t\t\teasing: options.easing,\n\t\t\tcomplete: done\n\t\t} );\n} );\n\n} ) );\n","/*!\n * jQuery UI Effects Pulsate 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Pulsate Effect\n//>>group: Effects\n//>>description: Pulsates an element n times by changing the opacity to zero and back.\n//>>docs: http://api.jqueryui.com/pulsate-effect/\n//>>demos: http://jqueryui.com/effect/\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"../version\",\n\t\t\t\"../effect\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n\nreturn $.effects.define( \"pulsate\", \"show\", function( options, done ) {\n\tvar element = $( this ),\n\t\tmode = options.mode,\n\t\tshow = mode === \"show\",\n\t\thide = mode === \"hide\",\n\t\tshowhide = show || hide,\n\n\t\t// Showing or hiding leaves off the \"last\" animation\n\t\tanims = ( ( options.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),\n\t\tduration = options.duration / anims,\n\t\tanimateTo = 0,\n\t\ti = 1,\n\t\tqueuelen = element.queue().length;\n\n\tif ( show || !element.is( \":visible\" ) ) {\n\t\telement.css( \"opacity\", 0 ).show();\n\t\tanimateTo = 1;\n\t}\n\n\t// Anims - 1 opacity \"toggles\"\n\tfor ( ; i < anims; i++ ) {\n\t\telement.animate( { opacity: animateTo }, duration, options.easing );\n\t\tanimateTo = 1 - animateTo;\n\t}\n\n\telement.animate( { opacity: animateTo }, duration, options.easing );\n\n\telement.queue( done );\n\n\t$.effects.unshift( element, queuelen, anims + 1 );\n} );\n\n} ) );\n","( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} ( function( $ ) {\n\n// Internal use only\nreturn $.ui.escapeSelector = ( function() {\n\tvar selectorEscape = /([!\"#$%&'()*+,./:;<=>?@[\\]^`{|}~])/g;\n\treturn function( selector ) {\n\t\treturn selector.replace( selectorEscape, \"\\\\$1\" );\n\t};\n} )();\n\n} ) );\n","/*!\n * jQuery UI Focusable 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: :focusable Selector\n//>>group: Core\n//>>description: Selects elements which can be focused.\n//>>docs: http://api.jqueryui.com/focusable-selector/\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} ( function( $ ) {\n\n// Selectors\n$.ui.focusable = function( element, hasTabindex ) {\n\tvar map, mapName, img, focusableIfVisible, fieldset,\n\t\tnodeName = element.nodeName.toLowerCase();\n\n\tif ( \"area\" === nodeName ) {\n\t\tmap = element.parentNode;\n\t\tmapName = map.name;\n\t\tif ( !element.href || !mapName || map.nodeName.toLowerCase() !== \"map\" ) {\n\t\t\treturn false;\n\t\t}\n\t\timg = $( \"img[usemap='#\" + mapName + \"']\" );\n\t\treturn img.length > 0 && img.is( \":visible\" );\n\t}\n\n\tif ( /^(input|select|textarea|button|object)$/.test( nodeName ) ) {\n\t\tfocusableIfVisible = !element.disabled;\n\n\t\tif ( focusableIfVisible ) {\n\n\t\t\t// Form controls within a disabled fieldset are disabled.\n\t\t\t// However, controls within the fieldset's legend do not get disabled.\n\t\t\t// Since controls generally aren't placed inside legends, we skip\n\t\t\t// this portion of the check.\n\t\t\tfieldset = $( element ).closest( \"fieldset\" )[ 0 ];\n\t\t\tif ( fieldset ) {\n\t\t\t\tfocusableIfVisible = !fieldset.disabled;\n\t\t\t}\n\t\t}\n\t} else if ( \"a\" === nodeName ) {\n\t\tfocusableIfVisible = element.href || hasTabindex;\n\t} else {\n\t\tfocusableIfVisible = hasTabindex;\n\t}\n\n\treturn focusableIfVisible && $( element ).is( \":visible\" ) && visible( $( element ) );\n};\n\n// Support: IE 8 only\n// IE 8 doesn't resolve inherit to visible/hidden for computed values\nfunction visible( element ) {\n\tvar visibility = element.css( \"visibility\" );\n\twhile ( visibility === \"inherit\" ) {\n\t\telement = element.parent();\n\t\tvisibility = element.css( \"visibility\" );\n\t}\n\treturn visibility !== \"hidden\";\n}\n\n$.extend( $.expr[ \":\" ], {\n\tfocusable: function( element ) {\n\t\treturn $.ui.focusable( element, $.attr( element, \"tabindex\" ) != null );\n\t}\n} );\n\nreturn $.ui.focusable;\n\n} ) );\n","/*!\n * jQuery UI Form Reset Mixin 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Form Reset Mixin\n//>>group: Core\n//>>description: Refresh input widgets when their form is reset\n//>>docs: http://api.jqueryui.com/form-reset-mixin/\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"./form\",\n\t\t\t\"./version\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n\nreturn $.ui.formResetMixin = {\n\t_formResetHandler: function() {\n\t\tvar form = $( this );\n\n\t\t// Wait for the form reset to actually happen before refreshing\n\t\tsetTimeout( function() {\n\t\t\tvar instances = form.data( \"ui-form-reset-instances\" );\n\t\t\t$.each( instances, function() {\n\t\t\t\tthis.refresh();\n\t\t\t} );\n\t\t} );\n\t},\n\n\t_bindFormResetHandler: function() {\n\t\tthis.form = this.element.form();\n\t\tif ( !this.form.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar instances = this.form.data( \"ui-form-reset-instances\" ) || [];\n\t\tif ( !instances.length ) {\n\n\t\t\t// We don't use _on() here because we use a single event handler per form\n\t\t\tthis.form.on( \"reset.ui-form-reset\", this._formResetHandler );\n\t\t}\n\t\tinstances.push( this );\n\t\tthis.form.data( \"ui-form-reset-instances\", instances );\n\t},\n\n\t_unbindFormResetHandler: function() {\n\t\tif ( !this.form.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar instances = this.form.data( \"ui-form-reset-instances\" );\n\t\tinstances.splice( $.inArray( this, instances ), 1 );\n\t\tif ( instances.length ) {\n\t\t\tthis.form.data( \"ui-form-reset-instances\", instances );\n\t\t} else {\n\t\t\tthis.form\n\t\t\t\t.removeData( \"ui-form-reset-instances\" )\n\t\t\t\t.off( \"reset.ui-form-reset\" );\n\t\t}\n\t}\n};\n\n} ) );\n","( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} ( function( $ ) {\n\n// Support: IE8 Only\n// IE8 does not support the form attribute and when it is supplied. It overwrites the form prop\n// with a string, so we need to find the proper form.\nreturn $.fn.form = function() {\n\treturn typeof this[ 0 ].form === \"string\" ? this.closest( \"form\" ) : $( this[ 0 ].form );\n};\n\n} ) );\n","( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} ( function( $ ) {\n\n// This file is deprecated\nreturn $.ui.ie = !!/msie [\\w.]+/.exec( navigator.userAgent.toLowerCase() );\n} ) );\n","/*!\n * jQuery UI Keycode 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Keycode\n//>>group: Core\n//>>description: Provide keycodes as keynames\n//>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} ( function( $ ) {\nreturn $.ui.keyCode = {\n\tBACKSPACE: 8,\n\tCOMMA: 188,\n\tDELETE: 46,\n\tDOWN: 40,\n\tEND: 35,\n\tENTER: 13,\n\tESCAPE: 27,\n\tHOME: 36,\n\tLEFT: 37,\n\tPAGE_DOWN: 34,\n\tPAGE_UP: 33,\n\tPERIOD: 190,\n\tRIGHT: 39,\n\tSPACE: 32,\n\tTAB: 9,\n\tUP: 38\n};\n\n} ) );\n","/*!\n * jQuery UI Labels 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: labels\n//>>group: Core\n//>>description: Find all the labels associated with a given input\n//>>docs: http://api.jqueryui.com/labels/\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\", \"./escape-selector\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} ( function( $ ) {\n\nreturn $.fn.labels = function() {\n\tvar ancestor, selector, id, labels, ancestors;\n\n\t// Check control.labels first\n\tif ( this[ 0 ].labels && this[ 0 ].labels.length ) {\n\t\treturn this.pushStack( this[ 0 ].labels );\n\t}\n\n\t// Support: IE <= 11, FF <= 37, Android <= 2.3 only\n\t// Above browsers do not support control.labels. Everything below is to support them\n\t// as well as document fragments. control.labels does not work on document fragments\n\tlabels = this.eq( 0 ).parents( \"label\" );\n\n\t// Look for the label based on the id\n\tid = this.attr( \"id\" );\n\tif ( id ) {\n\n\t\t// We don't search against the document in case the element\n\t\t// is disconnected from the DOM\n\t\tancestor = this.eq( 0 ).parents().last();\n\n\t\t// Get a full set of top level ancestors\n\t\tancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() );\n\n\t\t// Create a selector for the label based on the id\n\t\tselector = \"label[for='\" + $.ui.escapeSelector( id ) + \"']\";\n\n\t\tlabels = labels.add( ancestors.find( selector ).addBack( selector ) );\n\n\t}\n\n\t// Return whatever we have found for labels\n\treturn this.pushStack( labels );\n};\n\n} ) );\n","( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} ( function( $ ) {\n\n// $.ui.plugin is deprecated. Use $.widget() extensions instead.\nreturn $.ui.plugin = {\n\tadd: function( module, option, set ) {\n\t\tvar i,\n\t\t\tproto = $.ui[ module ].prototype;\n\t\tfor ( i in set ) {\n\t\t\tproto.plugins[ i ] = proto.plugins[ i ] || [];\n\t\t\tproto.plugins[ i ].push( [ option, set[ i ] ] );\n\t\t}\n\t},\n\tcall: function( instance, name, args, allowDisconnected ) {\n\t\tvar i,\n\t\t\tset = instance.plugins[ name ];\n\n\t\tif ( !set ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !allowDisconnected && ( !instance.element[ 0 ].parentNode ||\n\t\t\t\tinstance.element[ 0 ].parentNode.nodeType === 11 ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( i = 0; i < set.length; i++ ) {\n\t\t\tif ( instance.options[ set[ i ][ 0 ] ] ) {\n\t\t\t\tset[ i ][ 1 ].apply( instance.element, args );\n\t\t\t}\n\t\t}\n\t}\n};\n\n} ) );\n","/*!\n * jQuery UI Position 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/position/\n */\n\n//>>label: Position\n//>>group: Core\n//>>description: Positions elements relative to other elements.\n//>>docs: http://api.jqueryui.com/position/\n//>>demos: http://jqueryui.com/position/\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n( function() {\nvar cachedScrollbarWidth,\n\tmax = Math.max,\n\tabs = Math.abs,\n\trhorizontal = /left|center|right/,\n\trvertical = /top|center|bottom/,\n\troffset = /[\\+\\-]\\d+(\\.[\\d]+)?%?/,\n\trposition = /^\\w+/,\n\trpercent = /%$/,\n\t_position = $.fn.position;\n\nfunction getOffsets( offsets, width, height ) {\n\treturn [\n\t\tparseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),\n\t\tparseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )\n\t];\n}\n\nfunction parseCss( element, property ) {\n\treturn parseInt( $.css( element, property ), 10 ) || 0;\n}\n\nfunction getDimensions( elem ) {\n\tvar raw = elem[ 0 ];\n\tif ( raw.nodeType === 9 ) {\n\t\treturn {\n\t\t\twidth: elem.width(),\n\t\t\theight: elem.height(),\n\t\t\toffset: { top: 0, left: 0 }\n\t\t};\n\t}\n\tif ( $.isWindow( raw ) ) {\n\t\treturn {\n\t\t\twidth: elem.width(),\n\t\t\theight: elem.height(),\n\t\t\toffset: { top: elem.scrollTop(), left: elem.scrollLeft() }\n\t\t};\n\t}\n\tif ( raw.preventDefault ) {\n\t\treturn {\n\t\t\twidth: 0,\n\t\t\theight: 0,\n\t\t\toffset: { top: raw.pageY, left: raw.pageX }\n\t\t};\n\t}\n\treturn {\n\t\twidth: elem.outerWidth(),\n\t\theight: elem.outerHeight(),\n\t\toffset: elem.offset()\n\t};\n}\n\n$.position = {\n\tscrollbarWidth: function() {\n\t\tif ( cachedScrollbarWidth !== undefined ) {\n\t\t\treturn cachedScrollbarWidth;\n\t\t}\n\t\tvar w1, w2,\n\t\t\tdiv = $( \"<div \" +\n\t\t\t\t\"style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'>\" +\n\t\t\t\t\"<div style='height:100px;width:auto;'></div></div>\" ),\n\t\t\tinnerDiv = div.children()[ 0 ];\n\n\t\t$( \"body\" ).append( div );\n\t\tw1 = innerDiv.offsetWidth;\n\t\tdiv.css( \"overflow\", \"scroll\" );\n\n\t\tw2 = innerDiv.offsetWidth;\n\n\t\tif ( w1 === w2 ) {\n\t\t\tw2 = div[ 0 ].clientWidth;\n\t\t}\n\n\t\tdiv.remove();\n\n\t\treturn ( cachedScrollbarWidth = w1 - w2 );\n\t},\n\tgetScrollInfo: function( within ) {\n\t\tvar overflowX = within.isWindow || within.isDocument ? \"\" :\n\t\t\t\twithin.element.css( \"overflow-x\" ),\n\t\t\toverflowY = within.isWindow || within.isDocument ? \"\" :\n\t\t\t\twithin.element.css( \"overflow-y\" ),\n\t\t\thasOverflowX = overflowX === \"scroll\" ||\n\t\t\t\t( overflowX === \"auto\" && within.width < within.element[ 0 ].scrollWidth ),\n\t\t\thasOverflowY = overflowY === \"scroll\" ||\n\t\t\t\t( overflowY === \"auto\" && within.height < within.element[ 0 ].scrollHeight );\n\t\treturn {\n\t\t\twidth: hasOverflowY ? $.position.scrollbarWidth() : 0,\n\t\t\theight: hasOverflowX ? $.position.scrollbarWidth() : 0\n\t\t};\n\t},\n\tgetWithinInfo: function( element ) {\n\t\tvar withinElement = $( element || window ),\n\t\t\tisWindow = $.isWindow( withinElement[ 0 ] ),\n\t\t\tisDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9,\n\t\t\thasOffset = !isWindow && !isDocument;\n\t\treturn {\n\t\t\telement: withinElement,\n\t\t\tisWindow: isWindow,\n\t\t\tisDocument: isDocument,\n\t\t\toffset: hasOffset ? $( element ).offset() : { left: 0, top: 0 },\n\t\t\tscrollLeft: withinElement.scrollLeft(),\n\t\t\tscrollTop: withinElement.scrollTop(),\n\t\t\twidth: withinElement.outerWidth(),\n\t\t\theight: withinElement.outerHeight()\n\t\t};\n\t}\n};\n\n$.fn.position = function( options ) {\n\tif ( !options || !options.of ) {\n\t\treturn _position.apply( this, arguments );\n\t}\n\n\t// Make a copy, we don't want to modify arguments\n\toptions = $.extend( {}, options );\n\n\tvar atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,\n\t\ttarget = $( options.of ),\n\t\twithin = $.position.getWithinInfo( options.within ),\n\t\tscrollInfo = $.position.getScrollInfo( within ),\n\t\tcollision = ( options.collision || \"flip\" ).split( \" \" ),\n\t\toffsets = {};\n\n\tdimensions = getDimensions( target );\n\tif ( target[ 0 ].preventDefault ) {\n\n\t\t// Force left top to allow flipping\n\t\toptions.at = \"left top\";\n\t}\n\ttargetWidth = dimensions.width;\n\ttargetHeight = dimensions.height;\n\ttargetOffset = dimensions.offset;\n\n\t// Clone to reuse original targetOffset later\n\tbasePosition = $.extend( {}, targetOffset );\n\n\t// Force my and at to have valid horizontal and vertical positions\n\t// if a value is missing or invalid, it will be converted to center\n\t$.each( [ \"my\", \"at\" ], function() {\n\t\tvar pos = ( options[ this ] || \"\" ).split( \" \" ),\n\t\t\thorizontalOffset,\n\t\t\tverticalOffset;\n\n\t\tif ( pos.length === 1 ) {\n\t\t\tpos = rhorizontal.test( pos[ 0 ] ) ?\n\t\t\t\tpos.concat( [ \"center\" ] ) :\n\t\t\t\trvertical.test( pos[ 0 ] ) ?\n\t\t\t\t\t[ \"center\" ].concat( pos ) :\n\t\t\t\t\t[ \"center\", \"center\" ];\n\t\t}\n\t\tpos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : \"center\";\n\t\tpos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : \"center\";\n\n\t\t// Calculate offsets\n\t\thorizontalOffset = roffset.exec( pos[ 0 ] );\n\t\tverticalOffset = roffset.exec( pos[ 1 ] );\n\t\toffsets[ this ] = [\n\t\t\thorizontalOffset ? horizontalOffset[ 0 ] : 0,\n\t\t\tverticalOffset ? verticalOffset[ 0 ] : 0\n\t\t];\n\n\t\t// Reduce to just the positions without the offsets\n\t\toptions[ this ] = [\n\t\t\trposition.exec( pos[ 0 ] )[ 0 ],\n\t\t\trposition.exec( pos[ 1 ] )[ 0 ]\n\t\t];\n\t} );\n\n\t// Normalize collision option\n\tif ( collision.length === 1 ) {\n\t\tcollision[ 1 ] = collision[ 0 ];\n\t}\n\n\tif ( options.at[ 0 ] === \"right\" ) {\n\t\tbasePosition.left += targetWidth;\n\t} else if ( options.at[ 0 ] === \"center\" ) {\n\t\tbasePosition.left += targetWidth / 2;\n\t}\n\n\tif ( options.at[ 1 ] === \"bottom\" ) {\n\t\tbasePosition.top += targetHeight;\n\t} else if ( options.at[ 1 ] === \"center\" ) {\n\t\tbasePosition.top += targetHeight / 2;\n\t}\n\n\tatOffset = getOffsets( offsets.at, targetWidth, targetHeight );\n\tbasePosition.left += atOffset[ 0 ];\n\tbasePosition.top += atOffset[ 1 ];\n\n\treturn this.each( function() {\n\t\tvar collisionPosition, using,\n\t\t\telem = $( this ),\n\t\t\telemWidth = elem.outerWidth(),\n\t\t\telemHeight = elem.outerHeight(),\n\t\t\tmarginLeft = parseCss( this, \"marginLeft\" ),\n\t\t\tmarginTop = parseCss( this, \"marginTop\" ),\n\t\t\tcollisionWidth = elemWidth + marginLeft + parseCss( this, \"marginRight\" ) +\n\t\t\t\tscrollInfo.width,\n\t\t\tcollisionHeight = elemHeight + marginTop + parseCss( this, \"marginBottom\" ) +\n\t\t\t\tscrollInfo.height,\n\t\t\tposition = $.extend( {}, basePosition ),\n\t\t\tmyOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );\n\n\t\tif ( options.my[ 0 ] === \"right\" ) {\n\t\t\tposition.left -= elemWidth;\n\t\t} else if ( options.my[ 0 ] === \"center\" ) {\n\t\t\tposition.left -= elemWidth / 2;\n\t\t}\n\n\t\tif ( options.my[ 1 ] === \"bottom\" ) {\n\t\t\tposition.top -= elemHeight;\n\t\t} else if ( options.my[ 1 ] === \"center\" ) {\n\t\t\tposition.top -= elemHeight / 2;\n\t\t}\n\n\t\tposition.left += myOffset[ 0 ];\n\t\tposition.top += myOffset[ 1 ];\n\n\t\tcollisionPosition = {\n\t\t\tmarginLeft: marginLeft,\n\t\t\tmarginTop: marginTop\n\t\t};\n\n\t\t$.each( [ \"left\", \"top\" ], function( i, dir ) {\n\t\t\tif ( $.ui.position[ collision[ i ] ] ) {\n\t\t\t\t$.ui.position[ collision[ i ] ][ dir ]( position, {\n\t\t\t\t\ttargetWidth: targetWidth,\n\t\t\t\t\ttargetHeight: targetHeight,\n\t\t\t\t\telemWidth: elemWidth,\n\t\t\t\t\telemHeight: elemHeight,\n\t\t\t\t\tcollisionPosition: collisionPosition,\n\t\t\t\t\tcollisionWidth: collisionWidth,\n\t\t\t\t\tcollisionHeight: collisionHeight,\n\t\t\t\t\toffset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],\n\t\t\t\t\tmy: options.my,\n\t\t\t\t\tat: options.at,\n\t\t\t\t\twithin: within,\n\t\t\t\t\telem: elem\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\tif ( options.using ) {\n\n\t\t\t// Adds feedback as second argument to using callback, if present\n\t\t\tusing = function( props ) {\n\t\t\t\tvar left = targetOffset.left - position.left,\n\t\t\t\t\tright = left + targetWidth - elemWidth,\n\t\t\t\t\ttop = targetOffset.top - position.top,\n\t\t\t\t\tbottom = top + targetHeight - elemHeight,\n\t\t\t\t\tfeedback = {\n\t\t\t\t\t\ttarget: {\n\t\t\t\t\t\t\telement: target,\n\t\t\t\t\t\t\tleft: targetOffset.left,\n\t\t\t\t\t\t\ttop: targetOffset.top,\n\t\t\t\t\t\t\twidth: targetWidth,\n\t\t\t\t\t\t\theight: targetHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\telement: {\n\t\t\t\t\t\t\telement: elem,\n\t\t\t\t\t\t\tleft: position.left,\n\t\t\t\t\t\t\ttop: position.top,\n\t\t\t\t\t\t\twidth: elemWidth,\n\t\t\t\t\t\t\theight: elemHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\thorizontal: right < 0 ? \"left\" : left > 0 ? \"right\" : \"center\",\n\t\t\t\t\t\tvertical: bottom < 0 ? \"top\" : top > 0 ? \"bottom\" : \"middle\"\n\t\t\t\t\t};\n\t\t\t\tif ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {\n\t\t\t\t\tfeedback.horizontal = \"center\";\n\t\t\t\t}\n\t\t\t\tif ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {\n\t\t\t\t\tfeedback.vertical = \"middle\";\n\t\t\t\t}\n\t\t\t\tif ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {\n\t\t\t\t\tfeedback.important = \"horizontal\";\n\t\t\t\t} else {\n\t\t\t\t\tfeedback.important = \"vertical\";\n\t\t\t\t}\n\t\t\t\toptions.using.call( this, props, feedback );\n\t\t\t};\n\t\t}\n\n\t\telem.offset( $.extend( position, { using: using } ) );\n\t} );\n};\n\n$.ui.position = {\n\tfit: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\touterWidth = within.width,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = withinOffset - collisionPosLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,\n\t\t\t\tnewOverRight;\n\n\t\t\t// Element is wider than within\n\t\t\tif ( data.collisionWidth > outerWidth ) {\n\n\t\t\t\t// Element is initially over the left side of within\n\t\t\t\tif ( overLeft > 0 && overRight <= 0 ) {\n\t\t\t\t\tnewOverRight = position.left + overLeft + data.collisionWidth - outerWidth -\n\t\t\t\t\t\twithinOffset;\n\t\t\t\t\tposition.left += overLeft - newOverRight;\n\n\t\t\t\t// Element is initially over right side of within\n\t\t\t\t} else if ( overRight > 0 && overLeft <= 0 ) {\n\t\t\t\t\tposition.left = withinOffset;\n\n\t\t\t\t// Element is initially over both left and right sides of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overLeft > overRight ) {\n\t\t\t\t\t\tposition.left = withinOffset + outerWidth - data.collisionWidth;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.left = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Too far left -> align with left edge\n\t\t\t} else if ( overLeft > 0 ) {\n\t\t\t\tposition.left += overLeft;\n\n\t\t\t// Too far right -> align with right edge\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tposition.left -= overRight;\n\n\t\t\t// Adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.left = max( position.left - collisionPosLeft, position.left );\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\touterHeight = data.within.height,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = withinOffset - collisionPosTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,\n\t\t\t\tnewOverBottom;\n\n\t\t\t// Element is taller than within\n\t\t\tif ( data.collisionHeight > outerHeight ) {\n\n\t\t\t\t// Element is initially over the top of within\n\t\t\t\tif ( overTop > 0 && overBottom <= 0 ) {\n\t\t\t\t\tnewOverBottom = position.top + overTop + data.collisionHeight - outerHeight -\n\t\t\t\t\t\twithinOffset;\n\t\t\t\t\tposition.top += overTop - newOverBottom;\n\n\t\t\t\t// Element is initially over bottom of within\n\t\t\t\t} else if ( overBottom > 0 && overTop <= 0 ) {\n\t\t\t\t\tposition.top = withinOffset;\n\n\t\t\t\t// Element is initially over both top and bottom of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overTop > overBottom ) {\n\t\t\t\t\t\tposition.top = withinOffset + outerHeight - data.collisionHeight;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.top = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Too far up -> align with top\n\t\t\t} else if ( overTop > 0 ) {\n\t\t\t\tposition.top += overTop;\n\n\t\t\t// Too far down -> align with bottom edge\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tposition.top -= overBottom;\n\n\t\t\t// Adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.top = max( position.top - collisionPosTop, position.top );\n\t\t\t}\n\t\t}\n\t},\n\tflip: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.left + within.scrollLeft,\n\t\t\t\touterWidth = within.width,\n\t\t\t\toffsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = collisionPosLeft - offsetLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,\n\t\t\t\tmyOffset = data.my[ 0 ] === \"left\" ?\n\t\t\t\t\t-data.elemWidth :\n\t\t\t\t\tdata.my[ 0 ] === \"right\" ?\n\t\t\t\t\t\tdata.elemWidth :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 0 ] === \"left\" ?\n\t\t\t\t\tdata.targetWidth :\n\t\t\t\t\tdata.at[ 0 ] === \"right\" ?\n\t\t\t\t\t\t-data.targetWidth :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 0 ],\n\t\t\t\tnewOverRight,\n\t\t\t\tnewOverLeft;\n\n\t\t\tif ( overLeft < 0 ) {\n\t\t\t\tnewOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth -\n\t\t\t\t\touterWidth - withinOffset;\n\t\t\t\tif ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tnewOverLeft = position.left - data.collisionPosition.marginLeft + myOffset +\n\t\t\t\t\tatOffset + offset - offsetLeft;\n\t\t\t\tif ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.top + within.scrollTop,\n\t\t\t\touterHeight = within.height,\n\t\t\t\toffsetTop = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = collisionPosTop - offsetTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,\n\t\t\t\ttop = data.my[ 1 ] === \"top\",\n\t\t\t\tmyOffset = top ?\n\t\t\t\t\t-data.elemHeight :\n\t\t\t\t\tdata.my[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\tdata.elemHeight :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 1 ] === \"top\" ?\n\t\t\t\t\tdata.targetHeight :\n\t\t\t\t\tdata.at[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\t-data.targetHeight :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 1 ],\n\t\t\t\tnewOverTop,\n\t\t\t\tnewOverBottom;\n\t\t\tif ( overTop < 0 ) {\n\t\t\t\tnewOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight -\n\t\t\t\t\touterHeight - withinOffset;\n\t\t\t\tif ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tnewOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset +\n\t\t\t\t\toffset - offsetTop;\n\t\t\t\tif ( newOverTop > 0 || abs( newOverTop ) < overBottom ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tflipfit: {\n\t\tleft: function() {\n\t\t\t$.ui.position.flip.left.apply( this, arguments );\n\t\t\t$.ui.position.fit.left.apply( this, arguments );\n\t\t},\n\t\ttop: function() {\n\t\t\t$.ui.position.flip.top.apply( this, arguments );\n\t\t\t$.ui.position.fit.top.apply( this, arguments );\n\t\t}\n\t}\n};\n\n} )();\n\nreturn $.ui.position;\n\n} ) );\n","( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} ( function( $ ) {\nreturn $.ui.safeActiveElement = function( document ) {\n\tvar activeElement;\n\n\t// Support: IE 9 only\n\t// IE9 throws an \"Unspecified error\" accessing document.activeElement from an <iframe>\n\ttry {\n\t\tactiveElement = document.activeElement;\n\t} catch ( error ) {\n\t\tactiveElement = document.body;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE may return null instead of an element\n\t// Interestingly, this only seems to occur when NOT in an iframe\n\tif ( !activeElement ) {\n\t\tactiveElement = document.body;\n\t}\n\n\t// Support: IE 11 only\n\t// IE11 returns a seemingly empty object in some cases when accessing\n\t// document.activeElement from an <iframe>\n\tif ( !activeElement.nodeName ) {\n\t\tactiveElement = document.body;\n\t}\n\n\treturn activeElement;\n};\n\n} ) );\n","( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} ( function( $ ) {\nreturn $.ui.safeBlur = function( element ) {\n\n\t// Support: IE9 - 10 only\n\t// If the <body> is blurred, IE will switch windows, see #9420\n\tif ( element && element.nodeName.toLowerCase() !== \"body\" ) {\n\t\t$( element ).trigger( \"blur\" );\n\t}\n};\n\n} ) );\n","/*!\n * jQuery UI Scroll Parent 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: scrollParent\n//>>group: Core\n//>>description: Get the closest ancestor element that is scrollable.\n//>>docs: http://api.jqueryui.com/scrollParent/\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} ( function( $ ) {\n\nreturn $.fn.scrollParent = function( includeHidden ) {\n\tvar position = this.css( \"position\" ),\n\t\texcludeStaticParent = position === \"absolute\",\n\t\toverflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,\n\t\tscrollParent = this.parents().filter( function() {\n\t\t\tvar parent = $( this );\n\t\t\tif ( excludeStaticParent && parent.css( \"position\" ) === \"static\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn overflowRegex.test( parent.css( \"overflow\" ) + parent.css( \"overflow-y\" ) +\n\t\t\t\tparent.css( \"overflow-x\" ) );\n\t\t} ).eq( 0 );\n\n\treturn position === \"fixed\" || !scrollParent.length ?\n\t\t$( this[ 0 ].ownerDocument || document ) :\n\t\tscrollParent;\n};\n\n} ) );\n","/*!\n * jQuery UI Tabbable 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: :tabbable Selector\n//>>group: Core\n//>>description: Selects elements which can be tabbed to.\n//>>docs: http://api.jqueryui.com/tabbable-selector/\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\", \"./focusable\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} ( function( $ ) {\n\nreturn $.extend( $.expr[ \":\" ], {\n\ttabbable: function( element ) {\n\t\tvar tabIndex = $.attr( element, \"tabindex\" ),\n\t\t\thasTabindex = tabIndex != null;\n\t\treturn ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex );\n\t}\n} );\n\n} ) );\n","/*!\n * jQuery UI Unique ID 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: uniqueId\n//>>group: Core\n//>>description: Functions to generate and remove uniqueId's\n//>>docs: http://api.jqueryui.com/uniqueId/\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} ( function( $ ) {\n\nreturn $.fn.extend( {\n\tuniqueId: ( function() {\n\t\tvar uuid = 0;\n\n\t\treturn function() {\n\t\t\treturn this.each( function() {\n\t\t\t\tif ( !this.id ) {\n\t\t\t\t\tthis.id = \"ui-id-\" + ( ++uuid );\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\t} )(),\n\n\tremoveUniqueId: function() {\n\t\treturn this.each( function() {\n\t\t\tif ( /^ui-id-\\d+$/.test( this.id ) ) {\n\t\t\t\t$( this ).removeAttr( \"id\" );\n\t\t\t}\n\t\t} );\n\t}\n} );\n\n} ) );\n","( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} ( function( $ ) {\n\n$.ui = $.ui || {};\n\nreturn $.ui.version = \"1.12.1\";\n\n} ) );\n","/*!\n * jQuery UI Widget 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Widget\n//>>group: Core\n//>>description: Provides a factory for creating stateful widgets with a common API.\n//>>docs: http://api.jqueryui.com/jQuery.widget/\n//>>demos: http://jqueryui.com/widget/\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n\nvar widgetUuid = 0;\nvar widgetSlice = Array.prototype.slice;\n\n$.cleanData = ( function( orig ) {\n\treturn function( elems ) {\n\t\tvar events, elem, i;\n\t\tfor ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\ttry {\n\n\t\t\t\t// Only trigger remove when necessary to save time\n\t\t\t\tevents = $._data( elem, \"events\" );\n\t\t\t\tif ( events && events.remove ) {\n\t\t\t\t\t$( elem ).triggerHandler( \"remove\" );\n\t\t\t\t}\n\n\t\t\t// Http://bugs.jquery.com/ticket/8235\n\t\t\t} catch ( e ) {}\n\t\t}\n\t\torig( elems );\n\t};\n} )( $.cleanData );\n\n$.widget = function( name, base, prototype ) {\n\tvar existingConstructor, constructor, basePrototype;\n\n\t// ProxiedPrototype allows the provided prototype to remain unmodified\n\t// so that it can be used as a mixin for multiple widgets (#8876)\n\tvar proxiedPrototype = {};\n\n\tvar namespace = name.split( \".\" )[ 0 ];\n\tname = name.split( \".\" )[ 1 ];\n\tvar fullName = namespace + \"-\" + name;\n\n\tif ( !prototype ) {\n\t\tprototype = base;\n\t\tbase = $.Widget;\n\t}\n\n\tif ( $.isArray( prototype ) ) {\n\t\tprototype = $.extend.apply( null, [ {} ].concat( prototype ) );\n\t}\n\n\t// Create selector for plugin\n\t$.expr[ \":\" ][ fullName.toLowerCase() ] = function( elem ) {\n\t\treturn !!$.data( elem, fullName );\n\t};\n\n\t$[ namespace ] = $[ namespace ] || {};\n\texistingConstructor = $[ namespace ][ name ];\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\n\n\t\t// Allow instantiation without \"new\" keyword\n\t\tif ( !this._createWidget ) {\n\t\t\treturn new constructor( options, element );\n\t\t}\n\n\t\t// Allow instantiation without initializing for simple inheritance\n\t\t// must use \"new\" keyword (the code above always passes args)\n\t\tif ( arguments.length ) {\n\t\t\tthis._createWidget( options, element );\n\t\t}\n\t};\n\n\t// Extend with the existing constructor to carry over any static properties\n\t$.extend( constructor, existingConstructor, {\n\t\tversion: prototype.version,\n\n\t\t// Copy the object used to create the prototype in case we need to\n\t\t// redefine the widget later\n\t\t_proto: $.extend( {}, prototype ),\n\n\t\t// Track widgets that inherit from this widget in case this widget is\n\t\t// redefined after a widget inherits from it\n\t\t_childConstructors: []\n\t} );\n\n\tbasePrototype = new base();\n\n\t// We need to make the options hash a property directly on the new instance\n\t// otherwise we'll modify the options hash on the prototype that we're\n\t// inheriting from\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\n\t$.each( prototype, function( prop, value ) {\n\t\tif ( !$.isFunction( value ) ) {\n\t\t\tproxiedPrototype[ prop ] = value;\n\t\t\treturn;\n\t\t}\n\t\tproxiedPrototype[ prop ] = ( function() {\n\t\t\tfunction _super() {\n\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\n\t\t\t}\n\n\t\t\tfunction _superApply( args ) {\n\t\t\t\treturn base.prototype[ prop ].apply( this, args );\n\t\t\t}\n\n\t\t\treturn function() {\n\t\t\t\tvar __super = this._super;\n\t\t\t\tvar __superApply = this._superApply;\n\t\t\t\tvar returnValue;\n\n\t\t\t\tthis._super = _super;\n\t\t\t\tthis._superApply = _superApply;\n\n\t\t\t\treturnValue = value.apply( this, arguments );\n\n\t\t\t\tthis._super = __super;\n\t\t\t\tthis._superApply = __superApply;\n\n\t\t\t\treturn returnValue;\n\t\t\t};\n\t\t} )();\n\t} );\n\tconstructor.prototype = $.widget.extend( basePrototype, {\n\n\t\t// TODO: remove support for widgetEventPrefix\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\n\t\t// don't prefix for widgets that aren't DOM-based\n\t\twidgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name\n\t}, proxiedPrototype, {\n\t\tconstructor: constructor,\n\t\tnamespace: namespace,\n\t\twidgetName: name,\n\t\twidgetFullName: fullName\n\t} );\n\n\t// If this widget is being redefined then we need to find all widgets that\n\t// are inheriting from it and redefine all of them so that they inherit from\n\t// the new version of this widget. We're essentially trying to replace one\n\t// level in the prototype chain.\n\tif ( existingConstructor ) {\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\n\t\t\tvar childPrototype = child.prototype;\n\n\t\t\t// Redefine the child widget using the same prototype that was\n\t\t\t// originally used, but inherit from the new version of the base\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor,\n\t\t\t\tchild._proto );\n\t\t} );\n\n\t\t// Remove the list of existing child constructors from the old constructor\n\t\t// so the old child constructors can be garbage collected\n\t\tdelete existingConstructor._childConstructors;\n\t} else {\n\t\tbase._childConstructors.push( constructor );\n\t}\n\n\t$.widget.bridge( name, constructor );\n\n\treturn constructor;\n};\n\n$.widget.extend = function( target ) {\n\tvar input = widgetSlice.call( arguments, 1 );\n\tvar inputIndex = 0;\n\tvar inputLength = input.length;\n\tvar key;\n\tvar value;\n\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\n\t\tfor ( key in input[ inputIndex ] ) {\n\t\t\tvalue = input[ inputIndex ][ key ];\n\t\t\tif ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {\n\n\t\t\t\t// Clone objects\n\t\t\t\tif ( $.isPlainObject( value ) ) {\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\n\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\n\t\t\t\t\t\t$.widget.extend( {}, value );\n\n\t\t\t\t// Copy everything else by reference\n\t\t\t\t} else {\n\t\t\t\t\ttarget[ key ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n};\n\n$.widget.bridge = function( name, object ) {\n\tvar fullName = object.prototype.widgetFullName || name;\n\t$.fn[ name ] = function( options ) {\n\t\tvar isMethodCall = typeof options === \"string\";\n\t\tvar args = widgetSlice.call( arguments, 1 );\n\t\tvar returnValue = this;\n\n\t\tif ( isMethodCall ) {\n\n\t\t\t// If this is an empty collection, we need to have the instance method\n\t\t\t// return undefined instead of the jQuery instance\n\t\t\tif ( !this.length && options === \"instance\" ) {\n\t\t\t\treturnValue = undefined;\n\t\t\t} else {\n\t\t\t\tthis.each( function() {\n\t\t\t\t\tvar methodValue;\n\t\t\t\t\tvar instance = $.data( this, fullName );\n\n\t\t\t\t\tif ( options === \"instance\" ) {\n\t\t\t\t\t\treturnValue = instance;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !instance ) {\n\t\t\t\t\t\treturn $.error( \"cannot call methods on \" + name +\n\t\t\t\t\t\t\t\" prior to initialization; \" +\n\t\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !$.isFunction( instance[ options ] ) || options.charAt( 0 ) === \"_\" ) {\n\t\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name +\n\t\t\t\t\t\t\t\" widget instance\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\n\n\t\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\n\t\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\n\t\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\n\t\t\t\t\t\t\tmethodValue;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// Allow multiple hashes to be passed on init\n\t\t\tif ( args.length ) {\n\t\t\t\toptions = $.widget.extend.apply( null, [ options ].concat( args ) );\n\t\t\t}\n\n\t\t\tthis.each( function() {\n\t\t\t\tvar instance = $.data( this, fullName );\n\t\t\t\tif ( instance ) {\n\t\t\t\t\tinstance.option( options || {} );\n\t\t\t\t\tif ( instance._init ) {\n\t\t\t\t\t\tinstance._init();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn returnValue;\n\t};\n};\n\n$.Widget = function( /* options, element */ ) {};\n$.Widget._childConstructors = [];\n\n$.Widget.prototype = {\n\twidgetName: \"widget\",\n\twidgetEventPrefix: \"\",\n\tdefaultElement: \"<div>\",\n\n\toptions: {\n\t\tclasses: {},\n\t\tdisabled: false,\n\n\t\t// Callbacks\n\t\tcreate: null\n\t},\n\n\t_createWidget: function( options, element ) {\n\t\telement = $( element || this.defaultElement || this )[ 0 ];\n\t\tthis.element = $( element );\n\t\tthis.uuid = widgetUuid++;\n\t\tthis.eventNamespace = \".\" + this.widgetName + this.uuid;\n\n\t\tthis.bindings = $();\n\t\tthis.hoverable = $();\n\t\tthis.focusable = $();\n\t\tthis.classesElementLookup = {};\n\n\t\tif ( element !== this ) {\n\t\t\t$.data( element, this.widgetFullName, this );\n\t\t\tthis._on( true, this.element, {\n\t\t\t\tremove: function( event ) {\n\t\t\t\t\tif ( event.target === element ) {\n\t\t\t\t\t\tthis.destroy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t\tthis.document = $( element.style ?\n\n\t\t\t\t// Element within the document\n\t\t\t\telement.ownerDocument :\n\n\t\t\t\t// Element is window or document\n\t\t\t\telement.document || element );\n\t\t\tthis.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow );\n\t\t}\n\n\t\tthis.options = $.widget.extend( {},\n\t\t\tthis.options,\n\t\t\tthis._getCreateOptions(),\n\t\t\toptions );\n\n\t\tthis._create();\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis._setOptionDisabled( this.options.disabled );\n\t\t}\n\n\t\tthis._trigger( \"create\", null, this._getCreateEventData() );\n\t\tthis._init();\n\t},\n\n\t_getCreateOptions: function() {\n\t\treturn {};\n\t},\n\n\t_getCreateEventData: $.noop,\n\n\t_create: $.noop,\n\n\t_init: $.noop,\n\n\tdestroy: function() {\n\t\tvar that = this;\n\n\t\tthis._destroy();\n\t\t$.each( this.classesElementLookup, function( key, value ) {\n\t\t\tthat._removeClass( value, key );\n\t\t} );\n\n\t\t// We can probably remove the unbind calls in 2.0\n\t\t// all event bindings should go through this._on()\n\t\tthis.element\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeData( this.widgetFullName );\n\t\tthis.widget()\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeAttr( \"aria-disabled\" );\n\n\t\t// Clean up events and states\n\t\tthis.bindings.off( this.eventNamespace );\n\t},\n\n\t_destroy: $.noop,\n\n\twidget: function() {\n\t\treturn this.element;\n\t},\n\n\toption: function( key, value ) {\n\t\tvar options = key;\n\t\tvar parts;\n\t\tvar curOption;\n\t\tvar i;\n\n\t\tif ( arguments.length === 0 ) {\n\n\t\t\t// Don't return a reference to the internal hash\n\t\t\treturn $.widget.extend( {}, this.options );\n\t\t}\n\n\t\tif ( typeof key === \"string\" ) {\n\n\t\t\t// Handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\n\t\t\toptions = {};\n\t\t\tparts = key.split( \".\" );\n\t\t\tkey = parts.shift();\n\t\t\tif ( parts.length ) {\n\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\n\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\n\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\n\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\n\t\t\t\t}\n\t\t\t\tkey = parts.pop();\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\n\t\t\t\t}\n\t\t\t\tcurOption[ key ] = value;\n\t\t\t} else {\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\n\t\t\t\t}\n\t\t\t\toptions[ key ] = value;\n\t\t\t}\n\t\t}\n\n\t\tthis._setOptions( options );\n\n\t\treturn this;\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar key;\n\n\t\tfor ( key in options ) {\n\t\t\tthis._setOption( key, options[ key ] );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"classes\" ) {\n\t\t\tthis._setOptionClasses( value );\n\t\t}\n\n\t\tthis.options[ key ] = value;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis._setOptionDisabled( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOptionClasses: function( value ) {\n\t\tvar classKey, elements, currentElements;\n\n\t\tfor ( classKey in value ) {\n\t\t\tcurrentElements = this.classesElementLookup[ classKey ];\n\t\t\tif ( value[ classKey ] === this.options.classes[ classKey ] ||\n\t\t\t\t\t!currentElements ||\n\t\t\t\t\t!currentElements.length ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// We are doing this to create a new jQuery object because the _removeClass() call\n\t\t\t// on the next line is going to destroy the reference to the current elements being\n\t\t\t// tracked. We need to save a copy of this collection so that we can add the new classes\n\t\t\t// below.\n\t\t\telements = $( currentElements.get() );\n\t\t\tthis._removeClass( currentElements, classKey );\n\n\t\t\t// We don't use _addClass() here, because that uses this.options.classes\n\t\t\t// for generating the string of classes. We want to use the value passed in from\n\t\t\t// _setOption(), this is the new value of the classes option which was passed to\n\t\t\t// _setOption(). We pass this value directly to _classes().\n\t\t\telements.addClass( this._classes( {\n\t\t\t\telement: elements,\n\t\t\t\tkeys: classKey,\n\t\t\t\tclasses: value,\n\t\t\t\tadd: true\n\t\t\t} ) );\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._toggleClass( this.widget(), this.widgetFullName + \"-disabled\", null, !!value );\n\n\t\t// If the widget is becoming disabled, then nothing is interactive\n\t\tif ( value ) {\n\t\t\tthis._removeClass( this.hoverable, null, \"ui-state-hover\" );\n\t\t\tthis._removeClass( this.focusable, null, \"ui-state-focus\" );\n\t\t}\n\t},\n\n\tenable: function() {\n\t\treturn this._setOptions( { disabled: false } );\n\t},\n\n\tdisable: function() {\n\t\treturn this._setOptions( { disabled: true } );\n\t},\n\n\t_classes: function( options ) {\n\t\tvar full = [];\n\t\tvar that = this;\n\n\t\toptions = $.extend( {\n\t\t\telement: this.element,\n\t\t\tclasses: this.options.classes || {}\n\t\t}, options );\n\n\t\tfunction processClassString( classes, checkOption ) {\n\t\t\tvar current, i;\n\t\t\tfor ( i = 0; i < classes.length; i++ ) {\n\t\t\t\tcurrent = that.classesElementLookup[ classes[ i ] ] || $();\n\t\t\t\tif ( options.add ) {\n\t\t\t\t\tcurrent = $( $.unique( current.get().concat( options.element.get() ) ) );\n\t\t\t\t} else {\n\t\t\t\t\tcurrent = $( current.not( options.element ).get() );\n\t\t\t\t}\n\t\t\t\tthat.classesElementLookup[ classes[ i ] ] = current;\n\t\t\t\tfull.push( classes[ i ] );\n\t\t\t\tif ( checkOption && options.classes[ classes[ i ] ] ) {\n\t\t\t\t\tfull.push( options.classes[ classes[ i ] ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis._on( options.element, {\n\t\t\t\"remove\": \"_untrackClassesElement\"\n\t\t} );\n\n\t\tif ( options.keys ) {\n\t\t\tprocessClassString( options.keys.match( /\\S+/g ) || [], true );\n\t\t}\n\t\tif ( options.extra ) {\n\t\t\tprocessClassString( options.extra.match( /\\S+/g ) || [] );\n\t\t}\n\n\t\treturn full.join( \" \" );\n\t},\n\n\t_untrackClassesElement: function( event ) {\n\t\tvar that = this;\n\t\t$.each( that.classesElementLookup, function( key, value ) {\n\t\t\tif ( $.inArray( event.target, value ) !== -1 ) {\n\t\t\t\tthat.classesElementLookup[ key ] = $( value.not( event.target ).get() );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_removeClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, false );\n\t},\n\n\t_addClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, true );\n\t},\n\n\t_toggleClass: function( element, keys, extra, add ) {\n\t\tadd = ( typeof add === \"boolean\" ) ? add : extra;\n\t\tvar shift = ( typeof element === \"string\" || element === null ),\n\t\t\toptions = {\n\t\t\t\textra: shift ? keys : extra,\n\t\t\t\tkeys: shift ? element : keys,\n\t\t\t\telement: shift ? this.element : element,\n\t\t\t\tadd: add\n\t\t\t};\n\t\toptions.element.toggleClass( this._classes( options ), add );\n\t\treturn this;\n\t},\n\n\t_on: function( suppressDisabledCheck, element, handlers ) {\n\t\tvar delegateElement;\n\t\tvar instance = this;\n\n\t\t// No suppressDisabledCheck flag, shuffle arguments\n\t\tif ( typeof suppressDisabledCheck !== \"boolean\" ) {\n\t\t\thandlers = element;\n\t\t\telement = suppressDisabledCheck;\n\t\t\tsuppressDisabledCheck = false;\n\t\t}\n\n\t\t// No element argument, shuffle and use this.element\n\t\tif ( !handlers ) {\n\t\t\thandlers = element;\n\t\t\telement = this.element;\n\t\t\tdelegateElement = this.widget();\n\t\t} else {\n\t\t\telement = delegateElement = $( element );\n\t\t\tthis.bindings = this.bindings.add( element );\n\t\t}\n\n\t\t$.each( handlers, function( event, handler ) {\n\t\t\tfunction handlerProxy() {\n\n\t\t\t\t// Allow widgets to customize the disabled handling\n\t\t\t\t// - disabled as an array instead of boolean\n\t\t\t\t// - disabled class as method for disabling individual parts\n\t\t\t\tif ( !suppressDisabledCheck &&\n\t\t\t\t\t\t( instance.options.disabled === true ||\n\t\t\t\t\t\t$( this ).hasClass( \"ui-state-disabled\" ) ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t\t.apply( instance, arguments );\n\t\t\t}\n\n\t\t\t// Copy the guid so direct unbinding works\n\t\t\tif ( typeof handler !== \"string\" ) {\n\t\t\t\thandlerProxy.guid = handler.guid =\n\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\n\t\t\t}\n\n\t\t\tvar match = event.match( /^([\\w:-]*)\\s*(.*)$/ );\n\t\t\tvar eventName = match[ 1 ] + instance.eventNamespace;\n\t\t\tvar selector = match[ 2 ];\n\n\t\t\tif ( selector ) {\n\t\t\t\tdelegateElement.on( eventName, selector, handlerProxy );\n\t\t\t} else {\n\t\t\t\telement.on( eventName, handlerProxy );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_off: function( element, eventName ) {\n\t\teventName = ( eventName || \"\" ).split( \" \" ).join( this.eventNamespace + \" \" ) +\n\t\t\tthis.eventNamespace;\n\t\telement.off( eventName ).off( eventName );\n\n\t\t// Clear the stack to avoid memory leaks (#10056)\n\t\tthis.bindings = $( this.bindings.not( element ).get() );\n\t\tthis.focusable = $( this.focusable.not( element ).get() );\n\t\tthis.hoverable = $( this.hoverable.not( element ).get() );\n\t},\n\n\t_delay: function( handler, delay ) {\n\t\tfunction handlerProxy() {\n\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t.apply( instance, arguments );\n\t\t}\n\t\tvar instance = this;\n\t\treturn setTimeout( handlerProxy, delay || 0 );\n\t},\n\n\t_hoverable: function( element ) {\n\t\tthis.hoverable = this.hoverable.add( element );\n\t\tthis._on( element, {\n\t\t\tmouseenter: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t},\n\t\t\tmouseleave: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_focusable: function( element ) {\n\t\tthis.focusable = this.focusable.add( element );\n\t\tthis._on( element, {\n\t\t\tfocusin: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t},\n\t\t\tfocusout: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_trigger: function( type, event, data ) {\n\t\tvar prop, orig;\n\t\tvar callback = this.options[ type ];\n\n\t\tdata = data || {};\n\t\tevent = $.Event( event );\n\t\tevent.type = ( type === this.widgetEventPrefix ?\n\t\t\ttype :\n\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\n\n\t\t// The original event may come from any element\n\t\t// so we need to reset the target on the new event\n\t\tevent.target = this.element[ 0 ];\n\n\t\t// Copy original event properties over to the new event\n\t\torig = event.originalEvent;\n\t\tif ( orig ) {\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tif ( !( prop in event ) ) {\n\t\t\t\t\tevent[ prop ] = orig[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element.trigger( event, data );\n\t\treturn !( $.isFunction( callback ) &&\n\t\t\tcallback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||\n\t\t\tevent.isDefaultPrevented() );\n\t}\n};\n\n$.each( { show: \"fadeIn\", hide: \"fadeOut\" }, function( method, defaultEffect ) {\n\t$.Widget.prototype[ \"_\" + method ] = function( element, options, callback ) {\n\t\tif ( typeof options === \"string\" ) {\n\t\t\toptions = { effect: options };\n\t\t}\n\n\t\tvar hasOptions;\n\t\tvar effectName = !options ?\n\t\t\tmethod :\n\t\t\toptions === true || typeof options === \"number\" ?\n\t\t\t\tdefaultEffect :\n\t\t\t\toptions.effect || defaultEffect;\n\n\t\toptions = options || {};\n\t\tif ( typeof options === \"number\" ) {\n\t\t\toptions = { duration: options };\n\t\t}\n\n\t\thasOptions = !$.isEmptyObject( options );\n\t\toptions.complete = callback;\n\n\t\tif ( options.delay ) {\n\t\t\telement.delay( options.delay );\n\t\t}\n\n\t\tif ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {\n\t\t\telement[ method ]( options );\n\t\t} else if ( effectName !== method && element[ effectName ] ) {\n\t\t\telement[ effectName ]( options.duration, options.easing, callback );\n\t\t} else {\n\t\t\telement.queue( function( next ) {\n\t\t\t\t$( this )[ method ]();\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback.call( element[ 0 ] );\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t} );\n\t\t}\n\t};\n} );\n\nreturn $.widget;\n\n} ) );\n","/*!\n * jQuery UI Button 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Button\n//>>group: Widgets\n//>>description: Enhances a form with themeable buttons.\n//>>docs: http://api.jqueryui.com/button/\n//>>demos: http://jqueryui.com/button/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/button.css\n//>>css.theme: ../../themes/base/theme.css\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\n\t\t\t// These are only for backcompat\n\t\t\t// TODO: Remove after 1.12\n\t\t\t\"./controlgroup\",\n\t\t\t\"./checkboxradio\",\n\n\t\t\t\"../keycode\",\n\t\t\t\"../widget\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n\n$.widget( \"ui.button\", {\n\tversion: \"1.12.1\",\n\tdefaultElement: \"<button>\",\n\toptions: {\n\t\tclasses: {\n\t\t\t\"ui-button\": \"ui-corner-all\"\n\t\t},\n\t\tdisabled: null,\n\t\ticon: null,\n\t\ticonPosition: \"beginning\",\n\t\tlabel: null,\n\t\tshowLabel: true\n\t},\n\n\t_getCreateOptions: function() {\n\t\tvar disabled,\n\n\t\t\t// This is to support cases like in jQuery Mobile where the base widget does have\n\t\t\t// an implementation of _getCreateOptions\n\t\t\toptions = this._super() || {};\n\n\t\tthis.isInput = this.element.is( \"input\" );\n\n\t\tdisabled = this.element[ 0 ].disabled;\n\t\tif ( disabled != null ) {\n\t\t\toptions.disabled = disabled;\n\t\t}\n\n\t\tthis.originalLabel = this.isInput ? this.element.val() : this.element.html();\n\t\tif ( this.originalLabel ) {\n\t\t\toptions.label = this.originalLabel;\n\t\t}\n\n\t\treturn options;\n\t},\n\n\t_create: function() {\n\t\tif ( !this.option.showLabel & !this.options.icon ) {\n\t\t\tthis.options.showLabel = true;\n\t\t}\n\n\t\t// We have to check the option again here even though we did in _getCreateOptions,\n\t\t// because null may have been passed on init which would override what was set in\n\t\t// _getCreateOptions\n\t\tif ( this.options.disabled == null ) {\n\t\t\tthis.options.disabled = this.element[ 0 ].disabled || false;\n\t\t}\n\n\t\tthis.hasTitle = !!this.element.attr( \"title\" );\n\n\t\t// Check to see if the label needs to be set or if its already correct\n\t\tif ( this.options.label && this.options.label !== this.originalLabel ) {\n\t\t\tif ( this.isInput ) {\n\t\t\t\tthis.element.val( this.options.label );\n\t\t\t} else {\n\t\t\t\tthis.element.html( this.options.label );\n\t\t\t}\n\t\t}\n\t\tthis._addClass( \"ui-button\", \"ui-widget\" );\n\t\tthis._setOption( \"disabled\", this.options.disabled );\n\t\tthis._enhance();\n\n\t\tif ( this.element.is( \"a\" ) ) {\n\t\t\tthis._on( {\n\t\t\t\t\"keyup\": function( event ) {\n\t\t\t\t\tif ( event.keyCode === $.ui.keyCode.SPACE ) {\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: PhantomJS <= 1.9, IE 8 Only\n\t\t\t\t\t\t// If a native click is available use it so we actually cause navigation\n\t\t\t\t\t\t// otherwise just trigger a click event\n\t\t\t\t\t\tif ( this.element[ 0 ].click ) {\n\t\t\t\t\t\t\tthis.element[ 0 ].click();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.element.trigger( \"click\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t},\n\n\t_enhance: function() {\n\t\tif ( !this.element.is( \"button\" ) ) {\n\t\t\tthis.element.attr( \"role\", \"button\" );\n\t\t}\n\n\t\tif ( this.options.icon ) {\n\t\t\tthis._updateIcon( \"icon\", this.options.icon );\n\t\t\tthis._updateTooltip();\n\t\t}\n\t},\n\n\t_updateTooltip: function() {\n\t\tthis.title = this.element.attr( \"title\" );\n\n\t\tif ( !this.options.showLabel && !this.title ) {\n\t\t\tthis.element.attr( \"title\", this.options.label );\n\t\t}\n\t},\n\n\t_updateIcon: function( option, value ) {\n\t\tvar icon = option !== \"iconPosition\",\n\t\t\tposition = icon ? this.options.iconPosition : value,\n\t\t\tdisplayBlock = position === \"top\" || position === \"bottom\";\n\n\t\t// Create icon\n\t\tif ( !this.icon ) {\n\t\t\tthis.icon = $( \"<span>\" );\n\n\t\t\tthis._addClass( this.icon, \"ui-button-icon\", \"ui-icon\" );\n\n\t\t\tif ( !this.options.showLabel ) {\n\t\t\t\tthis._addClass( \"ui-button-icon-only\" );\n\t\t\t}\n\t\t} else if ( icon ) {\n\n\t\t\t// If we are updating the icon remove the old icon class\n\t\t\tthis._removeClass( this.icon, null, this.options.icon );\n\t\t}\n\n\t\t// If we are updating the icon add the new icon class\n\t\tif ( icon ) {\n\t\t\tthis._addClass( this.icon, null, value );\n\t\t}\n\n\t\tthis._attachIcon( position );\n\n\t\t// If the icon is on top or bottom we need to add the ui-widget-icon-block class and remove\n\t\t// the iconSpace if there is one.\n\t\tif ( displayBlock ) {\n\t\t\tthis._addClass( this.icon, null, \"ui-widget-icon-block\" );\n\t\t\tif ( this.iconSpace ) {\n\t\t\t\tthis.iconSpace.remove();\n\t\t\t}\n\t\t} else {\n\n\t\t\t// Position is beginning or end so remove the ui-widget-icon-block class and add the\n\t\t\t// space if it does not exist\n\t\t\tif ( !this.iconSpace ) {\n\t\t\t\tthis.iconSpace = $( \"<span> </span>\" );\n\t\t\t\tthis._addClass( this.iconSpace, \"ui-button-icon-space\" );\n\t\t\t}\n\t\t\tthis._removeClass( this.icon, null, \"ui-wiget-icon-block\" );\n\t\t\tthis._attachIconSpace( position );\n\t\t}\n\t},\n\n\t_destroy: function() {\n\t\tthis.element.removeAttr( \"role\" );\n\n\t\tif ( this.icon ) {\n\t\t\tthis.icon.remove();\n\t\t}\n\t\tif ( this.iconSpace ) {\n\t\t\tthis.iconSpace.remove();\n\t\t}\n\t\tif ( !this.hasTitle ) {\n\t\t\tthis.element.removeAttr( \"title\" );\n\t\t}\n\t},\n\n\t_attachIconSpace: function( iconPosition ) {\n\t\tthis.icon[ /^(?:end|bottom)/.test( iconPosition ) ? \"before\" : \"after\" ]( this.iconSpace );\n\t},\n\n\t_attachIcon: function( iconPosition ) {\n\t\tthis.element[ /^(?:end|bottom)/.test( iconPosition ) ? \"append\" : \"prepend\" ]( this.icon );\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar newShowLabel = options.showLabel === undefined ?\n\t\t\t\tthis.options.showLabel :\n\t\t\t\toptions.showLabel,\n\t\t\tnewIcon = options.icon === undefined ? this.options.icon : options.icon;\n\n\t\tif ( !newShowLabel && !newIcon ) {\n\t\t\toptions.showLabel = true;\n\t\t}\n\t\tthis._super( options );\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"icon\" ) {\n\t\t\tif ( value ) {\n\t\t\t\tthis._updateIcon( key, value );\n\t\t\t} else if ( this.icon ) {\n\t\t\t\tthis.icon.remove();\n\t\t\t\tif ( this.iconSpace ) {\n\t\t\t\t\tthis.iconSpace.remove();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"iconPosition\" ) {\n\t\t\tthis._updateIcon( key, value );\n\t\t}\n\n\t\t// Make sure we can't end up with a button that has neither text nor icon\n\t\tif ( key === \"showLabel\" ) {\n\t\t\t\tthis._toggleClass( \"ui-button-icon-only\", null, !value );\n\t\t\t\tthis._updateTooltip();\n\t\t}\n\n\t\tif ( key === \"label\" ) {\n\t\t\tif ( this.isInput ) {\n\t\t\t\tthis.element.val( value );\n\t\t\t} else {\n\n\t\t\t\t// If there is an icon, append it, else nothing then append the value\n\t\t\t\t// this avoids removal of the icon when setting label text\n\t\t\t\tthis.element.html( value );\n\t\t\t\tif ( this.icon ) {\n\t\t\t\t\tthis._attachIcon( this.options.iconPosition );\n\t\t\t\t\tthis._attachIconSpace( this.options.iconPosition );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis._toggleClass( null, \"ui-state-disabled\", value );\n\t\t\tthis.element[ 0 ].disabled = value;\n\t\t\tif ( value ) {\n\t\t\t\tthis.element.blur();\n\t\t\t}\n\t\t}\n\t},\n\n\trefresh: function() {\n\n\t\t// Make sure to only check disabled if its an element that supports this otherwise\n\t\t// check for the disabled class to determine state\n\t\tvar isDisabled = this.element.is( \"input, button\" ) ?\n\t\t\tthis.element[ 0 ].disabled : this.element.hasClass( \"ui-button-disabled\" );\n\n\t\tif ( isDisabled !== this.options.disabled ) {\n\t\t\tthis._setOptions( { disabled: isDisabled } );\n\t\t}\n\n\t\tthis._updateTooltip();\n\t}\n} );\n\n// DEPRECATED\nif ( $.uiBackCompat !== false ) {\n\n\t// Text and Icons options\n\t$.widget( \"ui.button\", $.ui.button, {\n\t\toptions: {\n\t\t\ttext: true,\n\t\t\ticons: {\n\t\t\t\tprimary: null,\n\t\t\t\tsecondary: null\n\t\t\t}\n\t\t},\n\n\t\t_create: function() {\n\t\t\tif ( this.options.showLabel && !this.options.text ) {\n\t\t\t\tthis.options.showLabel = this.options.text;\n\t\t\t}\n\t\t\tif ( !this.options.showLabel && this.options.text ) {\n\t\t\t\tthis.options.text = this.options.showLabel;\n\t\t\t}\n\t\t\tif ( !this.options.icon && ( this.options.icons.primary ||\n\t\t\t\t\tthis.options.icons.secondary ) ) {\n\t\t\t\tif ( this.options.icons.primary ) {\n\t\t\t\t\tthis.options.icon = this.options.icons.primary;\n\t\t\t\t} else {\n\t\t\t\t\tthis.options.icon = this.options.icons.secondary;\n\t\t\t\t\tthis.options.iconPosition = \"end\";\n\t\t\t\t}\n\t\t\t} else if ( this.options.icon ) {\n\t\t\t\tthis.options.icons.primary = this.options.icon;\n\t\t\t}\n\t\t\tthis._super();\n\t\t},\n\n\t\t_setOption: function( key, value ) {\n\t\t\tif ( key === \"text\" ) {\n\t\t\t\tthis._super( \"showLabel\", value );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( key === \"showLabel\" ) {\n\t\t\t\tthis.options.text = value;\n\t\t\t}\n\t\t\tif ( key === \"icon\" ) {\n\t\t\t\tthis.options.icons.primary = value;\n\t\t\t}\n\t\t\tif ( key === \"icons\" ) {\n\t\t\t\tif ( value.primary ) {\n\t\t\t\t\tthis._super( \"icon\", value.primary );\n\t\t\t\t\tthis._super( \"iconPosition\", \"beginning\" );\n\t\t\t\t} else if ( value.secondary ) {\n\t\t\t\t\tthis._super( \"icon\", value.secondary );\n\t\t\t\t\tthis._super( \"iconPosition\", \"end\" );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._superApply( arguments );\n\t\t}\n\t} );\n\n\t$.fn.button = ( function( orig ) {\n\t\treturn function() {\n\t\t\tif ( !this.length || ( this.length && this[ 0 ].tagName !== \"INPUT\" ) ||\n\t\t\t\t\t( this.length && this[ 0 ].tagName === \"INPUT\" && (\n\t\t\t\t\t\tthis.attr( \"type\" ) !== \"checkbox\" && this.attr( \"type\" ) !== \"radio\"\n\t\t\t\t\t) ) ) {\n\t\t\t\treturn orig.apply( this, arguments );\n\t\t\t}\n\t\t\tif ( !$.ui.checkboxradio ) {\n\t\t\t\t$.error( \"Checkboxradio widget missing\" );\n\t\t\t}\n\t\t\tif ( arguments.length === 0 ) {\n\t\t\t\treturn this.checkboxradio( {\n\t\t\t\t\t\"icon\": false\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn this.checkboxradio.apply( this, arguments );\n\t\t};\n\t} )( $.fn.button );\n\n\t$.fn.buttonset = function() {\n\t\tif ( !$.ui.controlgroup ) {\n\t\t\t$.error( \"Controlgroup widget missing\" );\n\t\t}\n\t\tif ( arguments[ 0 ] === \"option\" && arguments[ 1 ] === \"items\" && arguments[ 2 ] ) {\n\t\t\treturn this.controlgroup.apply( this,\n\t\t\t\t[ arguments[ 0 ], \"items.button\", arguments[ 2 ] ] );\n\t\t}\n\t\tif ( arguments[ 0 ] === \"option\" && arguments[ 1 ] === \"items\" ) {\n\t\t\treturn this.controlgroup.apply( this, [ arguments[ 0 ], \"items.button\" ] );\n\t\t}\n\t\tif ( typeof arguments[ 0 ] === \"object\" && arguments[ 0 ].items ) {\n\t\t\targuments[ 0 ].items = {\n\t\t\t\tbutton: arguments[ 0 ].items\n\t\t\t};\n\t\t}\n\t\treturn this.controlgroup.apply( this, arguments );\n\t};\n}\n\nreturn $.ui.button;\n\n} ) );\n","/*!\n * jQuery UI Checkboxradio 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Checkboxradio\n//>>group: Widgets\n//>>description: Enhances a form with multiple themeable checkboxes or radio buttons.\n//>>docs: http://api.jqueryui.com/checkboxradio/\n//>>demos: http://jqueryui.com/checkboxradio/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/button.css\n//>>css.structure: ../../themes/base/checkboxradio.css\n//>>css.theme: ../../themes/base/theme.css\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"../escape-selector\",\n\t\t\t\"../form-reset-mixin\",\n\t\t\t\"../labels\",\n\t\t\t\"../widget\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n\n$.widget( \"ui.checkboxradio\", [ $.ui.formResetMixin, {\n\tversion: \"1.12.1\",\n\toptions: {\n\t\tdisabled: null,\n\t\tlabel: null,\n\t\ticon: true,\n\t\tclasses: {\n\t\t\t\"ui-checkboxradio-label\": \"ui-corner-all\",\n\t\t\t\"ui-checkboxradio-icon\": \"ui-corner-all\"\n\t\t}\n\t},\n\n\t_getCreateOptions: function() {\n\t\tvar disabled, labels;\n\t\tvar that = this;\n\t\tvar options = this._super() || {};\n\n\t\t// We read the type here, because it makes more sense to throw a element type error first,\n\t\t// rather then the error for lack of a label. Often if its the wrong type, it\n\t\t// won't have a label (e.g. calling on a div, btn, etc)\n\t\tthis._readType();\n\n\t\tlabels = this.element.labels();\n\n\t\t// If there are multiple labels, use the last one\n\t\tthis.label = $( labels[ labels.length - 1 ] );\n\t\tif ( !this.label.length ) {\n\t\t\t$.error( \"No label found for checkboxradio widget\" );\n\t\t}\n\n\t\tthis.originalLabel = \"\";\n\n\t\t// We need to get the label text but this may also need to make sure it does not contain the\n\t\t// input itself.\n\t\tthis.label.contents().not( this.element[ 0 ] ).each( function() {\n\n\t\t\t// The label contents could be text, html, or a mix. We concat each element to get a\n\t\t\t// string representation of the label, without the input as part of it.\n\t\t\tthat.originalLabel += this.nodeType === 3 ? $( this ).text() : this.outerHTML;\n\t\t} );\n\n\t\t// Set the label option if we found label text\n\t\tif ( this.originalLabel ) {\n\t\t\toptions.label = this.originalLabel;\n\t\t}\n\n\t\tdisabled = this.element[ 0 ].disabled;\n\t\tif ( disabled != null ) {\n\t\t\toptions.disabled = disabled;\n\t\t}\n\t\treturn options;\n\t},\n\n\t_create: function() {\n\t\tvar checked = this.element[ 0 ].checked;\n\n\t\tthis._bindFormResetHandler();\n\n\t\tif ( this.options.disabled == null ) {\n\t\t\tthis.options.disabled = this.element[ 0 ].disabled;\n\t\t}\n\n\t\tthis._setOption( \"disabled\", this.options.disabled );\n\t\tthis._addClass( \"ui-checkboxradio\", \"ui-helper-hidden-accessible\" );\n\t\tthis._addClass( this.label, \"ui-checkboxradio-label\", \"ui-button ui-widget\" );\n\n\t\tif ( this.type === \"radio\" ) {\n\t\t\tthis._addClass( this.label, \"ui-checkboxradio-radio-label\" );\n\t\t}\n\n\t\tif ( this.options.label && this.options.label !== this.originalLabel ) {\n\t\t\tthis._updateLabel();\n\t\t} else if ( this.originalLabel ) {\n\t\t\tthis.options.label = this.originalLabel;\n\t\t}\n\n\t\tthis._enhance();\n\n\t\tif ( checked ) {\n\t\t\tthis._addClass( this.label, \"ui-checkboxradio-checked\", \"ui-state-active\" );\n\t\t\tif ( this.icon ) {\n\t\t\t\tthis._addClass( this.icon, null, \"ui-state-hover\" );\n\t\t\t}\n\t\t}\n\n\t\tthis._on( {\n\t\t\tchange: \"_toggleClasses\",\n\t\t\tfocus: function() {\n\t\t\t\tthis._addClass( this.label, null, \"ui-state-focus ui-visual-focus\" );\n\t\t\t},\n\t\t\tblur: function() {\n\t\t\t\tthis._removeClass( this.label, null, \"ui-state-focus ui-visual-focus\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_readType: function() {\n\t\tvar nodeName = this.element[ 0 ].nodeName.toLowerCase();\n\t\tthis.type = this.element[ 0 ].type;\n\t\tif ( nodeName !== \"input\" || !/radio|checkbox/.test( this.type ) ) {\n\t\t\t$.error( \"Can't create checkboxradio on element.nodeName=\" + nodeName +\n\t\t\t\t\" and element.type=\" + this.type );\n\t\t}\n\t},\n\n\t// Support jQuery Mobile enhanced option\n\t_enhance: function() {\n\t\tthis._updateIcon( this.element[ 0 ].checked );\n\t},\n\n\twidget: function() {\n\t\treturn this.label;\n\t},\n\n\t_getRadioGroup: function() {\n\t\tvar group;\n\t\tvar name = this.element[ 0 ].name;\n\t\tvar nameSelector = \"input[name='\" + $.ui.escapeSelector( name ) + \"']\";\n\n\t\tif ( !name ) {\n\t\t\treturn $( [] );\n\t\t}\n\n\t\tif ( this.form.length ) {\n\t\t\tgroup = $( this.form[ 0 ].elements ).filter( nameSelector );\n\t\t} else {\n\n\t\t\t// Not inside a form, check all inputs that also are not inside a form\n\t\t\tgroup = $( nameSelector ).filter( function() {\n\t\t\t\treturn $( this ).form().length === 0;\n\t\t\t} );\n\t\t}\n\n\t\treturn group.not( this.element );\n\t},\n\n\t_toggleClasses: function() {\n\t\tvar checked = this.element[ 0 ].checked;\n\t\tthis._toggleClass( this.label, \"ui-checkboxradio-checked\", \"ui-state-active\", checked );\n\n\t\tif ( this.options.icon && this.type === \"checkbox\" ) {\n\t\t\tthis._toggleClass( this.icon, null, \"ui-icon-check ui-state-checked\", checked )\n\t\t\t\t._toggleClass( this.icon, null, \"ui-icon-blank\", !checked );\n\t\t}\n\n\t\tif ( this.type === \"radio\" ) {\n\t\t\tthis._getRadioGroup()\n\t\t\t\t.each( function() {\n\t\t\t\t\tvar instance = $( this ).checkboxradio( \"instance\" );\n\n\t\t\t\t\tif ( instance ) {\n\t\t\t\t\t\tinstance._removeClass( instance.label,\n\t\t\t\t\t\t\t\"ui-checkboxradio-checked\", \"ui-state-active\" );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}\n\t},\n\n\t_destroy: function() {\n\t\tthis._unbindFormResetHandler();\n\n\t\tif ( this.icon ) {\n\t\t\tthis.icon.remove();\n\t\t\tthis.iconSpace.remove();\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\n\t\t// We don't allow the value to be set to nothing\n\t\tif ( key === \"label\" && !value ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis._toggleClass( this.label, null, \"ui-state-disabled\", value );\n\t\t\tthis.element[ 0 ].disabled = value;\n\n\t\t\t// Don't refresh when setting disabled\n\t\t\treturn;\n\t\t}\n\t\tthis.refresh();\n\t},\n\n\t_updateIcon: function( checked ) {\n\t\tvar toAdd = \"ui-icon ui-icon-background \";\n\n\t\tif ( this.options.icon ) {\n\t\t\tif ( !this.icon ) {\n\t\t\t\tthis.icon = $( \"<span>\" );\n\t\t\t\tthis.iconSpace = $( \"<span> </span>\" );\n\t\t\t\tthis._addClass( this.iconSpace, \"ui-checkboxradio-icon-space\" );\n\t\t\t}\n\n\t\t\tif ( this.type === \"checkbox\" ) {\n\t\t\t\ttoAdd += checked ? \"ui-icon-check ui-state-checked\" : \"ui-icon-blank\";\n\t\t\t\tthis._removeClass( this.icon, null, checked ? \"ui-icon-blank\" : \"ui-icon-check\" );\n\t\t\t} else {\n\t\t\t\ttoAdd += \"ui-icon-blank\";\n\t\t\t}\n\t\t\tthis._addClass( this.icon, \"ui-checkboxradio-icon\", toAdd );\n\t\t\tif ( !checked ) {\n\t\t\t\tthis._removeClass( this.icon, null, \"ui-icon-check ui-state-checked\" );\n\t\t\t}\n\t\t\tthis.icon.prependTo( this.label ).after( this.iconSpace );\n\t\t} else if ( this.icon !== undefined ) {\n\t\t\tthis.icon.remove();\n\t\t\tthis.iconSpace.remove();\n\t\t\tdelete this.icon;\n\t\t}\n\t},\n\n\t_updateLabel: function() {\n\n\t\t// Remove the contents of the label ( minus the icon, icon space, and input )\n\t\tvar contents = this.label.contents().not( this.element[ 0 ] );\n\t\tif ( this.icon ) {\n\t\t\tcontents = contents.not( this.icon[ 0 ] );\n\t\t}\n\t\tif ( this.iconSpace ) {\n\t\t\tcontents = contents.not( this.iconSpace[ 0 ] );\n\t\t}\n\t\tcontents.remove();\n\n\t\tthis.label.append( this.options.label );\n\t},\n\n\trefresh: function() {\n\t\tvar checked = this.element[ 0 ].checked,\n\t\t\tisDisabled = this.element[ 0 ].disabled;\n\n\t\tthis._updateIcon( checked );\n\t\tthis._toggleClass( this.label, \"ui-checkboxradio-checked\", \"ui-state-active\", checked );\n\t\tif ( this.options.label !== null ) {\n\t\t\tthis._updateLabel();\n\t\t}\n\n\t\tif ( isDisabled !== this.options.disabled ) {\n\t\t\tthis._setOptions( { \"disabled\": isDisabled } );\n\t\t}\n\t}\n\n} ] );\n\nreturn $.ui.checkboxradio;\n\n} ) );\n","/*!\n * jQuery UI Controlgroup 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Controlgroup\n//>>group: Widgets\n//>>description: Visually groups form control widgets\n//>>docs: http://api.jqueryui.com/controlgroup/\n//>>demos: http://jqueryui.com/controlgroup/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/controlgroup.css\n//>>css.theme: ../../themes/base/theme.css\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"../widget\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\nvar controlgroupCornerRegex = /ui-corner-([a-z]){2,6}/g;\n\nreturn $.widget( \"ui.controlgroup\", {\n\tversion: \"1.12.1\",\n\tdefaultElement: \"<div>\",\n\toptions: {\n\t\tdirection: \"horizontal\",\n\t\tdisabled: null,\n\t\tonlyVisible: true,\n\t\titems: {\n\t\t\t\"button\": \"input[type=button], input[type=submit], input[type=reset], button, a\",\n\t\t\t\"controlgroupLabel\": \".ui-controlgroup-label\",\n\t\t\t\"checkboxradio\": \"input[type='checkbox'], input[type='radio']\",\n\t\t\t\"selectmenu\": \"select\",\n\t\t\t\"spinner\": \".ui-spinner-input\"\n\t\t}\n\t},\n\n\t_create: function() {\n\t\tthis._enhance();\n\t},\n\n\t// To support the enhanced option in jQuery Mobile, we isolate DOM manipulation\n\t_enhance: function() {\n\t\tthis.element.attr( \"role\", \"toolbar\" );\n\t\tthis.refresh();\n\t},\n\n\t_destroy: function() {\n\t\tthis._callChildMethod( \"destroy\" );\n\t\tthis.childWidgets.removeData( \"ui-controlgroup-data\" );\n\t\tthis.element.removeAttr( \"role\" );\n\t\tif ( this.options.items.controlgroupLabel ) {\n\t\t\tthis.element\n\t\t\t\t.find( this.options.items.controlgroupLabel )\n\t\t\t\t.find( \".ui-controlgroup-label-contents\" )\n\t\t\t\t.contents().unwrap();\n\t\t}\n\t},\n\n\t_initWidgets: function() {\n\t\tvar that = this,\n\t\t\tchildWidgets = [];\n\n\t\t// First we iterate over each of the items options\n\t\t$.each( this.options.items, function( widget, selector ) {\n\t\t\tvar labels;\n\t\t\tvar options = {};\n\n\t\t\t// Make sure the widget has a selector set\n\t\t\tif ( !selector ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( widget === \"controlgroupLabel\" ) {\n\t\t\t\tlabels = that.element.find( selector );\n\t\t\t\tlabels.each( function() {\n\t\t\t\t\tvar element = $( this );\n\n\t\t\t\t\tif ( element.children( \".ui-controlgroup-label-contents\" ).length ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\telement.contents()\n\t\t\t\t\t\t.wrapAll( \"<span class='ui-controlgroup-label-contents'></span>\" );\n\t\t\t\t} );\n\t\t\t\tthat._addClass( labels, null, \"ui-widget ui-widget-content ui-state-default\" );\n\t\t\t\tchildWidgets = childWidgets.concat( labels.get() );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Make sure the widget actually exists\n\t\t\tif ( !$.fn[ widget ] ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// We assume everything is in the middle to start because we can't determine\n\t\t\t// first / last elements until all enhancments are done.\n\t\t\tif ( that[ \"_\" + widget + \"Options\" ] ) {\n\t\t\t\toptions = that[ \"_\" + widget + \"Options\" ]( \"middle\" );\n\t\t\t} else {\n\t\t\t\toptions = { classes: {} };\n\t\t\t}\n\n\t\t\t// Find instances of this widget inside controlgroup and init them\n\t\t\tthat.element\n\t\t\t\t.find( selector )\n\t\t\t\t.each( function() {\n\t\t\t\t\tvar element = $( this );\n\t\t\t\t\tvar instance = element[ widget ]( \"instance\" );\n\n\t\t\t\t\t// We need to clone the default options for this type of widget to avoid\n\t\t\t\t\t// polluting the variable options which has a wider scope than a single widget.\n\t\t\t\t\tvar instanceOptions = $.widget.extend( {}, options );\n\n\t\t\t\t\t// If the button is the child of a spinner ignore it\n\t\t\t\t\t// TODO: Find a more generic solution\n\t\t\t\t\tif ( widget === \"button\" && element.parent( \".ui-spinner\" ).length ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Create the widget if it doesn't exist\n\t\t\t\t\tif ( !instance ) {\n\t\t\t\t\t\tinstance = element[ widget ]()[ widget ]( \"instance\" );\n\t\t\t\t\t}\n\t\t\t\t\tif ( instance ) {\n\t\t\t\t\t\tinstanceOptions.classes =\n\t\t\t\t\t\t\tthat._resolveClassesValues( instanceOptions.classes, instance );\n\t\t\t\t\t}\n\t\t\t\t\telement[ widget ]( instanceOptions );\n\n\t\t\t\t\t// Store an instance of the controlgroup to be able to reference\n\t\t\t\t\t// from the outermost element for changing options and refresh\n\t\t\t\t\tvar widgetElement = element[ widget ]( \"widget\" );\n\t\t\t\t\t$.data( widgetElement[ 0 ], \"ui-controlgroup-data\",\n\t\t\t\t\t\tinstance ? instance : element[ widget ]( \"instance\" ) );\n\n\t\t\t\t\tchildWidgets.push( widgetElement[ 0 ] );\n\t\t\t\t} );\n\t\t} );\n\n\t\tthis.childWidgets = $( $.unique( childWidgets ) );\n\t\tthis._addClass( this.childWidgets, \"ui-controlgroup-item\" );\n\t},\n\n\t_callChildMethod: function( method ) {\n\t\tthis.childWidgets.each( function() {\n\t\t\tvar element = $( this ),\n\t\t\t\tdata = element.data( \"ui-controlgroup-data\" );\n\t\t\tif ( data && data[ method ] ) {\n\t\t\t\tdata[ method ]();\n\t\t\t}\n\t\t} );\n\t},\n\n\t_updateCornerClass: function( element, position ) {\n\t\tvar remove = \"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all\";\n\t\tvar add = this._buildSimpleOptions( position, \"label\" ).classes.label;\n\n\t\tthis._removeClass( element, null, remove );\n\t\tthis._addClass( element, null, add );\n\t},\n\n\t_buildSimpleOptions: function( position, key ) {\n\t\tvar direction = this.options.direction === \"vertical\";\n\t\tvar result = {\n\t\t\tclasses: {}\n\t\t};\n\t\tresult.classes[ key ] = {\n\t\t\t\"middle\": \"\",\n\t\t\t\"first\": \"ui-corner-\" + ( direction ? \"top\" : \"left\" ),\n\t\t\t\"last\": \"ui-corner-\" + ( direction ? \"bottom\" : \"right\" ),\n\t\t\t\"only\": \"ui-corner-all\"\n\t\t}[ position ];\n\n\t\treturn result;\n\t},\n\n\t_spinnerOptions: function( position ) {\n\t\tvar options = this._buildSimpleOptions( position, \"ui-spinner\" );\n\n\t\toptions.classes[ \"ui-spinner-up\" ] = \"\";\n\t\toptions.classes[ \"ui-spinner-down\" ] = \"\";\n\n\t\treturn options;\n\t},\n\n\t_buttonOptions: function( position ) {\n\t\treturn this._buildSimpleOptions( position, \"ui-button\" );\n\t},\n\n\t_checkboxradioOptions: function( position ) {\n\t\treturn this._buildSimpleOptions( position, \"ui-checkboxradio-label\" );\n\t},\n\n\t_selectmenuOptions: function( position ) {\n\t\tvar direction = this.options.direction === \"vertical\";\n\t\treturn {\n\t\t\twidth: direction ? \"auto\" : false,\n\t\t\tclasses: {\n\t\t\t\tmiddle: {\n\t\t\t\t\t\"ui-selectmenu-button-open\": \"\",\n\t\t\t\t\t\"ui-selectmenu-button-closed\": \"\"\n\t\t\t\t},\n\t\t\t\tfirst: {\n\t\t\t\t\t\"ui-selectmenu-button-open\": \"ui-corner-\" + ( direction ? \"top\" : \"tl\" ),\n\t\t\t\t\t\"ui-selectmenu-button-closed\": \"ui-corner-\" + ( direction ? \"top\" : \"left\" )\n\t\t\t\t},\n\t\t\t\tlast: {\n\t\t\t\t\t\"ui-selectmenu-button-open\": direction ? \"\" : \"ui-corner-tr\",\n\t\t\t\t\t\"ui-selectmenu-button-closed\": \"ui-corner-\" + ( direction ? \"bottom\" : \"right\" )\n\t\t\t\t},\n\t\t\t\tonly: {\n\t\t\t\t\t\"ui-selectmenu-button-open\": \"ui-corner-top\",\n\t\t\t\t\t\"ui-selectmenu-button-closed\": \"ui-corner-all\"\n\t\t\t\t}\n\n\t\t\t}[ position ]\n\t\t};\n\t},\n\n\t_resolveClassesValues: function( classes, instance ) {\n\t\tvar result = {};\n\t\t$.each( classes, function( key ) {\n\t\t\tvar current = instance.options.classes[ key ] || \"\";\n\t\t\tcurrent = $.trim( current.replace( controlgroupCornerRegex, \"\" ) );\n\t\t\tresult[ key ] = ( current + \" \" + classes[ key ] ).replace( /\\s+/g, \" \" );\n\t\t} );\n\t\treturn result;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"direction\" ) {\n\t\t\tthis._removeClass( \"ui-controlgroup-\" + this.options.direction );\n\t\t}\n\n\t\tthis._super( key, value );\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis._callChildMethod( value ? \"disable\" : \"enable\" );\n\t\t\treturn;\n\t\t}\n\n\t\tthis.refresh();\n\t},\n\n\trefresh: function() {\n\t\tvar children,\n\t\t\tthat = this;\n\n\t\tthis._addClass( \"ui-controlgroup ui-controlgroup-\" + this.options.direction );\n\n\t\tif ( this.options.direction === \"horizontal\" ) {\n\t\t\tthis._addClass( null, \"ui-helper-clearfix\" );\n\t\t}\n\t\tthis._initWidgets();\n\n\t\tchildren = this.childWidgets;\n\n\t\t// We filter here because we need to track all childWidgets not just the visible ones\n\t\tif ( this.options.onlyVisible ) {\n\t\t\tchildren = children.filter( \":visible\" );\n\t\t}\n\n\t\tif ( children.length ) {\n\n\t\t\t// We do this last because we need to make sure all enhancment is done\n\t\t\t// before determining first and last\n\t\t\t$.each( [ \"first\", \"last\" ], function( index, value ) {\n\t\t\t\tvar instance = children[ value ]().data( \"ui-controlgroup-data\" );\n\n\t\t\t\tif ( instance && that[ \"_\" + instance.widgetName + \"Options\" ] ) {\n\t\t\t\t\tvar options = that[ \"_\" + instance.widgetName + \"Options\" ](\n\t\t\t\t\t\tchildren.length === 1 ? \"only\" : value\n\t\t\t\t\t);\n\t\t\t\t\toptions.classes = that._resolveClassesValues( options.classes, instance );\n\t\t\t\t\tinstance.element[ instance.widgetName ]( options );\n\t\t\t\t} else {\n\t\t\t\t\tthat._updateCornerClass( children[ value ](), value );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Finally call the refresh method on each of the child widgets.\n\t\t\tthis._callChildMethod( \"refresh\" );\n\t\t}\n\t}\n} );\n} ) );\n","// jscs:disable maximumLineLength\n/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */\n/*!\n * jQuery UI Datepicker 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Datepicker\n//>>group: Widgets\n//>>description: Displays a calendar from an input or inline for selecting dates.\n//>>docs: http://api.jqueryui.com/datepicker/\n//>>demos: http://jqueryui.com/datepicker/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/datepicker.css\n//>>css.theme: ../../themes/base/theme.css\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"../version\",\n\t\t\t\"../keycode\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n\n$.extend( $.ui, { datepicker: { version: \"1.12.1\" } } );\n\nvar datepicker_instActive;\n\nfunction datepicker_getZindex( elem ) {\n\tvar position, value;\n\twhile ( elem.length && elem[ 0 ] !== document ) {\n\n\t\t// Ignore z-index if position is set to a value where z-index is ignored by the browser\n\t\t// This makes behavior of this function consistent across browsers\n\t\t// WebKit always returns auto if the element is positioned\n\t\tposition = elem.css( \"position\" );\n\t\tif ( position === \"absolute\" || position === \"relative\" || position === \"fixed\" ) {\n\n\t\t\t// IE returns 0 when zIndex is not specified\n\t\t\t// other browsers return a string\n\t\t\t// we ignore the case of nested elements with an explicit value of 0\n\t\t\t// <div style=\"z-index: -10;\"><div style=\"z-index: 0;\"></div></div>\n\t\t\tvalue = parseInt( elem.css( \"zIndex\" ), 10 );\n\t\t\tif ( !isNaN( value ) && value !== 0 ) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t\telem = elem.parent();\n\t}\n\n\treturn 0;\n}\n/* Date picker manager.\n Use the singleton instance of this class, $.datepicker, to interact with the date picker.\n Settings for (groups of) date pickers are maintained in an instance object,\n allowing multiple different settings on the same page. */\n\nfunction Datepicker() {\n\tthis._curInst = null; // The current instance in use\n\tthis._keyEvent = false; // If the last event was a key event\n\tthis._disabledInputs = []; // List of date picker inputs that have been disabled\n\tthis._datepickerShowing = false; // True if the popup picker is showing , false if not\n\tthis._inDialog = false; // True if showing within a \"dialog\", false if not\n\tthis._mainDivId = \"ui-datepicker-div\"; // The ID of the main datepicker division\n\tthis._inlineClass = \"ui-datepicker-inline\"; // The name of the inline marker class\n\tthis._appendClass = \"ui-datepicker-append\"; // The name of the append marker class\n\tthis._triggerClass = \"ui-datepicker-trigger\"; // The name of the trigger marker class\n\tthis._dialogClass = \"ui-datepicker-dialog\"; // The name of the dialog marker class\n\tthis._disableClass = \"ui-datepicker-disabled\"; // The name of the disabled covering marker class\n\tthis._unselectableClass = \"ui-datepicker-unselectable\"; // The name of the unselectable cell marker class\n\tthis._currentClass = \"ui-datepicker-current-day\"; // The name of the current day marker class\n\tthis._dayOverClass = \"ui-datepicker-days-cell-over\"; // The name of the day hover marker class\n\tthis.regional = []; // Available regional settings, indexed by language code\n\tthis.regional[ \"\" ] = { // Default regional settings\n\t\tcloseText: \"Done\", // Display text for close link\n\t\tprevText: \"Prev\", // Display text for previous month link\n\t\tnextText: \"Next\", // Display text for next month link\n\t\tcurrentText: \"Today\", // Display text for current month link\n\t\tmonthNames: [ \"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\n\t\t\t\"July\",\"August\",\"September\",\"October\",\"November\",\"December\" ], // Names of months for drop-down and formatting\n\t\tmonthNamesShort: [ \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\" ], // For formatting\n\t\tdayNames: [ \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\" ], // For formatting\n\t\tdayNamesShort: [ \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\" ], // For formatting\n\t\tdayNamesMin: [ \"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\" ], // Column headings for days starting at Sunday\n\t\tweekHeader: \"Wk\", // Column header for week of the year\n\t\tdateFormat: \"mm/dd/yy\", // See format options on parseDate\n\t\tfirstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...\n\t\tisRTL: false, // True if right-to-left language, false if left-to-right\n\t\tshowMonthAfterYear: false, // True if the year select precedes month, false for month then year\n\t\tyearSuffix: \"\" // Additional text to append to the year in the month headers\n\t};\n\tthis._defaults = { // Global defaults for all the date picker instances\n\t\tshowOn: \"focus\", // \"focus\" for popup on focus,\n\t\t\t// \"button\" for trigger button, or \"both\" for either\n\t\tshowAnim: \"fadeIn\", // Name of jQuery animation for popup\n\t\tshowOptions: {}, // Options for enhanced animations\n\t\tdefaultDate: null, // Used when field is blank: actual date,\n\t\t\t// +/-number for offset from today, null for today\n\t\tappendText: \"\", // Display text following the input box, e.g. showing the format\n\t\tbuttonText: \"...\", // Text for trigger button\n\t\tbuttonImage: \"\", // URL for trigger button image\n\t\tbuttonImageOnly: false, // True if the image appears alone, false if it appears on a button\n\t\thideIfNoPrevNext: false, // True to hide next/previous month links\n\t\t\t// if not applicable, false to just disable them\n\t\tnavigationAsDateFormat: false, // True if date formatting applied to prev/today/next links\n\t\tgotoCurrent: false, // True if today link goes back to current selection instead\n\t\tchangeMonth: false, // True if month can be selected directly, false if only prev/next\n\t\tchangeYear: false, // True if year can be selected directly, false if only prev/next\n\t\tyearRange: \"c-10:c+10\", // Range of years to display in drop-down,\n\t\t\t// either relative to today's year (-nn:+nn), relative to currently displayed year\n\t\t\t// (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)\n\t\tshowOtherMonths: false, // True to show dates in other months, false to leave blank\n\t\tselectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable\n\t\tshowWeek: false, // True to show week of the year, false to not show it\n\t\tcalculateWeek: this.iso8601Week, // How to calculate the week of the year,\n\t\t\t// takes a Date and returns the number of the week for it\n\t\tshortYearCutoff: \"+10\", // Short year values < this are in the current century,\n\t\t\t// > this are in the previous century,\n\t\t\t// string value starting with \"+\" for current year + value\n\t\tminDate: null, // The earliest selectable date, or null for no limit\n\t\tmaxDate: null, // The latest selectable date, or null for no limit\n\t\tduration: \"fast\", // Duration of display/closure\n\t\tbeforeShowDay: null, // Function that takes a date and returns an array with\n\t\t\t// [0] = true if selectable, false if not, [1] = custom CSS class name(s) or \"\",\n\t\t\t// [2] = cell title (optional), e.g. $.datepicker.noWeekends\n\t\tbeforeShow: null, // Function that takes an input field and\n\t\t\t// returns a set of custom settings for the date picker\n\t\tonSelect: null, // Define a callback function when a date is selected\n\t\tonChangeMonthYear: null, // Define a callback function when the month or year is changed\n\t\tonClose: null, // Define a callback function when the datepicker is closed\n\t\tnumberOfMonths: 1, // Number of months to show at a time\n\t\tshowCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)\n\t\tstepMonths: 1, // Number of months to step back/forward\n\t\tstepBigMonths: 12, // Number of months to step back/forward for the big links\n\t\taltField: \"\", // Selector for an alternate field to store selected dates into\n\t\taltFormat: \"\", // The date format to use for the alternate field\n\t\tconstrainInput: true, // The input is constrained by the current date format\n\t\tshowButtonPanel: false, // True to show button panel, false to not show it\n\t\tautoSize: false, // True to size the input for the date format, false to leave as is\n\t\tdisabled: false // The initial disabled state\n\t};\n\t$.extend( this._defaults, this.regional[ \"\" ] );\n\tthis.regional.en = $.extend( true, {}, this.regional[ \"\" ] );\n\tthis.regional[ \"en-US\" ] = $.extend( true, {}, this.regional.en );\n\tthis.dpDiv = datepicker_bindHover( $( \"<div id='\" + this._mainDivId + \"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>\" ) );\n}\n\n$.extend( Datepicker.prototype, {\n\t/* Class name added to elements to indicate already configured with a date picker. */\n\tmarkerClassName: \"hasDatepicker\",\n\n\t//Keep track of the maximum number of rows displayed (see #7043)\n\tmaxRows: 4,\n\n\t// TODO rename to \"widget\" when switching to widget factory\n\t_widgetDatepicker: function() {\n\t\treturn this.dpDiv;\n\t},\n\n\t/* Override the default settings for all instances of the date picker.\n\t * @param settings object - the new settings to use as defaults (anonymous object)\n\t * @return the manager object\n\t */\n\tsetDefaults: function( settings ) {\n\t\tdatepicker_extendRemove( this._defaults, settings || {} );\n\t\treturn this;\n\t},\n\n\t/* Attach the date picker to a jQuery selection.\n\t * @param target\telement - the target input field or division or span\n\t * @param settings object - the new settings to use for this date picker instance (anonymous)\n\t */\n\t_attachDatepicker: function( target, settings ) {\n\t\tvar nodeName, inline, inst;\n\t\tnodeName = target.nodeName.toLowerCase();\n\t\tinline = ( nodeName === \"div\" || nodeName === \"span\" );\n\t\tif ( !target.id ) {\n\t\t\tthis.uuid += 1;\n\t\t\ttarget.id = \"dp\" + this.uuid;\n\t\t}\n\t\tinst = this._newInst( $( target ), inline );\n\t\tinst.settings = $.extend( {}, settings || {} );\n\t\tif ( nodeName === \"input\" ) {\n\t\t\tthis._connectDatepicker( target, inst );\n\t\t} else if ( inline ) {\n\t\t\tthis._inlineDatepicker( target, inst );\n\t\t}\n\t},\n\n\t/* Create a new instance object. */\n\t_newInst: function( target, inline ) {\n\t\tvar id = target[ 0 ].id.replace( /([^A-Za-z0-9_\\-])/g, \"\\\\\\\\$1\" ); // escape jQuery meta chars\n\t\treturn { id: id, input: target, // associated target\n\t\t\tselectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection\n\t\t\tdrawMonth: 0, drawYear: 0, // month being drawn\n\t\t\tinline: inline, // is datepicker inline or not\n\t\t\tdpDiv: ( !inline ? this.dpDiv : // presentation div\n\t\t\tdatepicker_bindHover( $( \"<div class='\" + this._inlineClass + \" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>\" ) ) ) };\n\t},\n\n\t/* Attach the date picker to an input field. */\n\t_connectDatepicker: function( target, inst ) {\n\t\tvar input = $( target );\n\t\tinst.append = $( [] );\n\t\tinst.trigger = $( [] );\n\t\tif ( input.hasClass( this.markerClassName ) ) {\n\t\t\treturn;\n\t\t}\n\t\tthis._attachments( input, inst );\n\t\tinput.addClass( this.markerClassName ).on( \"keydown\", this._doKeyDown ).\n\t\t\ton( \"keypress\", this._doKeyPress ).on( \"keyup\", this._doKeyUp );\n\t\tthis._autoSize( inst );\n\t\t$.data( target, \"datepicker\", inst );\n\n\t\t//If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)\n\t\tif ( inst.settings.disabled ) {\n\t\t\tthis._disableDatepicker( target );\n\t\t}\n\t},\n\n\t/* Make attachments based on settings. */\n\t_attachments: function( input, inst ) {\n\t\tvar showOn, buttonText, buttonImage,\n\t\t\tappendText = this._get( inst, \"appendText\" ),\n\t\t\tisRTL = this._get( inst, \"isRTL\" );\n\n\t\tif ( inst.append ) {\n\t\t\tinst.append.remove();\n\t\t}\n\t\tif ( appendText ) {\n\t\t\tinst.append = $( \"<span class='\" + this._appendClass + \"'>\" + appendText + \"</span>\" );\n\t\t\tinput[ isRTL ? \"before\" : \"after\" ]( inst.append );\n\t\t}\n\n\t\tinput.off( \"focus\", this._showDatepicker );\n\n\t\tif ( inst.trigger ) {\n\t\t\tinst.trigger.remove();\n\t\t}\n\n\t\tshowOn = this._get( inst, \"showOn\" );\n\t\tif ( showOn === \"focus\" || showOn === \"both\" ) { // pop-up date picker when in the marked field\n\t\t\tinput.on( \"focus\", this._showDatepicker );\n\t\t}\n\t\tif ( showOn === \"button\" || showOn === \"both\" ) { // pop-up date picker when button clicked\n\t\t\tbuttonText = this._get( inst, \"buttonText\" );\n\t\t\tbuttonImage = this._get( inst, \"buttonImage\" );\n\t\t\tinst.trigger = $( this._get( inst, \"buttonImageOnly\" ) ?\n\t\t\t\t$( \"<img/>\" ).addClass( this._triggerClass ).\n\t\t\t\t\tattr( { src: buttonImage, alt: buttonText, title: buttonText } ) :\n\t\t\t\t$( \"<button type='button'></button>\" ).addClass( this._triggerClass ).\n\t\t\t\t\thtml( !buttonImage ? buttonText : $( \"<img/>\" ).attr(\n\t\t\t\t\t{ src:buttonImage, alt:buttonText, title:buttonText } ) ) );\n\t\t\tinput[ isRTL ? \"before\" : \"after\" ]( inst.trigger );\n\t\t\tinst.trigger.on( \"click\", function() {\n\t\t\t\tif ( $.datepicker._datepickerShowing && $.datepicker._lastInput === input[ 0 ] ) {\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t} else if ( $.datepicker._datepickerShowing && $.datepicker._lastInput !== input[ 0 ] ) {\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t\t$.datepicker._showDatepicker( input[ 0 ] );\n\t\t\t\t} else {\n\t\t\t\t\t$.datepicker._showDatepicker( input[ 0 ] );\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t} );\n\t\t}\n\t},\n\n\t/* Apply the maximum length for the date format. */\n\t_autoSize: function( inst ) {\n\t\tif ( this._get( inst, \"autoSize\" ) && !inst.inline ) {\n\t\t\tvar findMax, max, maxI, i,\n\t\t\t\tdate = new Date( 2009, 12 - 1, 20 ), // Ensure double digits\n\t\t\t\tdateFormat = this._get( inst, \"dateFormat\" );\n\n\t\t\tif ( dateFormat.match( /[DM]/ ) ) {\n\t\t\t\tfindMax = function( names ) {\n\t\t\t\t\tmax = 0;\n\t\t\t\t\tmaxI = 0;\n\t\t\t\t\tfor ( i = 0; i < names.length; i++ ) {\n\t\t\t\t\t\tif ( names[ i ].length > max ) {\n\t\t\t\t\t\t\tmax = names[ i ].length;\n\t\t\t\t\t\t\tmaxI = i;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn maxI;\n\t\t\t\t};\n\t\t\t\tdate.setMonth( findMax( this._get( inst, ( dateFormat.match( /MM/ ) ?\n\t\t\t\t\t\"monthNames\" : \"monthNamesShort\" ) ) ) );\n\t\t\t\tdate.setDate( findMax( this._get( inst, ( dateFormat.match( /DD/ ) ?\n\t\t\t\t\t\"dayNames\" : \"dayNamesShort\" ) ) ) + 20 - date.getDay() );\n\t\t\t}\n\t\t\tinst.input.attr( \"size\", this._formatDate( inst, date ).length );\n\t\t}\n\t},\n\n\t/* Attach an inline date picker to a div. */\n\t_inlineDatepicker: function( target, inst ) {\n\t\tvar divSpan = $( target );\n\t\tif ( divSpan.hasClass( this.markerClassName ) ) {\n\t\t\treturn;\n\t\t}\n\t\tdivSpan.addClass( this.markerClassName ).append( inst.dpDiv );\n\t\t$.data( target, \"datepicker\", inst );\n\t\tthis._setDate( inst, this._getDefaultDate( inst ), true );\n\t\tthis._updateDatepicker( inst );\n\t\tthis._updateAlternate( inst );\n\n\t\t//If disabled option is true, disable the datepicker before showing it (see ticket #5665)\n\t\tif ( inst.settings.disabled ) {\n\t\t\tthis._disableDatepicker( target );\n\t\t}\n\n\t\t// Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements\n\t\t// http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height\n\t\tinst.dpDiv.css( \"display\", \"block\" );\n\t},\n\n\t/* Pop-up the date picker in a \"dialog\" box.\n\t * @param input element - ignored\n\t * @param date\tstring or Date - the initial date to display\n\t * @param onSelect function - the function to call when a date is selected\n\t * @param settings object - update the dialog date picker instance's settings (anonymous object)\n\t * @param pos int[2] - coordinates for the dialog's position within the screen or\n\t *\t\t\t\t\tevent - with x/y coordinates or\n\t *\t\t\t\t\tleave empty for default (screen centre)\n\t * @return the manager object\n\t */\n\t_dialogDatepicker: function( input, date, onSelect, settings, pos ) {\n\t\tvar id, browserWidth, browserHeight, scrollX, scrollY,\n\t\t\tinst = this._dialogInst; // internal instance\n\n\t\tif ( !inst ) {\n\t\t\tthis.uuid += 1;\n\t\t\tid = \"dp\" + this.uuid;\n\t\t\tthis._dialogInput = $( \"<input type='text' id='\" + id +\n\t\t\t\t\"' style='position: absolute; top: -100px; width: 0px;'/>\" );\n\t\t\tthis._dialogInput.on( \"keydown\", this._doKeyDown );\n\t\t\t$( \"body\" ).append( this._dialogInput );\n\t\t\tinst = this._dialogInst = this._newInst( this._dialogInput, false );\n\t\t\tinst.settings = {};\n\t\t\t$.data( this._dialogInput[ 0 ], \"datepicker\", inst );\n\t\t}\n\t\tdatepicker_extendRemove( inst.settings, settings || {} );\n\t\tdate = ( date && date.constructor === Date ? this._formatDate( inst, date ) : date );\n\t\tthis._dialogInput.val( date );\n\n\t\tthis._pos = ( pos ? ( pos.length ? pos : [ pos.pageX, pos.pageY ] ) : null );\n\t\tif ( !this._pos ) {\n\t\t\tbrowserWidth = document.documentElement.clientWidth;\n\t\t\tbrowserHeight = document.documentElement.clientHeight;\n\t\t\tscrollX = document.documentElement.scrollLeft || document.body.scrollLeft;\n\t\t\tscrollY = document.documentElement.scrollTop || document.body.scrollTop;\n\t\t\tthis._pos = // should use actual width/height below\n\t\t\t\t[ ( browserWidth / 2 ) - 100 + scrollX, ( browserHeight / 2 ) - 150 + scrollY ];\n\t\t}\n\n\t\t// Move input on screen for focus, but hidden behind dialog\n\t\tthis._dialogInput.css( \"left\", ( this._pos[ 0 ] + 20 ) + \"px\" ).css( \"top\", this._pos[ 1 ] + \"px\" );\n\t\tinst.settings.onSelect = onSelect;\n\t\tthis._inDialog = true;\n\t\tthis.dpDiv.addClass( this._dialogClass );\n\t\tthis._showDatepicker( this._dialogInput[ 0 ] );\n\t\tif ( $.blockUI ) {\n\t\t\t$.blockUI( this.dpDiv );\n\t\t}\n\t\t$.data( this._dialogInput[ 0 ], \"datepicker\", inst );\n\t\treturn this;\n\t},\n\n\t/* Detach a datepicker from its control.\n\t * @param target\telement - the target input field or division or span\n\t */\n\t_destroyDatepicker: function( target ) {\n\t\tvar nodeName,\n\t\t\t$target = $( target ),\n\t\t\tinst = $.data( target, \"datepicker\" );\n\n\t\tif ( !$target.hasClass( this.markerClassName ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnodeName = target.nodeName.toLowerCase();\n\t\t$.removeData( target, \"datepicker\" );\n\t\tif ( nodeName === \"input\" ) {\n\t\t\tinst.append.remove();\n\t\t\tinst.trigger.remove();\n\t\t\t$target.removeClass( this.markerClassName ).\n\t\t\t\toff( \"focus\", this._showDatepicker ).\n\t\t\t\toff( \"keydown\", this._doKeyDown ).\n\t\t\t\toff( \"keypress\", this._doKeyPress ).\n\t\t\t\toff( \"keyup\", this._doKeyUp );\n\t\t} else if ( nodeName === \"div\" || nodeName === \"span\" ) {\n\t\t\t$target.removeClass( this.markerClassName ).empty();\n\t\t}\n\n\t\tif ( datepicker_instActive === inst ) {\n\t\t\tdatepicker_instActive = null;\n\t\t}\n\t},\n\n\t/* Enable the date picker to a jQuery selection.\n\t * @param target\telement - the target input field or division or span\n\t */\n\t_enableDatepicker: function( target ) {\n\t\tvar nodeName, inline,\n\t\t\t$target = $( target ),\n\t\t\tinst = $.data( target, \"datepicker\" );\n\n\t\tif ( !$target.hasClass( this.markerClassName ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnodeName = target.nodeName.toLowerCase();\n\t\tif ( nodeName === \"input\" ) {\n\t\t\ttarget.disabled = false;\n\t\t\tinst.trigger.filter( \"button\" ).\n\t\t\t\teach( function() { this.disabled = false; } ).end().\n\t\t\t\tfilter( \"img\" ).css( { opacity: \"1.0\", cursor: \"\" } );\n\t\t} else if ( nodeName === \"div\" || nodeName === \"span\" ) {\n\t\t\tinline = $target.children( \".\" + this._inlineClass );\n\t\t\tinline.children().removeClass( \"ui-state-disabled\" );\n\t\t\tinline.find( \"select.ui-datepicker-month, select.ui-datepicker-year\" ).\n\t\t\t\tprop( \"disabled\", false );\n\t\t}\n\t\tthis._disabledInputs = $.map( this._disabledInputs,\n\t\t\tfunction( value ) { return ( value === target ? null : value ); } ); // delete entry\n\t},\n\n\t/* Disable the date picker to a jQuery selection.\n\t * @param target\telement - the target input field or division or span\n\t */\n\t_disableDatepicker: function( target ) {\n\t\tvar nodeName, inline,\n\t\t\t$target = $( target ),\n\t\t\tinst = $.data( target, \"datepicker\" );\n\n\t\tif ( !$target.hasClass( this.markerClassName ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tnodeName = target.nodeName.toLowerCase();\n\t\tif ( nodeName === \"input\" ) {\n\t\t\ttarget.disabled = true;\n\t\t\tinst.trigger.filter( \"button\" ).\n\t\t\t\teach( function() { this.disabled = true; } ).end().\n\t\t\t\tfilter( \"img\" ).css( { opacity: \"0.5\", cursor: \"default\" } );\n\t\t} else if ( nodeName === \"div\" || nodeName === \"span\" ) {\n\t\t\tinline = $target.children( \".\" + this._inlineClass );\n\t\t\tinline.children().addClass( \"ui-state-disabled\" );\n\t\t\tinline.find( \"select.ui-datepicker-month, select.ui-datepicker-year\" ).\n\t\t\t\tprop( \"disabled\", true );\n\t\t}\n\t\tthis._disabledInputs = $.map( this._disabledInputs,\n\t\t\tfunction( value ) { return ( value === target ? null : value ); } ); // delete entry\n\t\tthis._disabledInputs[ this._disabledInputs.length ] = target;\n\t},\n\n\t/* Is the first field in a jQuery collection disabled as a datepicker?\n\t * @param target\telement - the target input field or division or span\n\t * @return boolean - true if disabled, false if enabled\n\t */\n\t_isDisabledDatepicker: function( target ) {\n\t\tif ( !target ) {\n\t\t\treturn false;\n\t\t}\n\t\tfor ( var i = 0; i < this._disabledInputs.length; i++ ) {\n\t\t\tif ( this._disabledInputs[ i ] === target ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\n\t/* Retrieve the instance data for the target control.\n\t * @param target element - the target input field or division or span\n\t * @return object - the associated instance data\n\t * @throws error if a jQuery problem getting data\n\t */\n\t_getInst: function( target ) {\n\t\ttry {\n\t\t\treturn $.data( target, \"datepicker\" );\n\t\t}\n\t\tcatch ( err ) {\n\t\t\tthrow \"Missing instance data for this datepicker\";\n\t\t}\n\t},\n\n\t/* Update or retrieve the settings for a date picker attached to an input field or division.\n\t * @param target element - the target input field or division or span\n\t * @param name\tobject - the new settings to update or\n\t *\t\t\t\tstring - the name of the setting to change or retrieve,\n\t *\t\t\t\twhen retrieving also \"all\" for all instance settings or\n\t *\t\t\t\t\"defaults\" for all global defaults\n\t * @param value any - the new value for the setting\n\t *\t\t\t\t(omit if above is an object or to retrieve a value)\n\t */\n\t_optionDatepicker: function( target, name, value ) {\n\t\tvar settings, date, minDate, maxDate,\n\t\t\tinst = this._getInst( target );\n\n\t\tif ( arguments.length === 2 && typeof name === \"string\" ) {\n\t\t\treturn ( name === \"defaults\" ? $.extend( {}, $.datepicker._defaults ) :\n\t\t\t\t( inst ? ( name === \"all\" ? $.extend( {}, inst.settings ) :\n\t\t\t\tthis._get( inst, name ) ) : null ) );\n\t\t}\n\n\t\tsettings = name || {};\n\t\tif ( typeof name === \"string\" ) {\n\t\t\tsettings = {};\n\t\t\tsettings[ name ] = value;\n\t\t}\n\n\t\tif ( inst ) {\n\t\t\tif ( this._curInst === inst ) {\n\t\t\t\tthis._hideDatepicker();\n\t\t\t}\n\n\t\t\tdate = this._getDateDatepicker( target, true );\n\t\t\tminDate = this._getMinMaxDate( inst, \"min\" );\n\t\t\tmaxDate = this._getMinMaxDate( inst, \"max\" );\n\t\t\tdatepicker_extendRemove( inst.settings, settings );\n\n\t\t\t// reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided\n\t\t\tif ( minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined ) {\n\t\t\t\tinst.settings.minDate = this._formatDate( inst, minDate );\n\t\t\t}\n\t\t\tif ( maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined ) {\n\t\t\t\tinst.settings.maxDate = this._formatDate( inst, maxDate );\n\t\t\t}\n\t\t\tif ( \"disabled\" in settings ) {\n\t\t\t\tif ( settings.disabled ) {\n\t\t\t\t\tthis._disableDatepicker( target );\n\t\t\t\t} else {\n\t\t\t\t\tthis._enableDatepicker( target );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._attachments( $( target ), inst );\n\t\t\tthis._autoSize( inst );\n\t\t\tthis._setDate( inst, date );\n\t\t\tthis._updateAlternate( inst );\n\t\t\tthis._updateDatepicker( inst );\n\t\t}\n\t},\n\n\t// Change method deprecated\n\t_changeDatepicker: function( target, name, value ) {\n\t\tthis._optionDatepicker( target, name, value );\n\t},\n\n\t/* Redraw the date picker attached to an input field or division.\n\t * @param target element - the target input field or division or span\n\t */\n\t_refreshDatepicker: function( target ) {\n\t\tvar inst = this._getInst( target );\n\t\tif ( inst ) {\n\t\t\tthis._updateDatepicker( inst );\n\t\t}\n\t},\n\n\t/* Set the dates for a jQuery selection.\n\t * @param target element - the target input field or division or span\n\t * @param date\tDate - the new date\n\t */\n\t_setDateDatepicker: function( target, date ) {\n\t\tvar inst = this._getInst( target );\n\t\tif ( inst ) {\n\t\t\tthis._setDate( inst, date );\n\t\t\tthis._updateDatepicker( inst );\n\t\t\tthis._updateAlternate( inst );\n\t\t}\n\t},\n\n\t/* Get the date(s) for the first entry in a jQuery selection.\n\t * @param target element - the target input field or division or span\n\t * @param noDefault boolean - true if no default date is to be used\n\t * @return Date - the current date\n\t */\n\t_getDateDatepicker: function( target, noDefault ) {\n\t\tvar inst = this._getInst( target );\n\t\tif ( inst && !inst.inline ) {\n\t\t\tthis._setDateFromField( inst, noDefault );\n\t\t}\n\t\treturn ( inst ? this._getDate( inst ) : null );\n\t},\n\n\t/* Handle keystrokes. */\n\t_doKeyDown: function( event ) {\n\t\tvar onSelect, dateStr, sel,\n\t\t\tinst = $.datepicker._getInst( event.target ),\n\t\t\thandled = true,\n\t\t\tisRTL = inst.dpDiv.is( \".ui-datepicker-rtl\" );\n\n\t\tinst._keyEvent = true;\n\t\tif ( $.datepicker._datepickerShowing ) {\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase 9: $.datepicker._hideDatepicker();\n\t\t\t\t\t\thandled = false;\n\t\t\t\t\t\tbreak; // hide on tab out\n\t\t\t\tcase 13: sel = $( \"td.\" + $.datepicker._dayOverClass + \":not(.\" +\n\t\t\t\t\t\t\t\t\t$.datepicker._currentClass + \")\", inst.dpDiv );\n\t\t\t\t\t\tif ( sel[ 0 ] ) {\n\t\t\t\t\t\t\t$.datepicker._selectDay( event.target, inst.selectedMonth, inst.selectedYear, sel[ 0 ] );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tonSelect = $.datepicker._get( inst, \"onSelect\" );\n\t\t\t\t\t\tif ( onSelect ) {\n\t\t\t\t\t\t\tdateStr = $.datepicker._formatDate( inst );\n\n\t\t\t\t\t\t\t// Trigger custom callback\n\t\t\t\t\t\t\tonSelect.apply( ( inst.input ? inst.input[ 0 ] : null ), [ dateStr, inst ] );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn false; // don't submit the form\n\t\t\t\tcase 27: $.datepicker._hideDatepicker();\n\t\t\t\t\t\tbreak; // hide on escape\n\t\t\t\tcase 33: $.datepicker._adjustDate( event.target, ( event.ctrlKey ?\n\t\t\t\t\t\t\t-$.datepicker._get( inst, \"stepBigMonths\" ) :\n\t\t\t\t\t\t\t-$.datepicker._get( inst, \"stepMonths\" ) ), \"M\" );\n\t\t\t\t\t\tbreak; // previous month/year on page up/+ ctrl\n\t\t\t\tcase 34: $.datepicker._adjustDate( event.target, ( event.ctrlKey ?\n\t\t\t\t\t\t\t+$.datepicker._get( inst, \"stepBigMonths\" ) :\n\t\t\t\t\t\t\t+$.datepicker._get( inst, \"stepMonths\" ) ), \"M\" );\n\t\t\t\t\t\tbreak; // next month/year on page down/+ ctrl\n\t\t\t\tcase 35: if ( event.ctrlKey || event.metaKey ) {\n\t\t\t\t\t\t\t$.datepicker._clearDate( event.target );\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // clear on ctrl or command +end\n\t\t\t\tcase 36: if ( event.ctrlKey || event.metaKey ) {\n\t\t\t\t\t\t\t$.datepicker._gotoToday( event.target );\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // current on ctrl or command +home\n\t\t\t\tcase 37: if ( event.ctrlKey || event.metaKey ) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, ( isRTL ? +1 : -1 ), \"D\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\n\t\t\t\t\t\t// -1 day on ctrl or command +left\n\t\t\t\t\t\tif ( event.originalEvent.altKey ) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, ( event.ctrlKey ?\n\t\t\t\t\t\t\t\t-$.datepicker._get( inst, \"stepBigMonths\" ) :\n\t\t\t\t\t\t\t\t-$.datepicker._get( inst, \"stepMonths\" ) ), \"M\" );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// next month/year on alt +left on Mac\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase 38: if ( event.ctrlKey || event.metaKey ) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, -7, \"D\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // -1 week on ctrl or command +up\n\t\t\t\tcase 39: if ( event.ctrlKey || event.metaKey ) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, ( isRTL ? -1 : +1 ), \"D\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\n\t\t\t\t\t\t// +1 day on ctrl or command +right\n\t\t\t\t\t\tif ( event.originalEvent.altKey ) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, ( event.ctrlKey ?\n\t\t\t\t\t\t\t\t+$.datepicker._get( inst, \"stepBigMonths\" ) :\n\t\t\t\t\t\t\t\t+$.datepicker._get( inst, \"stepMonths\" ) ), \"M\" );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// next month/year on alt +right\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase 40: if ( event.ctrlKey || event.metaKey ) {\n\t\t\t\t\t\t\t$.datepicker._adjustDate( event.target, +7, \"D\" );\n\t\t\t\t\t\t}\n\t\t\t\t\t\thandled = event.ctrlKey || event.metaKey;\n\t\t\t\t\t\tbreak; // +1 week on ctrl or command +down\n\t\t\t\tdefault: handled = false;\n\t\t\t}\n\t\t} else if ( event.keyCode === 36 && event.ctrlKey ) { // display the date picker on ctrl+home\n\t\t\t$.datepicker._showDatepicker( this );\n\t\t} else {\n\t\t\thandled = false;\n\t\t}\n\n\t\tif ( handled ) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t},\n\n\t/* Filter entered characters - based on date format. */\n\t_doKeyPress: function( event ) {\n\t\tvar chars, chr,\n\t\t\tinst = $.datepicker._getInst( event.target );\n\n\t\tif ( $.datepicker._get( inst, \"constrainInput\" ) ) {\n\t\t\tchars = $.datepicker._possibleChars( $.datepicker._get( inst, \"dateFormat\" ) );\n\t\t\tchr = String.fromCharCode( event.charCode == null ? event.keyCode : event.charCode );\n\t\t\treturn event.ctrlKey || event.metaKey || ( chr < \" \" || !chars || chars.indexOf( chr ) > -1 );\n\t\t}\n\t},\n\n\t/* Synchronise manual entry and field/alternate field. */\n\t_doKeyUp: function( event ) {\n\t\tvar date,\n\t\t\tinst = $.datepicker._getInst( event.target );\n\n\t\tif ( inst.input.val() !== inst.lastVal ) {\n\t\t\ttry {\n\t\t\t\tdate = $.datepicker.parseDate( $.datepicker._get( inst, \"dateFormat\" ),\n\t\t\t\t\t( inst.input ? inst.input.val() : null ),\n\t\t\t\t\t$.datepicker._getFormatConfig( inst ) );\n\n\t\t\t\tif ( date ) { // only if valid\n\t\t\t\t\t$.datepicker._setDateFromField( inst );\n\t\t\t\t\t$.datepicker._updateAlternate( inst );\n\t\t\t\t\t$.datepicker._updateDatepicker( inst );\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch ( err ) {\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t},\n\n\t/* Pop-up the date picker for a given input field.\n\t * If false returned from beforeShow event handler do not show.\n\t * @param input element - the input field attached to the date picker or\n\t *\t\t\t\t\tevent - if triggered by focus\n\t */\n\t_showDatepicker: function( input ) {\n\t\tinput = input.target || input;\n\t\tif ( input.nodeName.toLowerCase() !== \"input\" ) { // find from button/image trigger\n\t\t\tinput = $( \"input\", input.parentNode )[ 0 ];\n\t\t}\n\n\t\tif ( $.datepicker._isDisabledDatepicker( input ) || $.datepicker._lastInput === input ) { // already here\n\t\t\treturn;\n\t\t}\n\n\t\tvar inst, beforeShow, beforeShowSettings, isFixed,\n\t\t\toffset, showAnim, duration;\n\n\t\tinst = $.datepicker._getInst( input );\n\t\tif ( $.datepicker._curInst && $.datepicker._curInst !== inst ) {\n\t\t\t$.datepicker._curInst.dpDiv.stop( true, true );\n\t\t\tif ( inst && $.datepicker._datepickerShowing ) {\n\t\t\t\t$.datepicker._hideDatepicker( $.datepicker._curInst.input[ 0 ] );\n\t\t\t}\n\t\t}\n\n\t\tbeforeShow = $.datepicker._get( inst, \"beforeShow\" );\n\t\tbeforeShowSettings = beforeShow ? beforeShow.apply( input, [ input, inst ] ) : {};\n\t\tif ( beforeShowSettings === false ) {\n\t\t\treturn;\n\t\t}\n\t\tdatepicker_extendRemove( inst.settings, beforeShowSettings );\n\n\t\tinst.lastVal = null;\n\t\t$.datepicker._lastInput = input;\n\t\t$.datepicker._setDateFromField( inst );\n\n\t\tif ( $.datepicker._inDialog ) { // hide cursor\n\t\t\tinput.value = \"\";\n\t\t}\n\t\tif ( !$.datepicker._pos ) { // position below input\n\t\t\t$.datepicker._pos = $.datepicker._findPos( input );\n\t\t\t$.datepicker._pos[ 1 ] += input.offsetHeight; // add the height\n\t\t}\n\n\t\tisFixed = false;\n\t\t$( input ).parents().each( function() {\n\t\t\tisFixed |= $( this ).css( \"position\" ) === \"fixed\";\n\t\t\treturn !isFixed;\n\t\t} );\n\n\t\toffset = { left: $.datepicker._pos[ 0 ], top: $.datepicker._pos[ 1 ] };\n\t\t$.datepicker._pos = null;\n\n\t\t//to avoid flashes on Firefox\n\t\tinst.dpDiv.empty();\n\n\t\t// determine sizing offscreen\n\t\tinst.dpDiv.css( { position: \"absolute\", display: \"block\", top: \"-1000px\" } );\n\t\t$.datepicker._updateDatepicker( inst );\n\n\t\t// fix width for dynamic number of date pickers\n\t\t// and adjust position before showing\n\t\toffset = $.datepicker._checkOffset( inst, offset, isFixed );\n\t\tinst.dpDiv.css( { position: ( $.datepicker._inDialog && $.blockUI ?\n\t\t\t\"static\" : ( isFixed ? \"fixed\" : \"absolute\" ) ), display: \"none\",\n\t\t\tleft: offset.left + \"px\", top: offset.top + \"px\" } );\n\n\t\tif ( !inst.inline ) {\n\t\t\tshowAnim = $.datepicker._get( inst, \"showAnim\" );\n\t\t\tduration = $.datepicker._get( inst, \"duration\" );\n\t\t\tinst.dpDiv.css( \"z-index\", datepicker_getZindex( $( input ) ) + 1 );\n\t\t\t$.datepicker._datepickerShowing = true;\n\n\t\t\tif ( $.effects && $.effects.effect[ showAnim ] ) {\n\t\t\t\tinst.dpDiv.show( showAnim, $.datepicker._get( inst, \"showOptions\" ), duration );\n\t\t\t} else {\n\t\t\t\tinst.dpDiv[ showAnim || \"show\" ]( showAnim ? duration : null );\n\t\t\t}\n\n\t\t\tif ( $.datepicker._shouldFocusInput( inst ) ) {\n\t\t\t\tinst.input.trigger( \"focus\" );\n\t\t\t}\n\n\t\t\t$.datepicker._curInst = inst;\n\t\t}\n\t},\n\n\t/* Generate the date picker content. */\n\t_updateDatepicker: function( inst ) {\n\t\tthis.maxRows = 4; //Reset the max number of rows being displayed (see #7043)\n\t\tdatepicker_instActive = inst; // for delegate hover events\n\t\tinst.dpDiv.empty().append( this._generateHTML( inst ) );\n\t\tthis._attachHandlers( inst );\n\n\t\tvar origyearshtml,\n\t\t\tnumMonths = this._getNumberOfMonths( inst ),\n\t\t\tcols = numMonths[ 1 ],\n\t\t\twidth = 17,\n\t\t\tactiveCell = inst.dpDiv.find( \".\" + this._dayOverClass + \" a\" );\n\n\t\tif ( activeCell.length > 0 ) {\n\t\t\tdatepicker_handleMouseover.apply( activeCell.get( 0 ) );\n\t\t}\n\n\t\tinst.dpDiv.removeClass( \"ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4\" ).width( \"\" );\n\t\tif ( cols > 1 ) {\n\t\t\tinst.dpDiv.addClass( \"ui-datepicker-multi-\" + cols ).css( \"width\", ( width * cols ) + \"em\" );\n\t\t}\n\t\tinst.dpDiv[ ( numMonths[ 0 ] !== 1 || numMonths[ 1 ] !== 1 ? \"add\" : \"remove\" ) +\n\t\t\t\"Class\" ]( \"ui-datepicker-multi\" );\n\t\tinst.dpDiv[ ( this._get( inst, \"isRTL\" ) ? \"add\" : \"remove\" ) +\n\t\t\t\"Class\" ]( \"ui-datepicker-rtl\" );\n\n\t\tif ( inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput( inst ) ) {\n\t\t\tinst.input.trigger( \"focus\" );\n\t\t}\n\n\t\t// Deffered render of the years select (to avoid flashes on Firefox)\n\t\tif ( inst.yearshtml ) {\n\t\t\torigyearshtml = inst.yearshtml;\n\t\t\tsetTimeout( function() {\n\n\t\t\t\t//assure that inst.yearshtml didn't change.\n\t\t\t\tif ( origyearshtml === inst.yearshtml && inst.yearshtml ) {\n\t\t\t\t\tinst.dpDiv.find( \"select.ui-datepicker-year:first\" ).replaceWith( inst.yearshtml );\n\t\t\t\t}\n\t\t\t\torigyearshtml = inst.yearshtml = null;\n\t\t\t}, 0 );\n\t\t}\n\t},\n\n\t// #6694 - don't focus the input if it's already focused\n\t// this breaks the change event in IE\n\t// Support: IE and jQuery <1.9\n\t_shouldFocusInput: function( inst ) {\n\t\treturn inst.input && inst.input.is( \":visible\" ) && !inst.input.is( \":disabled\" ) && !inst.input.is( \":focus\" );\n\t},\n\n\t/* Check positioning to remain on screen. */\n\t_checkOffset: function( inst, offset, isFixed ) {\n\t\tvar dpWidth = inst.dpDiv.outerWidth(),\n\t\t\tdpHeight = inst.dpDiv.outerHeight(),\n\t\t\tinputWidth = inst.input ? inst.input.outerWidth() : 0,\n\t\t\tinputHeight = inst.input ? inst.input.outerHeight() : 0,\n\t\t\tviewWidth = document.documentElement.clientWidth + ( isFixed ? 0 : $( document ).scrollLeft() ),\n\t\t\tviewHeight = document.documentElement.clientHeight + ( isFixed ? 0 : $( document ).scrollTop() );\n\n\t\toffset.left -= ( this._get( inst, \"isRTL\" ) ? ( dpWidth - inputWidth ) : 0 );\n\t\toffset.left -= ( isFixed && offset.left === inst.input.offset().left ) ? $( document ).scrollLeft() : 0;\n\t\toffset.top -= ( isFixed && offset.top === ( inst.input.offset().top + inputHeight ) ) ? $( document ).scrollTop() : 0;\n\n\t\t// Now check if datepicker is showing outside window viewport - move to a better place if so.\n\t\toffset.left -= Math.min( offset.left, ( offset.left + dpWidth > viewWidth && viewWidth > dpWidth ) ?\n\t\t\tMath.abs( offset.left + dpWidth - viewWidth ) : 0 );\n\t\toffset.top -= Math.min( offset.top, ( offset.top + dpHeight > viewHeight && viewHeight > dpHeight ) ?\n\t\t\tMath.abs( dpHeight + inputHeight ) : 0 );\n\n\t\treturn offset;\n\t},\n\n\t/* Find an object's position on the screen. */\n\t_findPos: function( obj ) {\n\t\tvar position,\n\t\t\tinst = this._getInst( obj ),\n\t\t\tisRTL = this._get( inst, \"isRTL\" );\n\n\t\twhile ( obj && ( obj.type === \"hidden\" || obj.nodeType !== 1 || $.expr.filters.hidden( obj ) ) ) {\n\t\t\tobj = obj[ isRTL ? \"previousSibling\" : \"nextSibling\" ];\n\t\t}\n\n\t\tposition = $( obj ).offset();\n\t\treturn [ position.left, position.top ];\n\t},\n\n\t/* Hide the date picker from view.\n\t * @param input element - the input field attached to the date picker\n\t */\n\t_hideDatepicker: function( input ) {\n\t\tvar showAnim, duration, postProcess, onClose,\n\t\t\tinst = this._curInst;\n\n\t\tif ( !inst || ( input && inst !== $.data( input, \"datepicker\" ) ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this._datepickerShowing ) {\n\t\t\tshowAnim = this._get( inst, \"showAnim\" );\n\t\t\tduration = this._get( inst, \"duration\" );\n\t\t\tpostProcess = function() {\n\t\t\t\t$.datepicker._tidyDialog( inst );\n\t\t\t};\n\n\t\t\t// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed\n\t\t\tif ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) {\n\t\t\t\tinst.dpDiv.hide( showAnim, $.datepicker._get( inst, \"showOptions\" ), duration, postProcess );\n\t\t\t} else {\n\t\t\t\tinst.dpDiv[ ( showAnim === \"slideDown\" ? \"slideUp\" :\n\t\t\t\t\t( showAnim === \"fadeIn\" ? \"fadeOut\" : \"hide\" ) ) ]( ( showAnim ? duration : null ), postProcess );\n\t\t\t}\n\n\t\t\tif ( !showAnim ) {\n\t\t\t\tpostProcess();\n\t\t\t}\n\t\t\tthis._datepickerShowing = false;\n\n\t\t\tonClose = this._get( inst, \"onClose\" );\n\t\t\tif ( onClose ) {\n\t\t\t\tonClose.apply( ( inst.input ? inst.input[ 0 ] : null ), [ ( inst.input ? inst.input.val() : \"\" ), inst ] );\n\t\t\t}\n\n\t\t\tthis._lastInput = null;\n\t\t\tif ( this._inDialog ) {\n\t\t\t\tthis._dialogInput.css( { position: \"absolute\", left: \"0\", top: \"-100px\" } );\n\t\t\t\tif ( $.blockUI ) {\n\t\t\t\t\t$.unblockUI();\n\t\t\t\t\t$( \"body\" ).append( this.dpDiv );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._inDialog = false;\n\t\t}\n\t},\n\n\t/* Tidy up after a dialog display. */\n\t_tidyDialog: function( inst ) {\n\t\tinst.dpDiv.removeClass( this._dialogClass ).off( \".ui-datepicker-calendar\" );\n\t},\n\n\t/* Close date picker if clicked elsewhere. */\n\t_checkExternalClick: function( event ) {\n\t\tif ( !$.datepicker._curInst ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar $target = $( event.target ),\n\t\t\tinst = $.datepicker._getInst( $target[ 0 ] );\n\n\t\tif ( ( ( $target[ 0 ].id !== $.datepicker._mainDivId &&\n\t\t\t\t$target.parents( \"#\" + $.datepicker._mainDivId ).length === 0 &&\n\t\t\t\t!$target.hasClass( $.datepicker.markerClassName ) &&\n\t\t\t\t!$target.closest( \".\" + $.datepicker._triggerClass ).length &&\n\t\t\t\t$.datepicker._datepickerShowing && !( $.datepicker._inDialog && $.blockUI ) ) ) ||\n\t\t\t( $target.hasClass( $.datepicker.markerClassName ) && $.datepicker._curInst !== inst ) ) {\n\t\t\t\t$.datepicker._hideDatepicker();\n\t\t}\n\t},\n\n\t/* Adjust one of the date sub-fields. */\n\t_adjustDate: function( id, offset, period ) {\n\t\tvar target = $( id ),\n\t\t\tinst = this._getInst( target[ 0 ] );\n\n\t\tif ( this._isDisabledDatepicker( target[ 0 ] ) ) {\n\t\t\treturn;\n\t\t}\n\t\tthis._adjustInstDate( inst, offset +\n\t\t\t( period === \"M\" ? this._get( inst, \"showCurrentAtPos\" ) : 0 ), // undo positioning\n\t\t\tperiod );\n\t\tthis._updateDatepicker( inst );\n\t},\n\n\t/* Action for current link. */\n\t_gotoToday: function( id ) {\n\t\tvar date,\n\t\t\ttarget = $( id ),\n\t\t\tinst = this._getInst( target[ 0 ] );\n\n\t\tif ( this._get( inst, \"gotoCurrent\" ) && inst.currentDay ) {\n\t\t\tinst.selectedDay = inst.currentDay;\n\t\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth;\n\t\t\tinst.drawYear = inst.selectedYear = inst.currentYear;\n\t\t} else {\n\t\t\tdate = new Date();\n\t\t\tinst.selectedDay = date.getDate();\n\t\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\t}\n\t\tthis._notifyChange( inst );\n\t\tthis._adjustDate( target );\n\t},\n\n\t/* Action for selecting a new month/year. */\n\t_selectMonthYear: function( id, select, period ) {\n\t\tvar target = $( id ),\n\t\t\tinst = this._getInst( target[ 0 ] );\n\n\t\tinst[ \"selected\" + ( period === \"M\" ? \"Month\" : \"Year\" ) ] =\n\t\tinst[ \"draw\" + ( period === \"M\" ? \"Month\" : \"Year\" ) ] =\n\t\t\tparseInt( select.options[ select.selectedIndex ].value, 10 );\n\n\t\tthis._notifyChange( inst );\n\t\tthis._adjustDate( target );\n\t},\n\n\t/* Action for selecting a day. */\n\t_selectDay: function( id, month, year, td ) {\n\t\tvar inst,\n\t\t\ttarget = $( id );\n\n\t\tif ( $( td ).hasClass( this._unselectableClass ) || this._isDisabledDatepicker( target[ 0 ] ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tinst = this._getInst( target[ 0 ] );\n\t\tinst.selectedDay = inst.currentDay = $( \"a\", td ).html();\n\t\tinst.selectedMonth = inst.currentMonth = month;\n\t\tinst.selectedYear = inst.currentYear = year;\n\t\tthis._selectDate( id, this._formatDate( inst,\n\t\t\tinst.currentDay, inst.currentMonth, inst.currentYear ) );\n\t},\n\n\t/* Erase the input field and hide the date picker. */\n\t_clearDate: function( id ) {\n\t\tvar target = $( id );\n\t\tthis._selectDate( target, \"\" );\n\t},\n\n\t/* Update the input field with the selected date. */\n\t_selectDate: function( id, dateStr ) {\n\t\tvar onSelect,\n\t\t\ttarget = $( id ),\n\t\t\tinst = this._getInst( target[ 0 ] );\n\n\t\tdateStr = ( dateStr != null ? dateStr : this._formatDate( inst ) );\n\t\tif ( inst.input ) {\n\t\t\tinst.input.val( dateStr );\n\t\t}\n\t\tthis._updateAlternate( inst );\n\n\t\tonSelect = this._get( inst, \"onSelect\" );\n\t\tif ( onSelect ) {\n\t\t\tonSelect.apply( ( inst.input ? inst.input[ 0 ] : null ), [ dateStr, inst ] ); // trigger custom callback\n\t\t} else if ( inst.input ) {\n\t\t\tinst.input.trigger( \"change\" ); // fire the change event\n\t\t}\n\n\t\tif ( inst.inline ) {\n\t\t\tthis._updateDatepicker( inst );\n\t\t} else {\n\t\t\tthis._hideDatepicker();\n\t\t\tthis._lastInput = inst.input[ 0 ];\n\t\t\tif ( typeof( inst.input[ 0 ] ) !== \"object\" ) {\n\t\t\t\tinst.input.trigger( \"focus\" ); // restore focus\n\t\t\t}\n\t\t\tthis._lastInput = null;\n\t\t}\n\t},\n\n\t/* Update any alternate field to synchronise with the main field. */\n\t_updateAlternate: function( inst ) {\n\t\tvar altFormat, date, dateStr,\n\t\t\taltField = this._get( inst, \"altField\" );\n\n\t\tif ( altField ) { // update alternate field too\n\t\t\taltFormat = this._get( inst, \"altFormat\" ) || this._get( inst, \"dateFormat\" );\n\t\t\tdate = this._getDate( inst );\n\t\t\tdateStr = this.formatDate( altFormat, date, this._getFormatConfig( inst ) );\n\t\t\t$( altField ).val( dateStr );\n\t\t}\n\t},\n\n\t/* Set as beforeShowDay function to prevent selection of weekends.\n\t * @param date Date - the date to customise\n\t * @return [boolean, string] - is this date selectable?, what is its CSS class?\n\t */\n\tnoWeekends: function( date ) {\n\t\tvar day = date.getDay();\n\t\treturn [ ( day > 0 && day < 6 ), \"\" ];\n\t},\n\n\t/* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.\n\t * @param date Date - the date to get the week for\n\t * @return number - the number of the week within the year that contains this date\n\t */\n\tiso8601Week: function( date ) {\n\t\tvar time,\n\t\t\tcheckDate = new Date( date.getTime() );\n\n\t\t// Find Thursday of this week starting on Monday\n\t\tcheckDate.setDate( checkDate.getDate() + 4 - ( checkDate.getDay() || 7 ) );\n\n\t\ttime = checkDate.getTime();\n\t\tcheckDate.setMonth( 0 ); // Compare with Jan 1\n\t\tcheckDate.setDate( 1 );\n\t\treturn Math.floor( Math.round( ( time - checkDate ) / 86400000 ) / 7 ) + 1;\n\t},\n\n\t/* Parse a string value into a date object.\n\t * See formatDate below for the possible formats.\n\t *\n\t * @param format string - the expected format of the date\n\t * @param value string - the date in the above format\n\t * @param settings Object - attributes include:\n\t *\t\t\t\t\tshortYearCutoff number - the cutoff year for determining the century (optional)\n\t *\t\t\t\t\tdayNamesShort\tstring[7] - abbreviated names of the days from Sunday (optional)\n\t *\t\t\t\t\tdayNames\t\tstring[7] - names of the days from Sunday (optional)\n\t *\t\t\t\t\tmonthNamesShort string[12] - abbreviated names of the months (optional)\n\t *\t\t\t\t\tmonthNames\t\tstring[12] - names of the months (optional)\n\t * @return Date - the extracted date value or null if value is blank\n\t */\n\tparseDate: function( format, value, settings ) {\n\t\tif ( format == null || value == null ) {\n\t\t\tthrow \"Invalid arguments\";\n\t\t}\n\n\t\tvalue = ( typeof value === \"object\" ? value.toString() : value + \"\" );\n\t\tif ( value === \"\" ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tvar iFormat, dim, extra,\n\t\t\tiValue = 0,\n\t\t\tshortYearCutoffTemp = ( settings ? settings.shortYearCutoff : null ) || this._defaults.shortYearCutoff,\n\t\t\tshortYearCutoff = ( typeof shortYearCutoffTemp !== \"string\" ? shortYearCutoffTemp :\n\t\t\t\tnew Date().getFullYear() % 100 + parseInt( shortYearCutoffTemp, 10 ) ),\n\t\t\tdayNamesShort = ( settings ? settings.dayNamesShort : null ) || this._defaults.dayNamesShort,\n\t\t\tdayNames = ( settings ? settings.dayNames : null ) || this._defaults.dayNames,\n\t\t\tmonthNamesShort = ( settings ? settings.monthNamesShort : null ) || this._defaults.monthNamesShort,\n\t\t\tmonthNames = ( settings ? settings.monthNames : null ) || this._defaults.monthNames,\n\t\t\tyear = -1,\n\t\t\tmonth = -1,\n\t\t\tday = -1,\n\t\t\tdoy = -1,\n\t\t\tliteral = false,\n\t\t\tdate,\n\n\t\t\t// Check whether a format character is doubled\n\t\t\tlookAhead = function( match ) {\n\t\t\t\tvar matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );\n\t\t\t\tif ( matches ) {\n\t\t\t\t\tiFormat++;\n\t\t\t\t}\n\t\t\t\treturn matches;\n\t\t\t},\n\n\t\t\t// Extract a number from the string value\n\t\t\tgetNumber = function( match ) {\n\t\t\t\tvar isDoubled = lookAhead( match ),\n\t\t\t\t\tsize = ( match === \"@\" ? 14 : ( match === \"!\" ? 20 :\n\t\t\t\t\t( match === \"y\" && isDoubled ? 4 : ( match === \"o\" ? 3 : 2 ) ) ) ),\n\t\t\t\t\tminSize = ( match === \"y\" ? size : 1 ),\n\t\t\t\t\tdigits = new RegExp( \"^\\\\d{\" + minSize + \",\" + size + \"}\" ),\n\t\t\t\t\tnum = value.substring( iValue ).match( digits );\n\t\t\t\tif ( !num ) {\n\t\t\t\t\tthrow \"Missing number at position \" + iValue;\n\t\t\t\t}\n\t\t\t\tiValue += num[ 0 ].length;\n\t\t\t\treturn parseInt( num[ 0 ], 10 );\n\t\t\t},\n\n\t\t\t// Extract a name from the string value and convert to an index\n\t\t\tgetName = function( match, shortNames, longNames ) {\n\t\t\t\tvar index = -1,\n\t\t\t\t\tnames = $.map( lookAhead( match ) ? longNames : shortNames, function( v, k ) {\n\t\t\t\t\t\treturn [ [ k, v ] ];\n\t\t\t\t\t} ).sort( function( a, b ) {\n\t\t\t\t\t\treturn -( a[ 1 ].length - b[ 1 ].length );\n\t\t\t\t\t} );\n\n\t\t\t\t$.each( names, function( i, pair ) {\n\t\t\t\t\tvar name = pair[ 1 ];\n\t\t\t\t\tif ( value.substr( iValue, name.length ).toLowerCase() === name.toLowerCase() ) {\n\t\t\t\t\t\tindex = pair[ 0 ];\n\t\t\t\t\t\tiValue += name.length;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\tif ( index !== -1 ) {\n\t\t\t\t\treturn index + 1;\n\t\t\t\t} else {\n\t\t\t\t\tthrow \"Unknown name at position \" + iValue;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// Confirm that a literal character matches the string value\n\t\t\tcheckLiteral = function() {\n\t\t\t\tif ( value.charAt( iValue ) !== format.charAt( iFormat ) ) {\n\t\t\t\t\tthrow \"Unexpected literal at position \" + iValue;\n\t\t\t\t}\n\t\t\t\tiValue++;\n\t\t\t};\n\n\t\tfor ( iFormat = 0; iFormat < format.length; iFormat++ ) {\n\t\t\tif ( literal ) {\n\t\t\t\tif ( format.charAt( iFormat ) === \"'\" && !lookAhead( \"'\" ) ) {\n\t\t\t\t\tliteral = false;\n\t\t\t\t} else {\n\t\t\t\t\tcheckLiteral();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch ( format.charAt( iFormat ) ) {\n\t\t\t\t\tcase \"d\":\n\t\t\t\t\t\tday = getNumber( \"d\" );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"D\":\n\t\t\t\t\t\tgetName( \"D\", dayNamesShort, dayNames );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"o\":\n\t\t\t\t\t\tdoy = getNumber( \"o\" );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"m\":\n\t\t\t\t\t\tmonth = getNumber( \"m\" );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"M\":\n\t\t\t\t\t\tmonth = getName( \"M\", monthNamesShort, monthNames );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"y\":\n\t\t\t\t\t\tyear = getNumber( \"y\" );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"@\":\n\t\t\t\t\t\tdate = new Date( getNumber( \"@\" ) );\n\t\t\t\t\t\tyear = date.getFullYear();\n\t\t\t\t\t\tmonth = date.getMonth() + 1;\n\t\t\t\t\t\tday = date.getDate();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"!\":\n\t\t\t\t\t\tdate = new Date( ( getNumber( \"!\" ) - this._ticksTo1970 ) / 10000 );\n\t\t\t\t\t\tyear = date.getFullYear();\n\t\t\t\t\t\tmonth = date.getMonth() + 1;\n\t\t\t\t\t\tday = date.getDate();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\tif ( lookAhead( \"'\" ) ) {\n\t\t\t\t\t\t\tcheckLiteral();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcheckLiteral();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( iValue < value.length ) {\n\t\t\textra = value.substr( iValue );\n\t\t\tif ( !/^\\s+/.test( extra ) ) {\n\t\t\t\tthrow \"Extra/unparsed characters found in date: \" + extra;\n\t\t\t}\n\t\t}\n\n\t\tif ( year === -1 ) {\n\t\t\tyear = new Date().getFullYear();\n\t\t} else if ( year < 100 ) {\n\t\t\tyear += new Date().getFullYear() - new Date().getFullYear() % 100 +\n\t\t\t\t( year <= shortYearCutoff ? 0 : -100 );\n\t\t}\n\n\t\tif ( doy > -1 ) {\n\t\t\tmonth = 1;\n\t\t\tday = doy;\n\t\t\tdo {\n\t\t\t\tdim = this._getDaysInMonth( year, month - 1 );\n\t\t\t\tif ( day <= dim ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tmonth++;\n\t\t\t\tday -= dim;\n\t\t\t} while ( true );\n\t\t}\n\n\t\tdate = this._daylightSavingAdjust( new Date( year, month - 1, day ) );\n\t\tif ( date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day ) {\n\t\t\tthrow \"Invalid date\"; // E.g. 31/02/00\n\t\t}\n\t\treturn date;\n\t},\n\n\t/* Standard date formats. */\n\tATOM: \"yy-mm-dd\", // RFC 3339 (ISO 8601)\n\tCOOKIE: \"D, dd M yy\",\n\tISO_8601: \"yy-mm-dd\",\n\tRFC_822: \"D, d M y\",\n\tRFC_850: \"DD, dd-M-y\",\n\tRFC_1036: \"D, d M y\",\n\tRFC_1123: \"D, d M yy\",\n\tRFC_2822: \"D, d M yy\",\n\tRSS: \"D, d M y\", // RFC 822\n\tTICKS: \"!\",\n\tTIMESTAMP: \"@\",\n\tW3C: \"yy-mm-dd\", // ISO 8601\n\n\t_ticksTo1970: ( ( ( 1970 - 1 ) * 365 + Math.floor( 1970 / 4 ) - Math.floor( 1970 / 100 ) +\n\t\tMath.floor( 1970 / 400 ) ) * 24 * 60 * 60 * 10000000 ),\n\n\t/* Format a date object into a string value.\n\t * The format can be combinations of the following:\n\t * d - day of month (no leading zero)\n\t * dd - day of month (two digit)\n\t * o - day of year (no leading zeros)\n\t * oo - day of year (three digit)\n\t * D - day name short\n\t * DD - day name long\n\t * m - month of year (no leading zero)\n\t * mm - month of year (two digit)\n\t * M - month name short\n\t * MM - month name long\n\t * y - year (two digit)\n\t * yy - year (four digit)\n\t * @ - Unix timestamp (ms since 01/01/1970)\n\t * ! - Windows ticks (100ns since 01/01/0001)\n\t * \"...\" - literal text\n\t * '' - single quote\n\t *\n\t * @param format string - the desired format of the date\n\t * @param date Date - the date value to format\n\t * @param settings Object - attributes include:\n\t *\t\t\t\t\tdayNamesShort\tstring[7] - abbreviated names of the days from Sunday (optional)\n\t *\t\t\t\t\tdayNames\t\tstring[7] - names of the days from Sunday (optional)\n\t *\t\t\t\t\tmonthNamesShort string[12] - abbreviated names of the months (optional)\n\t *\t\t\t\t\tmonthNames\t\tstring[12] - names of the months (optional)\n\t * @return string - the date in the above format\n\t */\n\tformatDate: function( format, date, settings ) {\n\t\tif ( !date ) {\n\t\t\treturn \"\";\n\t\t}\n\n\t\tvar iFormat,\n\t\t\tdayNamesShort = ( settings ? settings.dayNamesShort : null ) || this._defaults.dayNamesShort,\n\t\t\tdayNames = ( settings ? settings.dayNames : null ) || this._defaults.dayNames,\n\t\t\tmonthNamesShort = ( settings ? settings.monthNamesShort : null ) || this._defaults.monthNamesShort,\n\t\t\tmonthNames = ( settings ? settings.monthNames : null ) || this._defaults.monthNames,\n\n\t\t\t// Check whether a format character is doubled\n\t\t\tlookAhead = function( match ) {\n\t\t\t\tvar matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );\n\t\t\t\tif ( matches ) {\n\t\t\t\t\tiFormat++;\n\t\t\t\t}\n\t\t\t\treturn matches;\n\t\t\t},\n\n\t\t\t// Format a number, with leading zero if necessary\n\t\t\tformatNumber = function( match, value, len ) {\n\t\t\t\tvar num = \"\" + value;\n\t\t\t\tif ( lookAhead( match ) ) {\n\t\t\t\t\twhile ( num.length < len ) {\n\t\t\t\t\t\tnum = \"0\" + num;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn num;\n\t\t\t},\n\n\t\t\t// Format a name, short or long as requested\n\t\t\tformatName = function( match, value, shortNames, longNames ) {\n\t\t\t\treturn ( lookAhead( match ) ? longNames[ value ] : shortNames[ value ] );\n\t\t\t},\n\t\t\toutput = \"\",\n\t\t\tliteral = false;\n\n\t\tif ( date ) {\n\t\t\tfor ( iFormat = 0; iFormat < format.length; iFormat++ ) {\n\t\t\t\tif ( literal ) {\n\t\t\t\t\tif ( format.charAt( iFormat ) === \"'\" && !lookAhead( \"'\" ) ) {\n\t\t\t\t\t\tliteral = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\toutput += format.charAt( iFormat );\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tswitch ( format.charAt( iFormat ) ) {\n\t\t\t\t\t\tcase \"d\":\n\t\t\t\t\t\t\toutput += formatNumber( \"d\", date.getDate(), 2 );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"D\":\n\t\t\t\t\t\t\toutput += formatName( \"D\", date.getDay(), dayNamesShort, dayNames );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"o\":\n\t\t\t\t\t\t\toutput += formatNumber( \"o\",\n\t\t\t\t\t\t\t\tMath.round( ( new Date( date.getFullYear(), date.getMonth(), date.getDate() ).getTime() - new Date( date.getFullYear(), 0, 0 ).getTime() ) / 86400000 ), 3 );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"m\":\n\t\t\t\t\t\t\toutput += formatNumber( \"m\", date.getMonth() + 1, 2 );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"M\":\n\t\t\t\t\t\t\toutput += formatName( \"M\", date.getMonth(), monthNamesShort, monthNames );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"y\":\n\t\t\t\t\t\t\toutput += ( lookAhead( \"y\" ) ? date.getFullYear() :\n\t\t\t\t\t\t\t\t( date.getFullYear() % 100 < 10 ? \"0\" : \"\" ) + date.getFullYear() % 100 );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"@\":\n\t\t\t\t\t\t\toutput += date.getTime();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"!\":\n\t\t\t\t\t\t\toutput += date.getTime() * 10000 + this._ticksTo1970;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\t\tif ( lookAhead( \"'\" ) ) {\n\t\t\t\t\t\t\t\toutput += \"'\";\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\toutput += format.charAt( iFormat );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t},\n\n\t/* Extract all possible characters from the date format. */\n\t_possibleChars: function( format ) {\n\t\tvar iFormat,\n\t\t\tchars = \"\",\n\t\t\tliteral = false,\n\n\t\t\t// Check whether a format character is doubled\n\t\t\tlookAhead = function( match ) {\n\t\t\t\tvar matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );\n\t\t\t\tif ( matches ) {\n\t\t\t\t\tiFormat++;\n\t\t\t\t}\n\t\t\t\treturn matches;\n\t\t\t};\n\n\t\tfor ( iFormat = 0; iFormat < format.length; iFormat++ ) {\n\t\t\tif ( literal ) {\n\t\t\t\tif ( format.charAt( iFormat ) === \"'\" && !lookAhead( \"'\" ) ) {\n\t\t\t\t\tliteral = false;\n\t\t\t\t} else {\n\t\t\t\t\tchars += format.charAt( iFormat );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tswitch ( format.charAt( iFormat ) ) {\n\t\t\t\t\tcase \"d\": case \"m\": case \"y\": case \"@\":\n\t\t\t\t\t\tchars += \"0123456789\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"D\": case \"M\":\n\t\t\t\t\t\treturn null; // Accept anything\n\t\t\t\t\tcase \"'\":\n\t\t\t\t\t\tif ( lookAhead( \"'\" ) ) {\n\t\t\t\t\t\t\tchars += \"'\";\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tliteral = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tchars += format.charAt( iFormat );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn chars;\n\t},\n\n\t/* Get a setting value, defaulting if necessary. */\n\t_get: function( inst, name ) {\n\t\treturn inst.settings[ name ] !== undefined ?\n\t\t\tinst.settings[ name ] : this._defaults[ name ];\n\t},\n\n\t/* Parse existing date and initialise date picker. */\n\t_setDateFromField: function( inst, noDefault ) {\n\t\tif ( inst.input.val() === inst.lastVal ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar dateFormat = this._get( inst, \"dateFormat\" ),\n\t\t\tdates = inst.lastVal = inst.input ? inst.input.val() : null,\n\t\t\tdefaultDate = this._getDefaultDate( inst ),\n\t\t\tdate = defaultDate,\n\t\t\tsettings = this._getFormatConfig( inst );\n\n\t\ttry {\n\t\t\tdate = this.parseDate( dateFormat, dates, settings ) || defaultDate;\n\t\t} catch ( event ) {\n\t\t\tdates = ( noDefault ? \"\" : dates );\n\t\t}\n\t\tinst.selectedDay = date.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\tinst.currentDay = ( dates ? date.getDate() : 0 );\n\t\tinst.currentMonth = ( dates ? date.getMonth() : 0 );\n\t\tinst.currentYear = ( dates ? date.getFullYear() : 0 );\n\t\tthis._adjustInstDate( inst );\n\t},\n\n\t/* Retrieve the default date shown on opening. */\n\t_getDefaultDate: function( inst ) {\n\t\treturn this._restrictMinMax( inst,\n\t\t\tthis._determineDate( inst, this._get( inst, \"defaultDate\" ), new Date() ) );\n\t},\n\n\t/* A date may be specified as an exact value or a relative one. */\n\t_determineDate: function( inst, date, defaultDate ) {\n\t\tvar offsetNumeric = function( offset ) {\n\t\t\t\tvar date = new Date();\n\t\t\t\tdate.setDate( date.getDate() + offset );\n\t\t\t\treturn date;\n\t\t\t},\n\t\t\toffsetString = function( offset ) {\n\t\t\t\ttry {\n\t\t\t\t\treturn $.datepicker.parseDate( $.datepicker._get( inst, \"dateFormat\" ),\n\t\t\t\t\t\toffset, $.datepicker._getFormatConfig( inst ) );\n\t\t\t\t}\n\t\t\t\tcatch ( e ) {\n\n\t\t\t\t\t// Ignore\n\t\t\t\t}\n\n\t\t\t\tvar date = ( offset.toLowerCase().match( /^c/ ) ?\n\t\t\t\t\t$.datepicker._getDate( inst ) : null ) || new Date(),\n\t\t\t\t\tyear = date.getFullYear(),\n\t\t\t\t\tmonth = date.getMonth(),\n\t\t\t\t\tday = date.getDate(),\n\t\t\t\t\tpattern = /([+\\-]?[0-9]+)\\s*(d|D|w|W|m|M|y|Y)?/g,\n\t\t\t\t\tmatches = pattern.exec( offset );\n\n\t\t\t\twhile ( matches ) {\n\t\t\t\t\tswitch ( matches[ 2 ] || \"d\" ) {\n\t\t\t\t\t\tcase \"d\" : case \"D\" :\n\t\t\t\t\t\t\tday += parseInt( matches[ 1 ], 10 ); break;\n\t\t\t\t\t\tcase \"w\" : case \"W\" :\n\t\t\t\t\t\t\tday += parseInt( matches[ 1 ], 10 ) * 7; break;\n\t\t\t\t\t\tcase \"m\" : case \"M\" :\n\t\t\t\t\t\t\tmonth += parseInt( matches[ 1 ], 10 );\n\t\t\t\t\t\t\tday = Math.min( day, $.datepicker._getDaysInMonth( year, month ) );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"y\": case \"Y\" :\n\t\t\t\t\t\t\tyear += parseInt( matches[ 1 ], 10 );\n\t\t\t\t\t\t\tday = Math.min( day, $.datepicker._getDaysInMonth( year, month ) );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tmatches = pattern.exec( offset );\n\t\t\t\t}\n\t\t\t\treturn new Date( year, month, day );\n\t\t\t},\n\t\t\tnewDate = ( date == null || date === \"\" ? defaultDate : ( typeof date === \"string\" ? offsetString( date ) :\n\t\t\t\t( typeof date === \"number\" ? ( isNaN( date ) ? defaultDate : offsetNumeric( date ) ) : new Date( date.getTime() ) ) ) );\n\n\t\tnewDate = ( newDate && newDate.toString() === \"Invalid Date\" ? defaultDate : newDate );\n\t\tif ( newDate ) {\n\t\t\tnewDate.setHours( 0 );\n\t\t\tnewDate.setMinutes( 0 );\n\t\t\tnewDate.setSeconds( 0 );\n\t\t\tnewDate.setMilliseconds( 0 );\n\t\t}\n\t\treturn this._daylightSavingAdjust( newDate );\n\t},\n\n\t/* Handle switch to/from daylight saving.\n\t * Hours may be non-zero on daylight saving cut-over:\n\t * > 12 when midnight changeover, but then cannot generate\n\t * midnight datetime, so jump to 1AM, otherwise reset.\n\t * @param date (Date) the date to check\n\t * @return (Date) the corrected date\n\t */\n\t_daylightSavingAdjust: function( date ) {\n\t\tif ( !date ) {\n\t\t\treturn null;\n\t\t}\n\t\tdate.setHours( date.getHours() > 12 ? date.getHours() + 2 : 0 );\n\t\treturn date;\n\t},\n\n\t/* Set the date(s) directly. */\n\t_setDate: function( inst, date, noChange ) {\n\t\tvar clear = !date,\n\t\t\torigMonth = inst.selectedMonth,\n\t\t\torigYear = inst.selectedYear,\n\t\t\tnewDate = this._restrictMinMax( inst, this._determineDate( inst, date, new Date() ) );\n\n\t\tinst.selectedDay = inst.currentDay = newDate.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();\n\t\tinst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();\n\t\tif ( ( origMonth !== inst.selectedMonth || origYear !== inst.selectedYear ) && !noChange ) {\n\t\t\tthis._notifyChange( inst );\n\t\t}\n\t\tthis._adjustInstDate( inst );\n\t\tif ( inst.input ) {\n\t\t\tinst.input.val( clear ? \"\" : this._formatDate( inst ) );\n\t\t}\n\t},\n\n\t/* Retrieve the date(s) directly. */\n\t_getDate: function( inst ) {\n\t\tvar startDate = ( !inst.currentYear || ( inst.input && inst.input.val() === \"\" ) ? null :\n\t\t\tthis._daylightSavingAdjust( new Date(\n\t\t\tinst.currentYear, inst.currentMonth, inst.currentDay ) ) );\n\t\t\treturn startDate;\n\t},\n\n\t/* Attach the onxxx handlers. These are declared statically so\n\t * they work with static code transformers like Caja.\n\t */\n\t_attachHandlers: function( inst ) {\n\t\tvar stepMonths = this._get( inst, \"stepMonths\" ),\n\t\t\tid = \"#\" + inst.id.replace( /\\\\\\\\/g, \"\\\\\" );\n\t\tinst.dpDiv.find( \"[data-handler]\" ).map( function() {\n\t\t\tvar handler = {\n\t\t\t\tprev: function() {\n\t\t\t\t\t$.datepicker._adjustDate( id, -stepMonths, \"M\" );\n\t\t\t\t},\n\t\t\t\tnext: function() {\n\t\t\t\t\t$.datepicker._adjustDate( id, +stepMonths, \"M\" );\n\t\t\t\t},\n\t\t\t\thide: function() {\n\t\t\t\t\t$.datepicker._hideDatepicker();\n\t\t\t\t},\n\t\t\t\ttoday: function() {\n\t\t\t\t\t$.datepicker._gotoToday( id );\n\t\t\t\t},\n\t\t\t\tselectDay: function() {\n\t\t\t\t\t$.datepicker._selectDay( id, +this.getAttribute( \"data-month\" ), +this.getAttribute( \"data-year\" ), this );\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselectMonth: function() {\n\t\t\t\t\t$.datepicker._selectMonthYear( id, this, \"M\" );\n\t\t\t\t\treturn false;\n\t\t\t\t},\n\t\t\t\tselectYear: function() {\n\t\t\t\t\t$.datepicker._selectMonthYear( id, this, \"Y\" );\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t};\n\t\t\t$( this ).on( this.getAttribute( \"data-event\" ), handler[ this.getAttribute( \"data-handler\" ) ] );\n\t\t} );\n\t},\n\n\t/* Generate the HTML for the current state of the date picker. */\n\t_generateHTML: function( inst ) {\n\t\tvar maxDraw, prevText, prev, nextText, next, currentText, gotoDate,\n\t\t\tcontrols, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin,\n\t\t\tmonthNames, monthNamesShort, beforeShowDay, showOtherMonths,\n\t\t\tselectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate,\n\t\t\tcornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows,\n\t\t\tprintDate, dRow, tbody, daySettings, otherMonth, unselectable,\n\t\t\ttempDate = new Date(),\n\t\t\ttoday = this._daylightSavingAdjust(\n\t\t\t\tnew Date( tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate() ) ), // clear time\n\t\t\tisRTL = this._get( inst, \"isRTL\" ),\n\t\t\tshowButtonPanel = this._get( inst, \"showButtonPanel\" ),\n\t\t\thideIfNoPrevNext = this._get( inst, \"hideIfNoPrevNext\" ),\n\t\t\tnavigationAsDateFormat = this._get( inst, \"navigationAsDateFormat\" ),\n\t\t\tnumMonths = this._getNumberOfMonths( inst ),\n\t\t\tshowCurrentAtPos = this._get( inst, \"showCurrentAtPos\" ),\n\t\t\tstepMonths = this._get( inst, \"stepMonths\" ),\n\t\t\tisMultiMonth = ( numMonths[ 0 ] !== 1 || numMonths[ 1 ] !== 1 ),\n\t\t\tcurrentDate = this._daylightSavingAdjust( ( !inst.currentDay ? new Date( 9999, 9, 9 ) :\n\t\t\t\tnew Date( inst.currentYear, inst.currentMonth, inst.currentDay ) ) ),\n\t\t\tminDate = this._getMinMaxDate( inst, \"min\" ),\n\t\t\tmaxDate = this._getMinMaxDate( inst, \"max\" ),\n\t\t\tdrawMonth = inst.drawMonth - showCurrentAtPos,\n\t\t\tdrawYear = inst.drawYear;\n\n\t\tif ( drawMonth < 0 ) {\n\t\t\tdrawMonth += 12;\n\t\t\tdrawYear--;\n\t\t}\n\t\tif ( maxDate ) {\n\t\t\tmaxDraw = this._daylightSavingAdjust( new Date( maxDate.getFullYear(),\n\t\t\t\tmaxDate.getMonth() - ( numMonths[ 0 ] * numMonths[ 1 ] ) + 1, maxDate.getDate() ) );\n\t\t\tmaxDraw = ( minDate && maxDraw < minDate ? minDate : maxDraw );\n\t\t\twhile ( this._daylightSavingAdjust( new Date( drawYear, drawMonth, 1 ) ) > maxDraw ) {\n\t\t\t\tdrawMonth--;\n\t\t\t\tif ( drawMonth < 0 ) {\n\t\t\t\t\tdrawMonth = 11;\n\t\t\t\t\tdrawYear--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tinst.drawMonth = drawMonth;\n\t\tinst.drawYear = drawYear;\n\n\t\tprevText = this._get( inst, \"prevText\" );\n\t\tprevText = ( !navigationAsDateFormat ? prevText : this.formatDate( prevText,\n\t\t\tthis._daylightSavingAdjust( new Date( drawYear, drawMonth - stepMonths, 1 ) ),\n\t\t\tthis._getFormatConfig( inst ) ) );\n\n\t\tprev = ( this._canAdjustMonth( inst, -1, drawYear, drawMonth ) ?\n\t\t\t\"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click'\" +\n\t\t\t\" title='\" + prevText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + ( isRTL ? \"e\" : \"w\" ) + \"'>\" + prevText + \"</span></a>\" :\n\t\t\t( hideIfNoPrevNext ? \"\" : \"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='\" + prevText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + ( isRTL ? \"e\" : \"w\" ) + \"'>\" + prevText + \"</span></a>\" ) );\n\n\t\tnextText = this._get( inst, \"nextText\" );\n\t\tnextText = ( !navigationAsDateFormat ? nextText : this.formatDate( nextText,\n\t\t\tthis._daylightSavingAdjust( new Date( drawYear, drawMonth + stepMonths, 1 ) ),\n\t\t\tthis._getFormatConfig( inst ) ) );\n\n\t\tnext = ( this._canAdjustMonth( inst, +1, drawYear, drawMonth ) ?\n\t\t\t\"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click'\" +\n\t\t\t\" title='\" + nextText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + ( isRTL ? \"w\" : \"e\" ) + \"'>\" + nextText + \"</span></a>\" :\n\t\t\t( hideIfNoPrevNext ? \"\" : \"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='\" + nextText + \"'><span class='ui-icon ui-icon-circle-triangle-\" + ( isRTL ? \"w\" : \"e\" ) + \"'>\" + nextText + \"</span></a>\" ) );\n\n\t\tcurrentText = this._get( inst, \"currentText\" );\n\t\tgotoDate = ( this._get( inst, \"gotoCurrent\" ) && inst.currentDay ? currentDate : today );\n\t\tcurrentText = ( !navigationAsDateFormat ? currentText :\n\t\t\tthis.formatDate( currentText, gotoDate, this._getFormatConfig( inst ) ) );\n\n\t\tcontrols = ( !inst.inline ? \"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>\" +\n\t\t\tthis._get( inst, \"closeText\" ) + \"</button>\" : \"\" );\n\n\t\tbuttonPanel = ( showButtonPanel ) ? \"<div class='ui-datepicker-buttonpane ui-widget-content'>\" + ( isRTL ? controls : \"\" ) +\n\t\t\t( this._isInRange( inst, gotoDate ) ? \"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'\" +\n\t\t\t\">\" + currentText + \"</button>\" : \"\" ) + ( isRTL ? \"\" : controls ) + \"</div>\" : \"\";\n\n\t\tfirstDay = parseInt( this._get( inst, \"firstDay\" ), 10 );\n\t\tfirstDay = ( isNaN( firstDay ) ? 0 : firstDay );\n\n\t\tshowWeek = this._get( inst, \"showWeek\" );\n\t\tdayNames = this._get( inst, \"dayNames\" );\n\t\tdayNamesMin = this._get( inst, \"dayNamesMin\" );\n\t\tmonthNames = this._get( inst, \"monthNames\" );\n\t\tmonthNamesShort = this._get( inst, \"monthNamesShort\" );\n\t\tbeforeShowDay = this._get( inst, \"beforeShowDay\" );\n\t\tshowOtherMonths = this._get( inst, \"showOtherMonths\" );\n\t\tselectOtherMonths = this._get( inst, \"selectOtherMonths\" );\n\t\tdefaultDate = this._getDefaultDate( inst );\n\t\thtml = \"\";\n\n\t\tfor ( row = 0; row < numMonths[ 0 ]; row++ ) {\n\t\t\tgroup = \"\";\n\t\t\tthis.maxRows = 4;\n\t\t\tfor ( col = 0; col < numMonths[ 1 ]; col++ ) {\n\t\t\t\tselectedDate = this._daylightSavingAdjust( new Date( drawYear, drawMonth, inst.selectedDay ) );\n\t\t\t\tcornerClass = \" ui-corner-all\";\n\t\t\t\tcalender = \"\";\n\t\t\t\tif ( isMultiMonth ) {\n\t\t\t\t\tcalender += \"<div class='ui-datepicker-group\";\n\t\t\t\t\tif ( numMonths[ 1 ] > 1 ) {\n\t\t\t\t\t\tswitch ( col ) {\n\t\t\t\t\t\t\tcase 0: calender += \" ui-datepicker-group-first\";\n\t\t\t\t\t\t\t\tcornerClass = \" ui-corner-\" + ( isRTL ? \"right\" : \"left\" ); break;\n\t\t\t\t\t\t\tcase numMonths[ 1 ] - 1: calender += \" ui-datepicker-group-last\";\n\t\t\t\t\t\t\t\tcornerClass = \" ui-corner-\" + ( isRTL ? \"left\" : \"right\" ); break;\n\t\t\t\t\t\t\tdefault: calender += \" ui-datepicker-group-middle\"; cornerClass = \"\"; break;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcalender += \"'>\";\n\t\t\t\t}\n\t\t\t\tcalender += \"<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix\" + cornerClass + \"'>\" +\n\t\t\t\t\t( /all|left/.test( cornerClass ) && row === 0 ? ( isRTL ? next : prev ) : \"\" ) +\n\t\t\t\t\t( /all|right/.test( cornerClass ) && row === 0 ? ( isRTL ? prev : next ) : \"\" ) +\n\t\t\t\t\tthis._generateMonthYearHeader( inst, drawMonth, drawYear, minDate, maxDate,\n\t\t\t\t\trow > 0 || col > 0, monthNames, monthNamesShort ) + // draw month headers\n\t\t\t\t\t\"</div><table class='ui-datepicker-calendar'><thead>\" +\n\t\t\t\t\t\"<tr>\";\n\t\t\t\tthead = ( showWeek ? \"<th class='ui-datepicker-week-col'>\" + this._get( inst, \"weekHeader\" ) + \"</th>\" : \"\" );\n\t\t\t\tfor ( dow = 0; dow < 7; dow++ ) { // days of the week\n\t\t\t\t\tday = ( dow + firstDay ) % 7;\n\t\t\t\t\tthead += \"<th scope='col'\" + ( ( dow + firstDay + 6 ) % 7 >= 5 ? \" class='ui-datepicker-week-end'\" : \"\" ) + \">\" +\n\t\t\t\t\t\t\"<span title='\" + dayNames[ day ] + \"'>\" + dayNamesMin[ day ] + \"</span></th>\";\n\t\t\t\t}\n\t\t\t\tcalender += thead + \"</tr></thead><tbody>\";\n\t\t\t\tdaysInMonth = this._getDaysInMonth( drawYear, drawMonth );\n\t\t\t\tif ( drawYear === inst.selectedYear && drawMonth === inst.selectedMonth ) {\n\t\t\t\t\tinst.selectedDay = Math.min( inst.selectedDay, daysInMonth );\n\t\t\t\t}\n\t\t\t\tleadDays = ( this._getFirstDayOfMonth( drawYear, drawMonth ) - firstDay + 7 ) % 7;\n\t\t\t\tcurRows = Math.ceil( ( leadDays + daysInMonth ) / 7 ); // calculate the number of rows to generate\n\t\t\t\tnumRows = ( isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows ); //If multiple months, use the higher number of rows (see #7043)\n\t\t\t\tthis.maxRows = numRows;\n\t\t\t\tprintDate = this._daylightSavingAdjust( new Date( drawYear, drawMonth, 1 - leadDays ) );\n\t\t\t\tfor ( dRow = 0; dRow < numRows; dRow++ ) { // create date picker rows\n\t\t\t\t\tcalender += \"<tr>\";\n\t\t\t\t\ttbody = ( !showWeek ? \"\" : \"<td class='ui-datepicker-week-col'>\" +\n\t\t\t\t\t\tthis._get( inst, \"calculateWeek\" )( printDate ) + \"</td>\" );\n\t\t\t\t\tfor ( dow = 0; dow < 7; dow++ ) { // create date picker days\n\t\t\t\t\t\tdaySettings = ( beforeShowDay ?\n\t\t\t\t\t\t\tbeforeShowDay.apply( ( inst.input ? inst.input[ 0 ] : null ), [ printDate ] ) : [ true, \"\" ] );\n\t\t\t\t\t\totherMonth = ( printDate.getMonth() !== drawMonth );\n\t\t\t\t\t\tunselectable = ( otherMonth && !selectOtherMonths ) || !daySettings[ 0 ] ||\n\t\t\t\t\t\t\t( minDate && printDate < minDate ) || ( maxDate && printDate > maxDate );\n\t\t\t\t\t\ttbody += \"<td class='\" +\n\t\t\t\t\t\t\t( ( dow + firstDay + 6 ) % 7 >= 5 ? \" ui-datepicker-week-end\" : \"\" ) + // highlight weekends\n\t\t\t\t\t\t\t( otherMonth ? \" ui-datepicker-other-month\" : \"\" ) + // highlight days from other months\n\t\t\t\t\t\t\t( ( printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent ) || // user pressed key\n\t\t\t\t\t\t\t( defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime() ) ?\n\n\t\t\t\t\t\t\t// or defaultDate is current printedDate and defaultDate is selectedDate\n\t\t\t\t\t\t\t\" \" + this._dayOverClass : \"\" ) + // highlight selected day\n\t\t\t\t\t\t\t( unselectable ? \" \" + this._unselectableClass + \" ui-state-disabled\" : \"\" ) + // highlight unselectable days\n\t\t\t\t\t\t\t( otherMonth && !showOtherMonths ? \"\" : \" \" + daySettings[ 1 ] + // highlight custom dates\n\t\t\t\t\t\t\t( printDate.getTime() === currentDate.getTime() ? \" \" + this._currentClass : \"\" ) + // highlight selected day\n\t\t\t\t\t\t\t( printDate.getTime() === today.getTime() ? \" ui-datepicker-today\" : \"\" ) ) + \"'\" + // highlight today (if different)\n\t\t\t\t\t\t\t( ( !otherMonth || showOtherMonths ) && daySettings[ 2 ] ? \" title='\" + daySettings[ 2 ].replace( /'/g, \"'\" ) + \"'\" : \"\" ) + // cell title\n\t\t\t\t\t\t\t( unselectable ? \"\" : \" data-handler='selectDay' data-event='click' data-month='\" + printDate.getMonth() + \"' data-year='\" + printDate.getFullYear() + \"'\" ) + \">\" + // actions\n\t\t\t\t\t\t\t( otherMonth && !showOtherMonths ? \" \" : // display for other months\n\t\t\t\t\t\t\t( unselectable ? \"<span class='ui-state-default'>\" + printDate.getDate() + \"</span>\" : \"<a class='ui-state-default\" +\n\t\t\t\t\t\t\t( printDate.getTime() === today.getTime() ? \" ui-state-highlight\" : \"\" ) +\n\t\t\t\t\t\t\t( printDate.getTime() === currentDate.getTime() ? \" ui-state-active\" : \"\" ) + // highlight selected day\n\t\t\t\t\t\t\t( otherMonth ? \" ui-priority-secondary\" : \"\" ) + // distinguish dates from other months\n\t\t\t\t\t\t\t\"' href='#'>\" + printDate.getDate() + \"</a>\" ) ) + \"</td>\"; // display selectable date\n\t\t\t\t\t\tprintDate.setDate( printDate.getDate() + 1 );\n\t\t\t\t\t\tprintDate = this._daylightSavingAdjust( printDate );\n\t\t\t\t\t}\n\t\t\t\t\tcalender += tbody + \"</tr>\";\n\t\t\t\t}\n\t\t\t\tdrawMonth++;\n\t\t\t\tif ( drawMonth > 11 ) {\n\t\t\t\t\tdrawMonth = 0;\n\t\t\t\t\tdrawYear++;\n\t\t\t\t}\n\t\t\t\tcalender += \"</tbody></table>\" + ( isMultiMonth ? \"</div>\" +\n\t\t\t\t\t\t\t( ( numMonths[ 0 ] > 0 && col === numMonths[ 1 ] - 1 ) ? \"<div class='ui-datepicker-row-break'></div>\" : \"\" ) : \"\" );\n\t\t\t\tgroup += calender;\n\t\t\t}\n\t\t\thtml += group;\n\t\t}\n\t\thtml += buttonPanel;\n\t\tinst._keyEvent = false;\n\t\treturn html;\n\t},\n\n\t/* Generate the month and year header. */\n\t_generateMonthYearHeader: function( inst, drawMonth, drawYear, minDate, maxDate,\n\t\t\tsecondary, monthNames, monthNamesShort ) {\n\n\t\tvar inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear,\n\t\t\tchangeMonth = this._get( inst, \"changeMonth\" ),\n\t\t\tchangeYear = this._get( inst, \"changeYear\" ),\n\t\t\tshowMonthAfterYear = this._get( inst, \"showMonthAfterYear\" ),\n\t\t\thtml = \"<div class='ui-datepicker-title'>\",\n\t\t\tmonthHtml = \"\";\n\n\t\t// Month selection\n\t\tif ( secondary || !changeMonth ) {\n\t\t\tmonthHtml += \"<span class='ui-datepicker-month'>\" + monthNames[ drawMonth ] + \"</span>\";\n\t\t} else {\n\t\t\tinMinYear = ( minDate && minDate.getFullYear() === drawYear );\n\t\t\tinMaxYear = ( maxDate && maxDate.getFullYear() === drawYear );\n\t\t\tmonthHtml += \"<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>\";\n\t\t\tfor ( month = 0; month < 12; month++ ) {\n\t\t\t\tif ( ( !inMinYear || month >= minDate.getMonth() ) && ( !inMaxYear || month <= maxDate.getMonth() ) ) {\n\t\t\t\t\tmonthHtml += \"<option value='\" + month + \"'\" +\n\t\t\t\t\t\t( month === drawMonth ? \" selected='selected'\" : \"\" ) +\n\t\t\t\t\t\t\">\" + monthNamesShort[ month ] + \"</option>\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tmonthHtml += \"</select>\";\n\t\t}\n\n\t\tif ( !showMonthAfterYear ) {\n\t\t\thtml += monthHtml + ( secondary || !( changeMonth && changeYear ) ? \" \" : \"\" );\n\t\t}\n\n\t\t// Year selection\n\t\tif ( !inst.yearshtml ) {\n\t\t\tinst.yearshtml = \"\";\n\t\t\tif ( secondary || !changeYear ) {\n\t\t\t\thtml += \"<span class='ui-datepicker-year'>\" + drawYear + \"</span>\";\n\t\t\t} else {\n\n\t\t\t\t// determine range of years to display\n\t\t\t\tyears = this._get( inst, \"yearRange\" ).split( \":\" );\n\t\t\t\tthisYear = new Date().getFullYear();\n\t\t\t\tdetermineYear = function( value ) {\n\t\t\t\t\tvar year = ( value.match( /c[+\\-].*/ ) ? drawYear + parseInt( value.substring( 1 ), 10 ) :\n\t\t\t\t\t\t( value.match( /[+\\-].*/ ) ? thisYear + parseInt( value, 10 ) :\n\t\t\t\t\t\tparseInt( value, 10 ) ) );\n\t\t\t\t\treturn ( isNaN( year ) ? thisYear : year );\n\t\t\t\t};\n\t\t\t\tyear = determineYear( years[ 0 ] );\n\t\t\t\tendYear = Math.max( year, determineYear( years[ 1 ] || \"\" ) );\n\t\t\t\tyear = ( minDate ? Math.max( year, minDate.getFullYear() ) : year );\n\t\t\t\tendYear = ( maxDate ? Math.min( endYear, maxDate.getFullYear() ) : endYear );\n\t\t\t\tinst.yearshtml += \"<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>\";\n\t\t\t\tfor ( ; year <= endYear; year++ ) {\n\t\t\t\t\tinst.yearshtml += \"<option value='\" + year + \"'\" +\n\t\t\t\t\t\t( year === drawYear ? \" selected='selected'\" : \"\" ) +\n\t\t\t\t\t\t\">\" + year + \"</option>\";\n\t\t\t\t}\n\t\t\t\tinst.yearshtml += \"</select>\";\n\n\t\t\t\thtml += inst.yearshtml;\n\t\t\t\tinst.yearshtml = null;\n\t\t\t}\n\t\t}\n\n\t\thtml += this._get( inst, \"yearSuffix\" );\n\t\tif ( showMonthAfterYear ) {\n\t\t\thtml += ( secondary || !( changeMonth && changeYear ) ? \" \" : \"\" ) + monthHtml;\n\t\t}\n\t\thtml += \"</div>\"; // Close datepicker_header\n\t\treturn html;\n\t},\n\n\t/* Adjust one of the date sub-fields. */\n\t_adjustInstDate: function( inst, offset, period ) {\n\t\tvar year = inst.selectedYear + ( period === \"Y\" ? offset : 0 ),\n\t\t\tmonth = inst.selectedMonth + ( period === \"M\" ? offset : 0 ),\n\t\t\tday = Math.min( inst.selectedDay, this._getDaysInMonth( year, month ) ) + ( period === \"D\" ? offset : 0 ),\n\t\t\tdate = this._restrictMinMax( inst, this._daylightSavingAdjust( new Date( year, month, day ) ) );\n\n\t\tinst.selectedDay = date.getDate();\n\t\tinst.drawMonth = inst.selectedMonth = date.getMonth();\n\t\tinst.drawYear = inst.selectedYear = date.getFullYear();\n\t\tif ( period === \"M\" || period === \"Y\" ) {\n\t\t\tthis._notifyChange( inst );\n\t\t}\n\t},\n\n\t/* Ensure a date is within any min/max bounds. */\n\t_restrictMinMax: function( inst, date ) {\n\t\tvar minDate = this._getMinMaxDate( inst, \"min\" ),\n\t\t\tmaxDate = this._getMinMaxDate( inst, \"max\" ),\n\t\t\tnewDate = ( minDate && date < minDate ? minDate : date );\n\t\treturn ( maxDate && newDate > maxDate ? maxDate : newDate );\n\t},\n\n\t/* Notify change of month/year. */\n\t_notifyChange: function( inst ) {\n\t\tvar onChange = this._get( inst, \"onChangeMonthYear\" );\n\t\tif ( onChange ) {\n\t\t\tonChange.apply( ( inst.input ? inst.input[ 0 ] : null ),\n\t\t\t\t[ inst.selectedYear, inst.selectedMonth + 1, inst ] );\n\t\t}\n\t},\n\n\t/* Determine the number of months to show. */\n\t_getNumberOfMonths: function( inst ) {\n\t\tvar numMonths = this._get( inst, \"numberOfMonths\" );\n\t\treturn ( numMonths == null ? [ 1, 1 ] : ( typeof numMonths === \"number\" ? [ 1, numMonths ] : numMonths ) );\n\t},\n\n\t/* Determine the current maximum date - ensure no time components are set. */\n\t_getMinMaxDate: function( inst, minMax ) {\n\t\treturn this._determineDate( inst, this._get( inst, minMax + \"Date\" ), null );\n\t},\n\n\t/* Find the number of days in a given month. */\n\t_getDaysInMonth: function( year, month ) {\n\t\treturn 32 - this._daylightSavingAdjust( new Date( year, month, 32 ) ).getDate();\n\t},\n\n\t/* Find the day of the week of the first of a month. */\n\t_getFirstDayOfMonth: function( year, month ) {\n\t\treturn new Date( year, month, 1 ).getDay();\n\t},\n\n\t/* Determines if we should allow a \"next/prev\" month display change. */\n\t_canAdjustMonth: function( inst, offset, curYear, curMonth ) {\n\t\tvar numMonths = this._getNumberOfMonths( inst ),\n\t\t\tdate = this._daylightSavingAdjust( new Date( curYear,\n\t\t\tcurMonth + ( offset < 0 ? offset : numMonths[ 0 ] * numMonths[ 1 ] ), 1 ) );\n\n\t\tif ( offset < 0 ) {\n\t\t\tdate.setDate( this._getDaysInMonth( date.getFullYear(), date.getMonth() ) );\n\t\t}\n\t\treturn this._isInRange( inst, date );\n\t},\n\n\t/* Is the given date in the accepted range? */\n\t_isInRange: function( inst, date ) {\n\t\tvar yearSplit, currentYear,\n\t\t\tminDate = this._getMinMaxDate( inst, \"min\" ),\n\t\t\tmaxDate = this._getMinMaxDate( inst, \"max\" ),\n\t\t\tminYear = null,\n\t\t\tmaxYear = null,\n\t\t\tyears = this._get( inst, \"yearRange\" );\n\t\t\tif ( years ) {\n\t\t\t\tyearSplit = years.split( \":\" );\n\t\t\t\tcurrentYear = new Date().getFullYear();\n\t\t\t\tminYear = parseInt( yearSplit[ 0 ], 10 );\n\t\t\t\tmaxYear = parseInt( yearSplit[ 1 ], 10 );\n\t\t\t\tif ( yearSplit[ 0 ].match( /[+\\-].*/ ) ) {\n\t\t\t\t\tminYear += currentYear;\n\t\t\t\t}\n\t\t\t\tif ( yearSplit[ 1 ].match( /[+\\-].*/ ) ) {\n\t\t\t\t\tmaxYear += currentYear;\n\t\t\t\t}\n\t\t\t}\n\n\t\treturn ( ( !minDate || date.getTime() >= minDate.getTime() ) &&\n\t\t\t( !maxDate || date.getTime() <= maxDate.getTime() ) &&\n\t\t\t( !minYear || date.getFullYear() >= minYear ) &&\n\t\t\t( !maxYear || date.getFullYear() <= maxYear ) );\n\t},\n\n\t/* Provide the configuration settings for formatting/parsing. */\n\t_getFormatConfig: function( inst ) {\n\t\tvar shortYearCutoff = this._get( inst, \"shortYearCutoff\" );\n\t\tshortYearCutoff = ( typeof shortYearCutoff !== \"string\" ? shortYearCutoff :\n\t\t\tnew Date().getFullYear() % 100 + parseInt( shortYearCutoff, 10 ) );\n\t\treturn { shortYearCutoff: shortYearCutoff,\n\t\t\tdayNamesShort: this._get( inst, \"dayNamesShort\" ), dayNames: this._get( inst, \"dayNames\" ),\n\t\t\tmonthNamesShort: this._get( inst, \"monthNamesShort\" ), monthNames: this._get( inst, \"monthNames\" ) };\n\t},\n\n\t/* Format the given date for display. */\n\t_formatDate: function( inst, day, month, year ) {\n\t\tif ( !day ) {\n\t\t\tinst.currentDay = inst.selectedDay;\n\t\t\tinst.currentMonth = inst.selectedMonth;\n\t\t\tinst.currentYear = inst.selectedYear;\n\t\t}\n\t\tvar date = ( day ? ( typeof day === \"object\" ? day :\n\t\t\tthis._daylightSavingAdjust( new Date( year, month, day ) ) ) :\n\t\t\tthis._daylightSavingAdjust( new Date( inst.currentYear, inst.currentMonth, inst.currentDay ) ) );\n\t\treturn this.formatDate( this._get( inst, \"dateFormat\" ), date, this._getFormatConfig( inst ) );\n\t}\n} );\n\n/*\n * Bind hover events for datepicker elements.\n * Done via delegate so the binding only occurs once in the lifetime of the parent div.\n * Global datepicker_instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.\n */\nfunction datepicker_bindHover( dpDiv ) {\n\tvar selector = \"button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a\";\n\treturn dpDiv.on( \"mouseout\", selector, function() {\n\t\t\t$( this ).removeClass( \"ui-state-hover\" );\n\t\t\tif ( this.className.indexOf( \"ui-datepicker-prev\" ) !== -1 ) {\n\t\t\t\t$( this ).removeClass( \"ui-datepicker-prev-hover\" );\n\t\t\t}\n\t\t\tif ( this.className.indexOf( \"ui-datepicker-next\" ) !== -1 ) {\n\t\t\t\t$( this ).removeClass( \"ui-datepicker-next-hover\" );\n\t\t\t}\n\t\t} )\n\t\t.on( \"mouseover\", selector, datepicker_handleMouseover );\n}\n\nfunction datepicker_handleMouseover() {\n\tif ( !$.datepicker._isDisabledDatepicker( datepicker_instActive.inline ? datepicker_instActive.dpDiv.parent()[ 0 ] : datepicker_instActive.input[ 0 ] ) ) {\n\t\t$( this ).parents( \".ui-datepicker-calendar\" ).find( \"a\" ).removeClass( \"ui-state-hover\" );\n\t\t$( this ).addClass( \"ui-state-hover\" );\n\t\tif ( this.className.indexOf( \"ui-datepicker-prev\" ) !== -1 ) {\n\t\t\t$( this ).addClass( \"ui-datepicker-prev-hover\" );\n\t\t}\n\t\tif ( this.className.indexOf( \"ui-datepicker-next\" ) !== -1 ) {\n\t\t\t$( this ).addClass( \"ui-datepicker-next-hover\" );\n\t\t}\n\t}\n}\n\n/* jQuery extend now ignores nulls! */\nfunction datepicker_extendRemove( target, props ) {\n\t$.extend( target, props );\n\tfor ( var name in props ) {\n\t\tif ( props[ name ] == null ) {\n\t\t\ttarget[ name ] = props[ name ];\n\t\t}\n\t}\n\treturn target;\n}\n\n/* Invoke the datepicker functionality.\n @param options string - a command, optionally followed by additional parameters or\n\t\t\t\t\tObject - settings for attaching new datepicker functionality\n @return jQuery object */\n$.fn.datepicker = function( options ) {\n\n\t/* Verify an empty collection wasn't passed - Fixes #6976 */\n\tif ( !this.length ) {\n\t\treturn this;\n\t}\n\n\t/* Initialise the date picker. */\n\tif ( !$.datepicker.initialized ) {\n\t\t$( document ).on( \"mousedown\", $.datepicker._checkExternalClick );\n\t\t$.datepicker.initialized = true;\n\t}\n\n\t/* Append datepicker main container to body if not exist. */\n\tif ( $( \"#\" + $.datepicker._mainDivId ).length === 0 ) {\n\t\t$( \"body\" ).append( $.datepicker.dpDiv );\n\t}\n\n\tvar otherArgs = Array.prototype.slice.call( arguments, 1 );\n\tif ( typeof options === \"string\" && ( options === \"isDisabled\" || options === \"getDate\" || options === \"widget\" ) ) {\n\t\treturn $.datepicker[ \"_\" + options + \"Datepicker\" ].\n\t\t\tapply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) );\n\t}\n\tif ( options === \"option\" && arguments.length === 2 && typeof arguments[ 1 ] === \"string\" ) {\n\t\treturn $.datepicker[ \"_\" + options + \"Datepicker\" ].\n\t\t\tapply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) );\n\t}\n\treturn this.each( function() {\n\t\ttypeof options === \"string\" ?\n\t\t\t$.datepicker[ \"_\" + options + \"Datepicker\" ].\n\t\t\t\tapply( $.datepicker, [ this ].concat( otherArgs ) ) :\n\t\t\t$.datepicker._attachDatepicker( this, options );\n\t} );\n};\n\n$.datepicker = new Datepicker(); // singleton instance\n$.datepicker.initialized = false;\n$.datepicker.uuid = new Date().getTime();\n$.datepicker.version = \"1.12.1\";\n\nreturn $.datepicker;\n\n} ) );\n","/*!\n * jQuery UI Dialog 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Dialog\n//>>group: Widgets\n//>>description: Displays customizable dialog windows.\n//>>docs: http://api.jqueryui.com/dialog/\n//>>demos: http://jqueryui.com/dialog/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/dialog.css\n//>>css.theme: ../../themes/base/theme.css\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"./button\",\n\t\t\t\"./draggable\",\n\t\t\t\"./mouse\",\n\t\t\t\"./resizable\",\n\t\t\t\"../focusable\",\n\t\t\t\"../keycode\",\n\t\t\t\"../position\",\n\t\t\t\"../safe-active-element\",\n\t\t\t\"../safe-blur\",\n\t\t\t\"../tabbable\",\n\t\t\t\"../unique-id\",\n\t\t\t\"../version\",\n\t\t\t\"../widget\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n\n$.widget( \"ui.dialog\", {\n\tversion: \"1.12.1\",\n\toptions: {\n\t\tappendTo: \"body\",\n\t\tautoOpen: true,\n\t\tbuttons: [],\n\t\tclasses: {\n\t\t\t\"ui-dialog\": \"ui-corner-all\",\n\t\t\t\"ui-dialog-titlebar\": \"ui-corner-all\"\n\t\t},\n\t\tcloseOnEscape: true,\n\t\tcloseText: \"Close\",\n\t\tdraggable: true,\n\t\thide: null,\n\t\theight: \"auto\",\n\t\tmaxHeight: null,\n\t\tmaxWidth: null,\n\t\tminHeight: 150,\n\t\tminWidth: 150,\n\t\tmodal: false,\n\t\tposition: {\n\t\t\tmy: \"center\",\n\t\t\tat: \"center\",\n\t\t\tof: window,\n\t\t\tcollision: \"fit\",\n\n\t\t\t// Ensure the titlebar is always visible\n\t\t\tusing: function( pos ) {\n\t\t\t\tvar topOffset = $( this ).css( pos ).offset().top;\n\t\t\t\tif ( topOffset < 0 ) {\n\t\t\t\t\t$( this ).css( \"top\", pos.top - topOffset );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tresizable: true,\n\t\tshow: null,\n\t\ttitle: null,\n\t\twidth: 300,\n\n\t\t// Callbacks\n\t\tbeforeClose: null,\n\t\tclose: null,\n\t\tdrag: null,\n\t\tdragStart: null,\n\t\tdragStop: null,\n\t\tfocus: null,\n\t\topen: null,\n\t\tresize: null,\n\t\tresizeStart: null,\n\t\tresizeStop: null\n\t},\n\n\tsizeRelatedOptions: {\n\t\tbuttons: true,\n\t\theight: true,\n\t\tmaxHeight: true,\n\t\tmaxWidth: true,\n\t\tminHeight: true,\n\t\tminWidth: true,\n\t\twidth: true\n\t},\n\n\tresizableRelatedOptions: {\n\t\tmaxHeight: true,\n\t\tmaxWidth: true,\n\t\tminHeight: true,\n\t\tminWidth: true\n\t},\n\n\t_create: function() {\n\t\tthis.originalCss = {\n\t\t\tdisplay: this.element[ 0 ].style.display,\n\t\t\twidth: this.element[ 0 ].style.width,\n\t\t\tminHeight: this.element[ 0 ].style.minHeight,\n\t\t\tmaxHeight: this.element[ 0 ].style.maxHeight,\n\t\t\theight: this.element[ 0 ].style.height\n\t\t};\n\t\tthis.originalPosition = {\n\t\t\tparent: this.element.parent(),\n\t\t\tindex: this.element.parent().children().index( this.element )\n\t\t};\n\t\tthis.originalTitle = this.element.attr( \"title\" );\n\t\tif ( this.options.title == null && this.originalTitle != null ) {\n\t\t\tthis.options.title = this.originalTitle;\n\t\t}\n\n\t\t// Dialogs can't be disabled\n\t\tif ( this.options.disabled ) {\n\t\t\tthis.options.disabled = false;\n\t\t}\n\n\t\tthis._createWrapper();\n\n\t\tthis.element\n\t\t\t.show()\n\t\t\t.removeAttr( \"title\" )\n\t\t\t.appendTo( this.uiDialog );\n\n\t\tthis._addClass( \"ui-dialog-content\", \"ui-widget-content\" );\n\n\t\tthis._createTitlebar();\n\t\tthis._createButtonPane();\n\n\t\tif ( this.options.draggable && $.fn.draggable ) {\n\t\t\tthis._makeDraggable();\n\t\t}\n\t\tif ( this.options.resizable && $.fn.resizable ) {\n\t\t\tthis._makeResizable();\n\t\t}\n\n\t\tthis._isOpen = false;\n\n\t\tthis._trackFocus();\n\t},\n\n\t_init: function() {\n\t\tif ( this.options.autoOpen ) {\n\t\t\tthis.open();\n\t\t}\n\t},\n\n\t_appendTo: function() {\n\t\tvar element = this.options.appendTo;\n\t\tif ( element && ( element.jquery || element.nodeType ) ) {\n\t\t\treturn $( element );\n\t\t}\n\t\treturn this.document.find( element || \"body\" ).eq( 0 );\n\t},\n\n\t_destroy: function() {\n\t\tvar next,\n\t\t\toriginalPosition = this.originalPosition;\n\n\t\tthis._untrackInstance();\n\t\tthis._destroyOverlay();\n\n\t\tthis.element\n\t\t\t.removeUniqueId()\n\t\t\t.css( this.originalCss )\n\n\t\t\t// Without detaching first, the following becomes really slow\n\t\t\t.detach();\n\n\t\tthis.uiDialog.remove();\n\n\t\tif ( this.originalTitle ) {\n\t\t\tthis.element.attr( \"title\", this.originalTitle );\n\t\t}\n\n\t\tnext = originalPosition.parent.children().eq( originalPosition.index );\n\n\t\t// Don't try to place the dialog next to itself (#8613)\n\t\tif ( next.length && next[ 0 ] !== this.element[ 0 ] ) {\n\t\t\tnext.before( this.element );\n\t\t} else {\n\t\t\toriginalPosition.parent.append( this.element );\n\t\t}\n\t},\n\n\twidget: function() {\n\t\treturn this.uiDialog;\n\t},\n\n\tdisable: $.noop,\n\tenable: $.noop,\n\n\tclose: function( event ) {\n\t\tvar that = this;\n\n\t\tif ( !this._isOpen || this._trigger( \"beforeClose\", event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isOpen = false;\n\t\tthis._focusedElement = null;\n\t\tthis._destroyOverlay();\n\t\tthis._untrackInstance();\n\n\t\tif ( !this.opener.filter( \":focusable\" ).trigger( \"focus\" ).length ) {\n\n\t\t\t// Hiding a focused element doesn't trigger blur in WebKit\n\t\t\t// so in case we have nothing to focus on, explicitly blur the active element\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=47182\n\t\t\t$.ui.safeBlur( $.ui.safeActiveElement( this.document[ 0 ] ) );\n\t\t}\n\n\t\tthis._hide( this.uiDialog, this.options.hide, function() {\n\t\t\tthat._trigger( \"close\", event );\n\t\t} );\n\t},\n\n\tisOpen: function() {\n\t\treturn this._isOpen;\n\t},\n\n\tmoveToTop: function() {\n\t\tthis._moveToTop();\n\t},\n\n\t_moveToTop: function( event, silent ) {\n\t\tvar moved = false,\n\t\t\tzIndices = this.uiDialog.siblings( \".ui-front:visible\" ).map( function() {\n\t\t\t\treturn +$( this ).css( \"z-index\" );\n\t\t\t} ).get(),\n\t\t\tzIndexMax = Math.max.apply( null, zIndices );\n\n\t\tif ( zIndexMax >= +this.uiDialog.css( \"z-index\" ) ) {\n\t\t\tthis.uiDialog.css( \"z-index\", zIndexMax + 1 );\n\t\t\tmoved = true;\n\t\t}\n\n\t\tif ( moved && !silent ) {\n\t\t\tthis._trigger( \"focus\", event );\n\t\t}\n\t\treturn moved;\n\t},\n\n\topen: function() {\n\t\tvar that = this;\n\t\tif ( this._isOpen ) {\n\t\t\tif ( this._moveToTop() ) {\n\t\t\t\tthis._focusTabbable();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tthis._isOpen = true;\n\t\tthis.opener = $( $.ui.safeActiveElement( this.document[ 0 ] ) );\n\n\t\tthis._size();\n\t\tthis._position();\n\t\tthis._createOverlay();\n\t\tthis._moveToTop( null, true );\n\n\t\t// Ensure the overlay is moved to the top with the dialog, but only when\n\t\t// opening. The overlay shouldn't move after the dialog is open so that\n\t\t// modeless dialogs opened after the modal dialog stack properly.\n\t\tif ( this.overlay ) {\n\t\t\tthis.overlay.css( \"z-index\", this.uiDialog.css( \"z-index\" ) - 1 );\n\t\t}\n\n\t\tthis._show( this.uiDialog, this.options.show, function() {\n\t\t\tthat._focusTabbable();\n\t\t\tthat._trigger( \"focus\" );\n\t\t} );\n\n\t\t// Track the dialog immediately upon openening in case a focus event\n\t\t// somehow occurs outside of the dialog before an element inside the\n\t\t// dialog is focused (#10152)\n\t\tthis._makeFocusTarget();\n\n\t\tthis._trigger( \"open\" );\n\t},\n\n\t_focusTabbable: function() {\n\n\t\t// Set focus to the first match:\n\t\t// 1. An element that was focused previously\n\t\t// 2. First element inside the dialog matching [autofocus]\n\t\t// 3. Tabbable element inside the content element\n\t\t// 4. Tabbable element inside the buttonpane\n\t\t// 5. The close button\n\t\t// 6. The dialog itself\n\t\tvar hasFocus = this._focusedElement;\n\t\tif ( !hasFocus ) {\n\t\t\thasFocus = this.element.find( \"[autofocus]\" );\n\t\t}\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.element.find( \":tabbable\" );\n\t\t}\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.uiDialogButtonPane.find( \":tabbable\" );\n\t\t}\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.uiDialogTitlebarClose.filter( \":tabbable\" );\n\t\t}\n\t\tif ( !hasFocus.length ) {\n\t\t\thasFocus = this.uiDialog;\n\t\t}\n\t\thasFocus.eq( 0 ).trigger( \"focus\" );\n\t},\n\n\t_keepFocus: function( event ) {\n\t\tfunction checkFocus() {\n\t\t\tvar activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),\n\t\t\t\tisActive = this.uiDialog[ 0 ] === activeElement ||\n\t\t\t\t\t$.contains( this.uiDialog[ 0 ], activeElement );\n\t\t\tif ( !isActive ) {\n\t\t\t\tthis._focusTabbable();\n\t\t\t}\n\t\t}\n\t\tevent.preventDefault();\n\t\tcheckFocus.call( this );\n\n\t\t// support: IE\n\t\t// IE <= 8 doesn't prevent moving focus even with event.preventDefault()\n\t\t// so we check again later\n\t\tthis._delay( checkFocus );\n\t},\n\n\t_createWrapper: function() {\n\t\tthis.uiDialog = $( \"<div>\" )\n\t\t\t.hide()\n\t\t\t.attr( {\n\n\t\t\t\t// Setting tabIndex makes the div focusable\n\t\t\t\ttabIndex: -1,\n\t\t\t\trole: \"dialog\"\n\t\t\t} )\n\t\t\t.appendTo( this._appendTo() );\n\n\t\tthis._addClass( this.uiDialog, \"ui-dialog\", \"ui-widget ui-widget-content ui-front\" );\n\t\tthis._on( this.uiDialog, {\n\t\t\tkeydown: function( event ) {\n\t\t\t\tif ( this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&\n\t\t\t\t\t\tevent.keyCode === $.ui.keyCode.ESCAPE ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tthis.close( event );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Prevent tabbing out of dialogs\n\t\t\t\tif ( event.keyCode !== $.ui.keyCode.TAB || event.isDefaultPrevented() ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar tabbables = this.uiDialog.find( \":tabbable\" ),\n\t\t\t\t\tfirst = tabbables.filter( \":first\" ),\n\t\t\t\t\tlast = tabbables.filter( \":last\" );\n\n\t\t\t\tif ( ( event.target === last[ 0 ] || event.target === this.uiDialog[ 0 ] ) &&\n\t\t\t\t\t\t!event.shiftKey ) {\n\t\t\t\t\tthis._delay( function() {\n\t\t\t\t\t\tfirst.trigger( \"focus\" );\n\t\t\t\t\t} );\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t} else if ( ( event.target === first[ 0 ] ||\n\t\t\t\t\t\tevent.target === this.uiDialog[ 0 ] ) && event.shiftKey ) {\n\t\t\t\t\tthis._delay( function() {\n\t\t\t\t\t\tlast.trigger( \"focus\" );\n\t\t\t\t\t} );\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t},\n\t\t\tmousedown: function( event ) {\n\t\t\t\tif ( this._moveToTop( event ) ) {\n\t\t\t\t\tthis._focusTabbable();\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// We assume that any existing aria-describedby attribute means\n\t\t// that the dialog content is marked up properly\n\t\t// otherwise we brute force the content as the description\n\t\tif ( !this.element.find( \"[aria-describedby]\" ).length ) {\n\t\t\tthis.uiDialog.attr( {\n\t\t\t\t\"aria-describedby\": this.element.uniqueId().attr( \"id\" )\n\t\t\t} );\n\t\t}\n\t},\n\n\t_createTitlebar: function() {\n\t\tvar uiDialogTitle;\n\n\t\tthis.uiDialogTitlebar = $( \"<div>\" );\n\t\tthis._addClass( this.uiDialogTitlebar,\n\t\t\t\"ui-dialog-titlebar\", \"ui-widget-header ui-helper-clearfix\" );\n\t\tthis._on( this.uiDialogTitlebar, {\n\t\t\tmousedown: function( event ) {\n\n\t\t\t\t// Don't prevent click on close button (#8838)\n\t\t\t\t// Focusing a dialog that is partially scrolled out of view\n\t\t\t\t// causes the browser to scroll it into view, preventing the click event\n\t\t\t\tif ( !$( event.target ).closest( \".ui-dialog-titlebar-close\" ) ) {\n\n\t\t\t\t\t// Dialog isn't getting focus when dragging (#8063)\n\t\t\t\t\tthis.uiDialog.trigger( \"focus\" );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Support: IE\n\t\t// Use type=\"button\" to prevent enter keypresses in textboxes from closing the\n\t\t// dialog in IE (#9312)\n\t\tthis.uiDialogTitlebarClose = $( \"<button type='button'></button>\" )\n\t\t\t.button( {\n\t\t\t\tlabel: $( \"<a>\" ).text( this.options.closeText ).html(),\n\t\t\t\ticon: \"ui-icon-closethick\",\n\t\t\t\tshowLabel: false\n\t\t\t} )\n\t\t\t.appendTo( this.uiDialogTitlebar );\n\n\t\tthis._addClass( this.uiDialogTitlebarClose, \"ui-dialog-titlebar-close\" );\n\t\tthis._on( this.uiDialogTitlebarClose, {\n\t\t\tclick: function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis.close( event );\n\t\t\t}\n\t\t} );\n\n\t\tuiDialogTitle = $( \"<span>\" ).uniqueId().prependTo( this.uiDialogTitlebar );\n\t\tthis._addClass( uiDialogTitle, \"ui-dialog-title\" );\n\t\tthis._title( uiDialogTitle );\n\n\t\tthis.uiDialogTitlebar.prependTo( this.uiDialog );\n\n\t\tthis.uiDialog.attr( {\n\t\t\t\"aria-labelledby\": uiDialogTitle.attr( \"id\" )\n\t\t} );\n\t},\n\n\t_title: function( title ) {\n\t\tif ( this.options.title ) {\n\t\t\ttitle.text( this.options.title );\n\t\t} else {\n\t\t\ttitle.html( \" \" );\n\t\t}\n\t},\n\n\t_createButtonPane: function() {\n\t\tthis.uiDialogButtonPane = $( \"<div>\" );\n\t\tthis._addClass( this.uiDialogButtonPane, \"ui-dialog-buttonpane\",\n\t\t\t\"ui-widget-content ui-helper-clearfix\" );\n\n\t\tthis.uiButtonSet = $( \"<div>\" )\n\t\t\t.appendTo( this.uiDialogButtonPane );\n\t\tthis._addClass( this.uiButtonSet, \"ui-dialog-buttonset\" );\n\n\t\tthis._createButtons();\n\t},\n\n\t_createButtons: function() {\n\t\tvar that = this,\n\t\t\tbuttons = this.options.buttons;\n\n\t\t// If we already have a button pane, remove it\n\t\tthis.uiDialogButtonPane.remove();\n\t\tthis.uiButtonSet.empty();\n\n\t\tif ( $.isEmptyObject( buttons ) || ( $.isArray( buttons ) && !buttons.length ) ) {\n\t\t\tthis._removeClass( this.uiDialog, \"ui-dialog-buttons\" );\n\t\t\treturn;\n\t\t}\n\n\t\t$.each( buttons, function( name, props ) {\n\t\t\tvar click, buttonOptions;\n\t\t\tprops = $.isFunction( props ) ?\n\t\t\t\t{ click: props, text: name } :\n\t\t\t\tprops;\n\n\t\t\t// Default to a non-submitting button\n\t\t\tprops = $.extend( { type: \"button\" }, props );\n\n\t\t\t// Change the context for the click callback to be the main element\n\t\t\tclick = props.click;\n\t\t\tbuttonOptions = {\n\t\t\t\ticon: props.icon,\n\t\t\t\ticonPosition: props.iconPosition,\n\t\t\t\tshowLabel: props.showLabel,\n\n\t\t\t\t// Deprecated options\n\t\t\t\ticons: props.icons,\n\t\t\t\ttext: props.text\n\t\t\t};\n\n\t\t\tdelete props.click;\n\t\t\tdelete props.icon;\n\t\t\tdelete props.iconPosition;\n\t\t\tdelete props.showLabel;\n\n\t\t\t// Deprecated options\n\t\t\tdelete props.icons;\n\t\t\tif ( typeof props.text === \"boolean\" ) {\n\t\t\t\tdelete props.text;\n\t\t\t}\n\n\t\t\t$( \"<button></button>\", props )\n\t\t\t\t.button( buttonOptions )\n\t\t\t\t.appendTo( that.uiButtonSet )\n\t\t\t\t.on( \"click\", function() {\n\t\t\t\t\tclick.apply( that.element[ 0 ], arguments );\n\t\t\t\t} );\n\t\t} );\n\t\tthis._addClass( this.uiDialog, \"ui-dialog-buttons\" );\n\t\tthis.uiDialogButtonPane.appendTo( this.uiDialog );\n\t},\n\n\t_makeDraggable: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options;\n\n\t\tfunction filteredUi( ui ) {\n\t\t\treturn {\n\t\t\t\tposition: ui.position,\n\t\t\t\toffset: ui.offset\n\t\t\t};\n\t\t}\n\n\t\tthis.uiDialog.draggable( {\n\t\t\tcancel: \".ui-dialog-content, .ui-dialog-titlebar-close\",\n\t\t\thandle: \".ui-dialog-titlebar\",\n\t\t\tcontainment: \"document\",\n\t\t\tstart: function( event, ui ) {\n\t\t\t\tthat._addClass( $( this ), \"ui-dialog-dragging\" );\n\t\t\t\tthat._blockFrames();\n\t\t\t\tthat._trigger( \"dragStart\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tdrag: function( event, ui ) {\n\t\t\t\tthat._trigger( \"drag\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tstop: function( event, ui ) {\n\t\t\t\tvar left = ui.offset.left - that.document.scrollLeft(),\n\t\t\t\t\ttop = ui.offset.top - that.document.scrollTop();\n\n\t\t\t\toptions.position = {\n\t\t\t\t\tmy: \"left top\",\n\t\t\t\t\tat: \"left\" + ( left >= 0 ? \"+\" : \"\" ) + left + \" \" +\n\t\t\t\t\t\t\"top\" + ( top >= 0 ? \"+\" : \"\" ) + top,\n\t\t\t\t\tof: that.window\n\t\t\t\t};\n\t\t\t\tthat._removeClass( $( this ), \"ui-dialog-dragging\" );\n\t\t\t\tthat._unblockFrames();\n\t\t\t\tthat._trigger( \"dragStop\", event, filteredUi( ui ) );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_makeResizable: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options,\n\t\t\thandles = options.resizable,\n\n\t\t\t// .ui-resizable has position: relative defined in the stylesheet\n\t\t\t// but dialogs have to use absolute or fixed positioning\n\t\t\tposition = this.uiDialog.css( \"position\" ),\n\t\t\tresizeHandles = typeof handles === \"string\" ?\n\t\t\t\thandles :\n\t\t\t\t\"n,e,s,w,se,sw,ne,nw\";\n\n\t\tfunction filteredUi( ui ) {\n\t\t\treturn {\n\t\t\t\toriginalPosition: ui.originalPosition,\n\t\t\t\toriginalSize: ui.originalSize,\n\t\t\t\tposition: ui.position,\n\t\t\t\tsize: ui.size\n\t\t\t};\n\t\t}\n\n\t\tthis.uiDialog.resizable( {\n\t\t\tcancel: \".ui-dialog-content\",\n\t\t\tcontainment: \"document\",\n\t\t\talsoResize: this.element,\n\t\t\tmaxWidth: options.maxWidth,\n\t\t\tmaxHeight: options.maxHeight,\n\t\t\tminWidth: options.minWidth,\n\t\t\tminHeight: this._minHeight(),\n\t\t\thandles: resizeHandles,\n\t\t\tstart: function( event, ui ) {\n\t\t\t\tthat._addClass( $( this ), \"ui-dialog-resizing\" );\n\t\t\t\tthat._blockFrames();\n\t\t\t\tthat._trigger( \"resizeStart\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tresize: function( event, ui ) {\n\t\t\t\tthat._trigger( \"resize\", event, filteredUi( ui ) );\n\t\t\t},\n\t\t\tstop: function( event, ui ) {\n\t\t\t\tvar offset = that.uiDialog.offset(),\n\t\t\t\t\tleft = offset.left - that.document.scrollLeft(),\n\t\t\t\t\ttop = offset.top - that.document.scrollTop();\n\n\t\t\t\toptions.height = that.uiDialog.height();\n\t\t\t\toptions.width = that.uiDialog.width();\n\t\t\t\toptions.position = {\n\t\t\t\t\tmy: \"left top\",\n\t\t\t\t\tat: \"left\" + ( left >= 0 ? \"+\" : \"\" ) + left + \" \" +\n\t\t\t\t\t\t\"top\" + ( top >= 0 ? \"+\" : \"\" ) + top,\n\t\t\t\t\tof: that.window\n\t\t\t\t};\n\t\t\t\tthat._removeClass( $( this ), \"ui-dialog-resizing\" );\n\t\t\t\tthat._unblockFrames();\n\t\t\t\tthat._trigger( \"resizeStop\", event, filteredUi( ui ) );\n\t\t\t}\n\t\t} )\n\t\t\t.css( \"position\", position );\n\t},\n\n\t_trackFocus: function() {\n\t\tthis._on( this.widget(), {\n\t\t\tfocusin: function( event ) {\n\t\t\t\tthis._makeFocusTarget();\n\t\t\t\tthis._focusedElement = $( event.target );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_makeFocusTarget: function() {\n\t\tthis._untrackInstance();\n\t\tthis._trackingInstances().unshift( this );\n\t},\n\n\t_untrackInstance: function() {\n\t\tvar instances = this._trackingInstances(),\n\t\t\texists = $.inArray( this, instances );\n\t\tif ( exists !== -1 ) {\n\t\t\tinstances.splice( exists, 1 );\n\t\t}\n\t},\n\n\t_trackingInstances: function() {\n\t\tvar instances = this.document.data( \"ui-dialog-instances\" );\n\t\tif ( !instances ) {\n\t\t\tinstances = [];\n\t\t\tthis.document.data( \"ui-dialog-instances\", instances );\n\t\t}\n\t\treturn instances;\n\t},\n\n\t_minHeight: function() {\n\t\tvar options = this.options;\n\n\t\treturn options.height === \"auto\" ?\n\t\t\toptions.minHeight :\n\t\t\tMath.min( options.minHeight, options.height );\n\t},\n\n\t_position: function() {\n\n\t\t// Need to show the dialog to get the actual offset in the position plugin\n\t\tvar isVisible = this.uiDialog.is( \":visible\" );\n\t\tif ( !isVisible ) {\n\t\t\tthis.uiDialog.show();\n\t\t}\n\t\tthis.uiDialog.position( this.options.position );\n\t\tif ( !isVisible ) {\n\t\t\tthis.uiDialog.hide();\n\t\t}\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar that = this,\n\t\t\tresize = false,\n\t\t\tresizableOptions = {};\n\n\t\t$.each( options, function( key, value ) {\n\t\t\tthat._setOption( key, value );\n\n\t\t\tif ( key in that.sizeRelatedOptions ) {\n\t\t\t\tresize = true;\n\t\t\t}\n\t\t\tif ( key in that.resizableRelatedOptions ) {\n\t\t\t\tresizableOptions[ key ] = value;\n\t\t\t}\n\t\t} );\n\n\t\tif ( resize ) {\n\t\t\tthis._size();\n\t\t\tthis._position();\n\t\t}\n\t\tif ( this.uiDialog.is( \":data(ui-resizable)\" ) ) {\n\t\t\tthis.uiDialog.resizable( \"option\", resizableOptions );\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar isDraggable, isResizable,\n\t\t\tuiDialog = this.uiDialog;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"appendTo\" ) {\n\t\t\tthis.uiDialog.appendTo( this._appendTo() );\n\t\t}\n\n\t\tif ( key === \"buttons\" ) {\n\t\t\tthis._createButtons();\n\t\t}\n\n\t\tif ( key === \"closeText\" ) {\n\t\t\tthis.uiDialogTitlebarClose.button( {\n\n\t\t\t\t// Ensure that we always pass a string\n\t\t\t\tlabel: $( \"<a>\" ).text( \"\" + this.options.closeText ).html()\n\t\t\t} );\n\t\t}\n\n\t\tif ( key === \"draggable\" ) {\n\t\t\tisDraggable = uiDialog.is( \":data(ui-draggable)\" );\n\t\t\tif ( isDraggable && !value ) {\n\t\t\t\tuiDialog.draggable( \"destroy\" );\n\t\t\t}\n\n\t\t\tif ( !isDraggable && value ) {\n\t\t\t\tthis._makeDraggable();\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"position\" ) {\n\t\t\tthis._position();\n\t\t}\n\n\t\tif ( key === \"resizable\" ) {\n\n\t\t\t// currently resizable, becoming non-resizable\n\t\t\tisResizable = uiDialog.is( \":data(ui-resizable)\" );\n\t\t\tif ( isResizable && !value ) {\n\t\t\t\tuiDialog.resizable( \"destroy\" );\n\t\t\t}\n\n\t\t\t// Currently resizable, changing handles\n\t\t\tif ( isResizable && typeof value === \"string\" ) {\n\t\t\t\tuiDialog.resizable( \"option\", \"handles\", value );\n\t\t\t}\n\n\t\t\t// Currently non-resizable, becoming resizable\n\t\t\tif ( !isResizable && value !== false ) {\n\t\t\t\tthis._makeResizable();\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"title\" ) {\n\t\t\tthis._title( this.uiDialogTitlebar.find( \".ui-dialog-title\" ) );\n\t\t}\n\t},\n\n\t_size: function() {\n\n\t\t// If the user has resized the dialog, the .ui-dialog and .ui-dialog-content\n\t\t// divs will both have width and height set, so we need to reset them\n\t\tvar nonContentHeight, minContentHeight, maxContentHeight,\n\t\t\toptions = this.options;\n\n\t\t// Reset content sizing\n\t\tthis.element.show().css( {\n\t\t\twidth: \"auto\",\n\t\t\tminHeight: 0,\n\t\t\tmaxHeight: \"none\",\n\t\t\theight: 0\n\t\t} );\n\n\t\tif ( options.minWidth > options.width ) {\n\t\t\toptions.width = options.minWidth;\n\t\t}\n\n\t\t// Reset wrapper sizing\n\t\t// determine the height of all the non-content elements\n\t\tnonContentHeight = this.uiDialog.css( {\n\t\t\theight: \"auto\",\n\t\t\twidth: options.width\n\t\t} )\n\t\t\t.outerHeight();\n\t\tminContentHeight = Math.max( 0, options.minHeight - nonContentHeight );\n\t\tmaxContentHeight = typeof options.maxHeight === \"number\" ?\n\t\t\tMath.max( 0, options.maxHeight - nonContentHeight ) :\n\t\t\t\"none\";\n\n\t\tif ( options.height === \"auto\" ) {\n\t\t\tthis.element.css( {\n\t\t\t\tminHeight: minContentHeight,\n\t\t\t\tmaxHeight: maxContentHeight,\n\t\t\t\theight: \"auto\"\n\t\t\t} );\n\t\t} else {\n\t\t\tthis.element.height( Math.max( 0, options.height - nonContentHeight ) );\n\t\t}\n\n\t\tif ( this.uiDialog.is( \":data(ui-resizable)\" ) ) {\n\t\t\tthis.uiDialog.resizable( \"option\", \"minHeight\", this._minHeight() );\n\t\t}\n\t},\n\n\t_blockFrames: function() {\n\t\tthis.iframeBlocks = this.document.find( \"iframe\" ).map( function() {\n\t\t\tvar iframe = $( this );\n\n\t\t\treturn $( \"<div>\" )\n\t\t\t\t.css( {\n\t\t\t\t\tposition: \"absolute\",\n\t\t\t\t\twidth: iframe.outerWidth(),\n\t\t\t\t\theight: iframe.outerHeight()\n\t\t\t\t} )\n\t\t\t\t.appendTo( iframe.parent() )\n\t\t\t\t.offset( iframe.offset() )[ 0 ];\n\t\t} );\n\t},\n\n\t_unblockFrames: function() {\n\t\tif ( this.iframeBlocks ) {\n\t\t\tthis.iframeBlocks.remove();\n\t\t\tdelete this.iframeBlocks;\n\t\t}\n\t},\n\n\t_allowInteraction: function( event ) {\n\t\tif ( $( event.target ).closest( \".ui-dialog\" ).length ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// TODO: Remove hack when datepicker implements\n\t\t// the .ui-front logic (#8989)\n\t\treturn !!$( event.target ).closest( \".ui-datepicker\" ).length;\n\t},\n\n\t_createOverlay: function() {\n\t\tif ( !this.options.modal ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// We use a delay in case the overlay is created from an\n\t\t// event that we're going to be cancelling (#2804)\n\t\tvar isOpening = true;\n\t\tthis._delay( function() {\n\t\t\tisOpening = false;\n\t\t} );\n\n\t\tif ( !this.document.data( \"ui-dialog-overlays\" ) ) {\n\n\t\t\t// Prevent use of anchors and inputs\n\t\t\t// Using _on() for an event handler shared across many instances is\n\t\t\t// safe because the dialogs stack and must be closed in reverse order\n\t\t\tthis._on( this.document, {\n\t\t\t\tfocusin: function( event ) {\n\t\t\t\t\tif ( isOpening ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !this._allowInteraction( event ) ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tthis._trackingInstances()[ 0 ]._focusTabbable();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\tthis.overlay = $( \"<div>\" )\n\t\t\t.appendTo( this._appendTo() );\n\n\t\tthis._addClass( this.overlay, null, \"ui-widget-overlay ui-front\" );\n\t\tthis._on( this.overlay, {\n\t\t\tmousedown: \"_keepFocus\"\n\t\t} );\n\t\tthis.document.data( \"ui-dialog-overlays\",\n\t\t\t( this.document.data( \"ui-dialog-overlays\" ) || 0 ) + 1 );\n\t},\n\n\t_destroyOverlay: function() {\n\t\tif ( !this.options.modal ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.overlay ) {\n\t\t\tvar overlays = this.document.data( \"ui-dialog-overlays\" ) - 1;\n\n\t\t\tif ( !overlays ) {\n\t\t\t\tthis._off( this.document, \"focusin\" );\n\t\t\t\tthis.document.removeData( \"ui-dialog-overlays\" );\n\t\t\t} else {\n\t\t\t\tthis.document.data( \"ui-dialog-overlays\", overlays );\n\t\t\t}\n\n\t\t\tthis.overlay.remove();\n\t\t\tthis.overlay = null;\n\t\t}\n\t}\n} );\n\n// DEPRECATED\n// TODO: switch return back to widget declaration at top of file when this is removed\nif ( $.uiBackCompat !== false ) {\n\n\t// Backcompat for dialogClass option\n\t$.widget( \"ui.dialog\", $.ui.dialog, {\n\t\toptions: {\n\t\t\tdialogClass: \"\"\n\t\t},\n\t\t_createWrapper: function() {\n\t\t\tthis._super();\n\t\t\tthis.uiDialog.addClass( this.options.dialogClass );\n\t\t},\n\t\t_setOption: function( key, value ) {\n\t\t\tif ( key === \"dialogClass\" ) {\n\t\t\t\tthis.uiDialog\n\t\t\t\t\t.removeClass( this.options.dialogClass )\n\t\t\t\t\t.addClass( value );\n\t\t\t}\n\t\t\tthis._superApply( arguments );\n\t\t}\n\t} );\n}\n\nreturn $.ui.dialog;\n\n} ) );\n","/*!\n * jQuery UI Draggable 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Draggable\n//>>group: Interactions\n//>>description: Enables dragging functionality for any element.\n//>>docs: http://api.jqueryui.com/draggable/\n//>>demos: http://jqueryui.com/draggable/\n//>>css.structure: ../../themes/base/draggable.css\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"./mouse\",\n\t\t\t\"../data\",\n\t\t\t\"../plugin\",\n\t\t\t\"../safe-active-element\",\n\t\t\t\"../safe-blur\",\n\t\t\t\"../scroll-parent\",\n\t\t\t\"../version\",\n\t\t\t\"../widget\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n\n$.widget( \"ui.draggable\", $.ui.mouse, {\n\tversion: \"1.12.1\",\n\twidgetEventPrefix: \"drag\",\n\toptions: {\n\t\taddClasses: true,\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectToSortable: false,\n\t\tcontainment: false,\n\t\tcursor: \"auto\",\n\t\tcursorAt: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\tiframeFix: false,\n\t\topacity: false,\n\t\trefreshPositions: false,\n\t\trevert: false,\n\t\trevertDuration: 500,\n\t\tscope: \"default\",\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tsnap: false,\n\t\tsnapMode: \"both\",\n\t\tsnapTolerance: 20,\n\t\tstack: false,\n\t\tzIndex: false,\n\n\t\t// Callbacks\n\t\tdrag: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\t_create: function() {\n\n\t\tif ( this.options.helper === \"original\" ) {\n\t\t\tthis._setPositionRelative();\n\t\t}\n\t\tif ( this.options.addClasses ) {\n\t\t\tthis._addClass( \"ui-draggable\" );\n\t\t}\n\t\tthis._setHandleClassName();\n\n\t\tthis._mouseInit();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"handle\" ) {\n\t\t\tthis._removeHandleClassName();\n\t\t\tthis._setHandleClassName();\n\t\t}\n\t},\n\n\t_destroy: function() {\n\t\tif ( ( this.helper || this.element ).is( \".ui-draggable-dragging\" ) ) {\n\t\t\tthis.destroyOnClear = true;\n\t\t\treturn;\n\t\t}\n\t\tthis._removeHandleClassName();\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function( event ) {\n\t\tvar o = this.options;\n\n\t\t// Among others, prevent a drag on a resizable-handle\n\t\tif ( this.helper || o.disabled ||\n\t\t\t\t$( event.target ).closest( \".ui-resizable-handle\" ).length > 0 ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t//Quit if we're not on a valid handle\n\t\tthis.handle = this._getHandle( event );\n\t\tif ( !this.handle ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis._blurActiveElement( event );\n\n\t\tthis._blockFrames( o.iframeFix === true ? \"iframe\" : o.iframeFix );\n\n\t\treturn true;\n\n\t},\n\n\t_blockFrames: function( selector ) {\n\t\tthis.iframeBlocks = this.document.find( selector ).map( function() {\n\t\t\tvar iframe = $( this );\n\n\t\t\treturn $( \"<div>\" )\n\t\t\t\t.css( \"position\", \"absolute\" )\n\t\t\t\t.appendTo( iframe.parent() )\n\t\t\t\t.outerWidth( iframe.outerWidth() )\n\t\t\t\t.outerHeight( iframe.outerHeight() )\n\t\t\t\t.offset( iframe.offset() )[ 0 ];\n\t\t} );\n\t},\n\n\t_unblockFrames: function() {\n\t\tif ( this.iframeBlocks ) {\n\t\t\tthis.iframeBlocks.remove();\n\t\t\tdelete this.iframeBlocks;\n\t\t}\n\t},\n\n\t_blurActiveElement: function( event ) {\n\t\tvar activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),\n\t\t\ttarget = $( event.target );\n\n\t\t// Don't blur if the event occurred on an element that is within\n\t\t// the currently focused element\n\t\t// See #10527, #12472\n\t\tif ( target.closest( activeElement ).length ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Blur any element that currently has focus, see #4261\n\t\t$.ui.safeBlur( activeElement );\n\t},\n\n\t_mouseStart: function( event ) {\n\n\t\tvar o = this.options;\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper( event );\n\n\t\tthis._addClass( this.helper, \"ui-draggable-dragging\" );\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//If ddmanager is used for droppables, set the global draggable\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.current = this;\n\t\t}\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//Store the helper's css position\n\t\tthis.cssPosition = this.helper.css( \"position\" );\n\t\tthis.scrollParent = this.helper.scrollParent( true );\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tthis.hasFixedAncestor = this.helper.parents().filter( function() {\n\t\t\t\treturn $( this ).css( \"position\" ) === \"fixed\";\n\t\t\t} ).length > 0;\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.positionAbs = this.element.offset();\n\t\tthis._refreshOffsets( event );\n\n\t\t//Generate the original position\n\t\tthis.originalPosition = this.position = this._generatePosition( event, false );\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\n\t\t//Adjust the mouse offset relative to the helper if \"cursorAt\" is supplied\n\t\t( o.cursorAt && this._adjustOffsetFromHelper( o.cursorAt ) );\n\n\t\t//Set a containment if given in the options\n\t\tthis._setContainment();\n\n\t\t//Trigger event + callbacks\n\t\tif ( this._trigger( \"start\", event ) === false ) {\n\t\t\tthis._clear();\n\t\t\treturn false;\n\t\t}\n\n\t\t//Recache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t//Prepare the droppable offsets\n\t\tif ( $.ui.ddmanager && !o.dropBehaviour ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( this, event );\n\t\t}\n\n\t\t// Execute the drag once - this causes the helper not to be visible before getting its\n\t\t// correct position\n\t\tthis._mouseDrag( event, true );\n\n\t\t// If the ddmanager is used for droppables, inform the manager that dragging has started\n\t\t// (see #5003)\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.dragStart( this, event );\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t_refreshOffsets: function( event ) {\n\t\tthis.offset = {\n\t\t\ttop: this.positionAbs.top - this.margins.top,\n\t\t\tleft: this.positionAbs.left - this.margins.left,\n\t\t\tscroll: false,\n\t\t\tparent: this._getParentOffset(),\n\t\t\trelative: this._getRelativeOffset()\n\t\t};\n\n\t\tthis.offset.click = {\n\t\t\tleft: event.pageX - this.offset.left,\n\t\t\ttop: event.pageY - this.offset.top\n\t\t};\n\t},\n\n\t_mouseDrag: function( event, noPropagation ) {\n\n\t\t// reset any necessary cached properties (see #5009)\n\t\tif ( this.hasFixedAncestor ) {\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition( event, true );\n\t\tthis.positionAbs = this._convertPositionTo( \"absolute\" );\n\n\t\t//Call plugins and callbacks and use the resulting position if something is returned\n\t\tif ( !noPropagation ) {\n\t\t\tvar ui = this._uiHash();\n\t\t\tif ( this._trigger( \"drag\", event, ui ) === false ) {\n\t\t\t\tthis._mouseUp( new $.Event( \"mouseup\", event ) );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.position = ui.position;\n\t\t}\n\n\t\tthis.helper[ 0 ].style.left = this.position.left + \"px\";\n\t\tthis.helper[ 0 ].style.top = this.position.top + \"px\";\n\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.drag( this, event );\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function( event ) {\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tvar that = this,\n\t\t\tdropped = false;\n\t\tif ( $.ui.ddmanager && !this.options.dropBehaviour ) {\n\t\t\tdropped = $.ui.ddmanager.drop( this, event );\n\t\t}\n\n\t\t//if a drop comes from outside (a sortable)\n\t\tif ( this.dropped ) {\n\t\t\tdropped = this.dropped;\n\t\t\tthis.dropped = false;\n\t\t}\n\n\t\tif ( ( this.options.revert === \"invalid\" && !dropped ) ||\n\t\t\t\t( this.options.revert === \"valid\" && dropped ) ||\n\t\t\t\tthis.options.revert === true || ( $.isFunction( this.options.revert ) &&\n\t\t\t\tthis.options.revert.call( this.element, dropped ) )\n\t\t) {\n\t\t\t$( this.helper ).animate(\n\t\t\t\tthis.originalPosition,\n\t\t\t\tparseInt( this.options.revertDuration, 10 ),\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( that._trigger( \"stop\", event ) !== false ) {\n\t\t\t\t\t\tthat._clear();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t} else {\n\t\t\tif ( this._trigger( \"stop\", event ) !== false ) {\n\t\t\t\tthis._clear();\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseUp: function( event ) {\n\t\tthis._unblockFrames();\n\n\t\t// If the ddmanager is used for droppables, inform the manager that dragging has stopped\n\t\t// (see #5003)\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.dragStop( this, event );\n\t\t}\n\n\t\t// Only need to focus if the event occurred on the draggable itself, see #10527\n\t\tif ( this.handleElement.is( event.target ) ) {\n\n\t\t\t// The interaction is over; whether or not the click resulted in a drag,\n\t\t\t// focus the element\n\t\t\tthis.element.trigger( \"focus\" );\n\t\t}\n\n\t\treturn $.ui.mouse.prototype._mouseUp.call( this, event );\n\t},\n\n\tcancel: function() {\n\n\t\tif ( this.helper.is( \".ui-draggable-dragging\" ) ) {\n\t\t\tthis._mouseUp( new $.Event( \"mouseup\", { target: this.element[ 0 ] } ) );\n\t\t} else {\n\t\t\tthis._clear();\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\t_getHandle: function( event ) {\n\t\treturn this.options.handle ?\n\t\t\t!!$( event.target ).closest( this.element.find( this.options.handle ) ).length :\n\t\t\ttrue;\n\t},\n\n\t_setHandleClassName: function() {\n\t\tthis.handleElement = this.options.handle ?\n\t\t\tthis.element.find( this.options.handle ) : this.element;\n\t\tthis._addClass( this.handleElement, \"ui-draggable-handle\" );\n\t},\n\n\t_removeHandleClassName: function() {\n\t\tthis._removeClass( this.handleElement, \"ui-draggable-handle\" );\n\t},\n\n\t_createHelper: function( event ) {\n\n\t\tvar o = this.options,\n\t\t\thelperIsFunction = $.isFunction( o.helper ),\n\t\t\thelper = helperIsFunction ?\n\t\t\t\t$( o.helper.apply( this.element[ 0 ], [ event ] ) ) :\n\t\t\t\t( o.helper === \"clone\" ?\n\t\t\t\t\tthis.element.clone().removeAttr( \"id\" ) :\n\t\t\t\t\tthis.element );\n\n\t\tif ( !helper.parents( \"body\" ).length ) {\n\t\t\thelper.appendTo( ( o.appendTo === \"parent\" ?\n\t\t\t\tthis.element[ 0 ].parentNode :\n\t\t\t\to.appendTo ) );\n\t\t}\n\n\t\t// Http://bugs.jqueryui.com/ticket/9446\n\t\t// a helper function can return the original element\n\t\t// which wouldn't have been set to relative in _create\n\t\tif ( helperIsFunction && helper[ 0 ] === this.element[ 0 ] ) {\n\t\t\tthis._setPositionRelative();\n\t\t}\n\n\t\tif ( helper[ 0 ] !== this.element[ 0 ] &&\n\t\t\t\t!( /(fixed|absolute)/ ).test( helper.css( \"position\" ) ) ) {\n\t\t\thelper.css( \"position\", \"absolute\" );\n\t\t}\n\n\t\treturn helper;\n\n\t},\n\n\t_setPositionRelative: function() {\n\t\tif ( !( /^(?:r|a|f)/ ).test( this.element.css( \"position\" ) ) ) {\n\t\t\tthis.element[ 0 ].style.position = \"relative\";\n\t\t}\n\t},\n\n\t_adjustOffsetFromHelper: function( obj ) {\n\t\tif ( typeof obj === \"string\" ) {\n\t\t\tobj = obj.split( \" \" );\n\t\t}\n\t\tif ( $.isArray( obj ) ) {\n\t\t\tobj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };\n\t\t}\n\t\tif ( \"left\" in obj ) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif ( \"right\" in obj ) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif ( \"top\" in obj ) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif ( \"bottom\" in obj ) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_isRootNode: function( element ) {\n\t\treturn ( /(html|body)/i ).test( element.tagName ) || element === this.document[ 0 ];\n\t},\n\n\t_getParentOffset: function() {\n\n\t\t//Get the offsetParent and cache its position\n\t\tvar po = this.offsetParent.offset(),\n\t\t\tdocument = this.document[ 0 ];\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the\n\t\t// following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the\n\t\t// next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't\n\t\t// the document, which means that the scroll is included in the initial calculation of the\n\t\t// offset of the parent, and never recalculated upon drag\n\t\tif ( this.cssPosition === \"absolute\" && this.scrollParent[ 0 ] !== document &&\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\tif ( this._isRootNode( this.offsetParent[ 0 ] ) ) {\n\t\t\tpo = { top: 0, left: 0 };\n\t\t}\n\n\t\treturn {\n\t\t\ttop: po.top + ( parseInt( this.offsetParent.css( \"borderTopWidth\" ), 10 ) || 0 ),\n\t\t\tleft: po.left + ( parseInt( this.offsetParent.css( \"borderLeftWidth\" ), 10 ) || 0 )\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\t\tif ( this.cssPosition !== \"relative\" ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\tvar p = this.element.position(),\n\t\t\tscrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );\n\n\t\treturn {\n\t\t\ttop: p.top - ( parseInt( this.helper.css( \"top\" ), 10 ) || 0 ) +\n\t\t\t\t( !scrollIsRootNode ? this.scrollParent.scrollTop() : 0 ),\n\t\t\tleft: p.left - ( parseInt( this.helper.css( \"left\" ), 10 ) || 0 ) +\n\t\t\t\t( !scrollIsRootNode ? this.scrollParent.scrollLeft() : 0 )\n\t\t};\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: ( parseInt( this.element.css( \"marginLeft\" ), 10 ) || 0 ),\n\t\t\ttop: ( parseInt( this.element.css( \"marginTop\" ), 10 ) || 0 ),\n\t\t\tright: ( parseInt( this.element.css( \"marginRight\" ), 10 ) || 0 ),\n\t\t\tbottom: ( parseInt( this.element.css( \"marginBottom\" ), 10 ) || 0 )\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar isUserScrollable, c, ce,\n\t\t\to = this.options,\n\t\t\tdocument = this.document[ 0 ];\n\n\t\tthis.relativeContainer = null;\n\n\t\tif ( !o.containment ) {\n\t\t\tthis.containment = null;\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment === \"window\" ) {\n\t\t\tthis.containment = [\n\t\t\t\t$( window ).scrollLeft() - this.offset.relative.left - this.offset.parent.left,\n\t\t\t\t$( window ).scrollTop() - this.offset.relative.top - this.offset.parent.top,\n\t\t\t\t$( window ).scrollLeft() + $( window ).width() -\n\t\t\t\t\tthis.helperProportions.width - this.margins.left,\n\t\t\t\t$( window ).scrollTop() +\n\t\t\t\t\t( $( window ).height() || document.body.parentNode.scrollHeight ) -\n\t\t\t\t\tthis.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment === \"document\" ) {\n\t\t\tthis.containment = [\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\t$( document ).width() - this.helperProportions.width - this.margins.left,\n\t\t\t\t( $( document ).height() || document.body.parentNode.scrollHeight ) -\n\t\t\t\t\tthis.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment.constructor === Array ) {\n\t\t\tthis.containment = o.containment;\n\t\t\treturn;\n\t\t}\n\n\t\tif ( o.containment === \"parent\" ) {\n\t\t\to.containment = this.helper[ 0 ].parentNode;\n\t\t}\n\n\t\tc = $( o.containment );\n\t\tce = c[ 0 ];\n\n\t\tif ( !ce ) {\n\t\t\treturn;\n\t\t}\n\n\t\tisUserScrollable = /(scroll|auto)/.test( c.css( \"overflow\" ) );\n\n\t\tthis.containment = [\n\t\t\t( parseInt( c.css( \"borderLeftWidth\" ), 10 ) || 0 ) +\n\t\t\t\t( parseInt( c.css( \"paddingLeft\" ), 10 ) || 0 ),\n\t\t\t( parseInt( c.css( \"borderTopWidth\" ), 10 ) || 0 ) +\n\t\t\t\t( parseInt( c.css( \"paddingTop\" ), 10 ) || 0 ),\n\t\t\t( isUserScrollable ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -\n\t\t\t\t( parseInt( c.css( \"borderRightWidth\" ), 10 ) || 0 ) -\n\t\t\t\t( parseInt( c.css( \"paddingRight\" ), 10 ) || 0 ) -\n\t\t\t\tthis.helperProportions.width -\n\t\t\t\tthis.margins.left -\n\t\t\t\tthis.margins.right,\n\t\t\t( isUserScrollable ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -\n\t\t\t\t( parseInt( c.css( \"borderBottomWidth\" ), 10 ) || 0 ) -\n\t\t\t\t( parseInt( c.css( \"paddingBottom\" ), 10 ) || 0 ) -\n\t\t\t\tthis.helperProportions.height -\n\t\t\t\tthis.margins.top -\n\t\t\t\tthis.margins.bottom\n\t\t];\n\t\tthis.relativeContainer = c;\n\t},\n\n\t_convertPositionTo: function( d, pos ) {\n\n\t\tif ( !pos ) {\n\t\t\tpos = this.position;\n\t\t}\n\n\t\tvar mod = d === \"absolute\" ? 1 : -1,\n\t\t\tscrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );\n\n\t\treturn {\n\t\t\ttop: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpos.top\t+\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.top * mod +\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.top * mod -\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.offset.scroll.top :\n\t\t\t\t\t( scrollIsRootNode ? 0 : this.offset.scroll.top ) ) * mod )\n\t\t\t),\n\t\t\tleft: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpos.left +\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.left * mod +\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.left * mod\t-\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.offset.scroll.left :\n\t\t\t\t\t( scrollIsRootNode ? 0 : this.offset.scroll.left ) ) * mod )\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function( event, constrainPosition ) {\n\n\t\tvar containment, co, top, left,\n\t\t\to = this.options,\n\t\t\tscrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] ),\n\t\t\tpageX = event.pageX,\n\t\t\tpageY = event.pageY;\n\n\t\t// Cache the scroll\n\t\tif ( !scrollIsRootNode || !this.offset.scroll ) {\n\t\t\tthis.offset.scroll = {\n\t\t\t\ttop: this.scrollParent.scrollTop(),\n\t\t\t\tleft: this.scrollParent.scrollLeft()\n\t\t\t};\n\t\t}\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\t// If we are not dragging yet, we won't check for options\n\t\tif ( constrainPosition ) {\n\t\t\tif ( this.containment ) {\n\t\t\t\tif ( this.relativeContainer ) {\n\t\t\t\t\tco = this.relativeContainer.offset();\n\t\t\t\t\tcontainment = [\n\t\t\t\t\t\tthis.containment[ 0 ] + co.left,\n\t\t\t\t\t\tthis.containment[ 1 ] + co.top,\n\t\t\t\t\t\tthis.containment[ 2 ] + co.left,\n\t\t\t\t\t\tthis.containment[ 3 ] + co.top\n\t\t\t\t\t];\n\t\t\t\t} else {\n\t\t\t\t\tcontainment = this.containment;\n\t\t\t\t}\n\n\t\t\t\tif ( event.pageX - this.offset.click.left < containment[ 0 ] ) {\n\t\t\t\t\tpageX = containment[ 0 ] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif ( event.pageY - this.offset.click.top < containment[ 1 ] ) {\n\t\t\t\t\tpageY = containment[ 1 ] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t\tif ( event.pageX - this.offset.click.left > containment[ 2 ] ) {\n\t\t\t\t\tpageX = containment[ 2 ] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif ( event.pageY - this.offset.click.top > containment[ 3 ] ) {\n\t\t\t\t\tpageY = containment[ 3 ] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( o.grid ) {\n\n\t\t\t\t//Check for grid elements set to 0 to prevent divide by 0 error causing invalid\n\t\t\t\t// argument errors in IE (see ticket #6950)\n\t\t\t\ttop = o.grid[ 1 ] ? this.originalPageY + Math.round( ( pageY -\n\t\t\t\t\tthis.originalPageY ) / o.grid[ 1 ] ) * o.grid[ 1 ] : this.originalPageY;\n\t\t\t\tpageY = containment ? ( ( top - this.offset.click.top >= containment[ 1 ] ||\n\t\t\t\t\ttop - this.offset.click.top > containment[ 3 ] ) ?\n\t\t\t\t\t\ttop :\n\t\t\t\t\t\t( ( top - this.offset.click.top >= containment[ 1 ] ) ?\n\t\t\t\t\t\t\ttop - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) : top;\n\n\t\t\t\tleft = o.grid[ 0 ] ? this.originalPageX +\n\t\t\t\t\tMath.round( ( pageX - this.originalPageX ) / o.grid[ 0 ] ) * o.grid[ 0 ] :\n\t\t\t\t\tthis.originalPageX;\n\t\t\t\tpageX = containment ? ( ( left - this.offset.click.left >= containment[ 0 ] ||\n\t\t\t\t\tleft - this.offset.click.left > containment[ 2 ] ) ?\n\t\t\t\t\t\tleft :\n\t\t\t\t\t\t( ( left - this.offset.click.left >= containment[ 0 ] ) ?\n\t\t\t\t\t\t\tleft - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) : left;\n\t\t\t}\n\n\t\t\tif ( o.axis === \"y\" ) {\n\t\t\t\tpageX = this.originalPageX;\n\t\t\t}\n\n\t\t\tif ( o.axis === \"x\" ) {\n\t\t\t\tpageY = this.originalPageY;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpageY -\n\n\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.click.top -\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.top -\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.top +\n\t\t\t\t( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.offset.scroll.top :\n\t\t\t\t\t( scrollIsRootNode ? 0 : this.offset.scroll.top ) )\n\t\t\t),\n\t\t\tleft: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpageX -\n\n\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.click.left -\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.left -\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.left +\n\t\t\t\t( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.offset.scroll.left :\n\t\t\t\t\t( scrollIsRootNode ? 0 : this.offset.scroll.left ) )\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_clear: function() {\n\t\tthis._removeClass( this.helper, \"ui-draggable-dragging\" );\n\t\tif ( this.helper[ 0 ] !== this.element[ 0 ] && !this.cancelHelperRemoval ) {\n\t\t\tthis.helper.remove();\n\t\t}\n\t\tthis.helper = null;\n\t\tthis.cancelHelperRemoval = false;\n\t\tif ( this.destroyOnClear ) {\n\t\t\tthis.destroy();\n\t\t}\n\t},\n\n\t// From now on bulk stuff - mainly helpers\n\n\t_trigger: function( type, event, ui ) {\n\t\tui = ui || this._uiHash();\n\t\t$.ui.plugin.call( this, type, [ event, ui, this ], true );\n\n\t\t// Absolute position and offset (see #6884 ) have to be recalculated after plugins\n\t\tif ( /^(drag|start|stop)/.test( type ) ) {\n\t\t\tthis.positionAbs = this._convertPositionTo( \"absolute\" );\n\t\t\tui.offset = this.positionAbs;\n\t\t}\n\t\treturn $.Widget.prototype._trigger.call( this, type, event, ui );\n\t},\n\n\tplugins: {},\n\n\t_uiHash: function() {\n\t\treturn {\n\t\t\thelper: this.helper,\n\t\t\tposition: this.position,\n\t\t\toriginalPosition: this.originalPosition,\n\t\t\toffset: this.positionAbs\n\t\t};\n\t}\n\n} );\n\n$.ui.plugin.add( \"draggable\", \"connectToSortable\", {\n\tstart: function( event, ui, draggable ) {\n\t\tvar uiSortable = $.extend( {}, ui, {\n\t\t\titem: draggable.element\n\t\t} );\n\n\t\tdraggable.sortables = [];\n\t\t$( draggable.options.connectToSortable ).each( function() {\n\t\t\tvar sortable = $( this ).sortable( \"instance\" );\n\n\t\t\tif ( sortable && !sortable.options.disabled ) {\n\t\t\t\tdraggable.sortables.push( sortable );\n\n\t\t\t\t// RefreshPositions is called at drag start to refresh the containerCache\n\t\t\t\t// which is used in drag. This ensures it's initialized and synchronized\n\t\t\t\t// with any changes that might have happened on the page since initialization.\n\t\t\t\tsortable.refreshPositions();\n\t\t\t\tsortable._trigger( \"activate\", event, uiSortable );\n\t\t\t}\n\t\t} );\n\t},\n\tstop: function( event, ui, draggable ) {\n\t\tvar uiSortable = $.extend( {}, ui, {\n\t\t\titem: draggable.element\n\t\t} );\n\n\t\tdraggable.cancelHelperRemoval = false;\n\n\t\t$.each( draggable.sortables, function() {\n\t\t\tvar sortable = this;\n\n\t\t\tif ( sortable.isOver ) {\n\t\t\t\tsortable.isOver = 0;\n\n\t\t\t\t// Allow this sortable to handle removing the helper\n\t\t\t\tdraggable.cancelHelperRemoval = true;\n\t\t\t\tsortable.cancelHelperRemoval = false;\n\n\t\t\t\t// Use _storedCSS To restore properties in the sortable,\n\t\t\t\t// as this also handles revert (#9675) since the draggable\n\t\t\t\t// may have modified them in unexpected ways (#8809)\n\t\t\t\tsortable._storedCSS = {\n\t\t\t\t\tposition: sortable.placeholder.css( \"position\" ),\n\t\t\t\t\ttop: sortable.placeholder.css( \"top\" ),\n\t\t\t\t\tleft: sortable.placeholder.css( \"left\" )\n\t\t\t\t};\n\n\t\t\t\tsortable._mouseStop( event );\n\n\t\t\t\t// Once drag has ended, the sortable should return to using\n\t\t\t\t// its original helper, not the shared helper from draggable\n\t\t\t\tsortable.options.helper = sortable.options._helper;\n\t\t\t} else {\n\n\t\t\t\t// Prevent this Sortable from removing the helper.\n\t\t\t\t// However, don't set the draggable to remove the helper\n\t\t\t\t// either as another connected Sortable may yet handle the removal.\n\t\t\t\tsortable.cancelHelperRemoval = true;\n\n\t\t\t\tsortable._trigger( \"deactivate\", event, uiSortable );\n\t\t\t}\n\t\t} );\n\t},\n\tdrag: function( event, ui, draggable ) {\n\t\t$.each( draggable.sortables, function() {\n\t\t\tvar innermostIntersecting = false,\n\t\t\t\tsortable = this;\n\n\t\t\t// Copy over variables that sortable's _intersectsWith uses\n\t\t\tsortable.positionAbs = draggable.positionAbs;\n\t\t\tsortable.helperProportions = draggable.helperProportions;\n\t\t\tsortable.offset.click = draggable.offset.click;\n\n\t\t\tif ( sortable._intersectsWith( sortable.containerCache ) ) {\n\t\t\t\tinnermostIntersecting = true;\n\n\t\t\t\t$.each( draggable.sortables, function() {\n\n\t\t\t\t\t// Copy over variables that sortable's _intersectsWith uses\n\t\t\t\t\tthis.positionAbs = draggable.positionAbs;\n\t\t\t\t\tthis.helperProportions = draggable.helperProportions;\n\t\t\t\t\tthis.offset.click = draggable.offset.click;\n\n\t\t\t\t\tif ( this !== sortable &&\n\t\t\t\t\t\t\tthis._intersectsWith( this.containerCache ) &&\n\t\t\t\t\t\t\t$.contains( sortable.element[ 0 ], this.element[ 0 ] ) ) {\n\t\t\t\t\t\tinnermostIntersecting = false;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn innermostIntersecting;\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tif ( innermostIntersecting ) {\n\n\t\t\t\t// If it intersects, we use a little isOver variable and set it once,\n\t\t\t\t// so that the move-in stuff gets fired only once.\n\t\t\t\tif ( !sortable.isOver ) {\n\t\t\t\t\tsortable.isOver = 1;\n\n\t\t\t\t\t// Store draggable's parent in case we need to reappend to it later.\n\t\t\t\t\tdraggable._parent = ui.helper.parent();\n\n\t\t\t\t\tsortable.currentItem = ui.helper\n\t\t\t\t\t\t.appendTo( sortable.element )\n\t\t\t\t\t\t.data( \"ui-sortable-item\", true );\n\n\t\t\t\t\t// Store helper option to later restore it\n\t\t\t\t\tsortable.options._helper = sortable.options.helper;\n\n\t\t\t\t\tsortable.options.helper = function() {\n\t\t\t\t\t\treturn ui.helper[ 0 ];\n\t\t\t\t\t};\n\n\t\t\t\t\t// Fire the start events of the sortable with our passed browser event,\n\t\t\t\t\t// and our own helper (so it doesn't create a new one)\n\t\t\t\t\tevent.target = sortable.currentItem[ 0 ];\n\t\t\t\t\tsortable._mouseCapture( event, true );\n\t\t\t\t\tsortable._mouseStart( event, true, true );\n\n\t\t\t\t\t// Because the browser event is way off the new appended portlet,\n\t\t\t\t\t// modify necessary variables to reflect the changes\n\t\t\t\t\tsortable.offset.click.top = draggable.offset.click.top;\n\t\t\t\t\tsortable.offset.click.left = draggable.offset.click.left;\n\t\t\t\t\tsortable.offset.parent.left -= draggable.offset.parent.left -\n\t\t\t\t\t\tsortable.offset.parent.left;\n\t\t\t\t\tsortable.offset.parent.top -= draggable.offset.parent.top -\n\t\t\t\t\t\tsortable.offset.parent.top;\n\n\t\t\t\t\tdraggable._trigger( \"toSortable\", event );\n\n\t\t\t\t\t// Inform draggable that the helper is in a valid drop zone,\n\t\t\t\t\t// used solely in the revert option to handle \"valid/invalid\".\n\t\t\t\t\tdraggable.dropped = sortable.element;\n\n\t\t\t\t\t// Need to refreshPositions of all sortables in the case that\n\t\t\t\t\t// adding to one sortable changes the location of the other sortables (#9675)\n\t\t\t\t\t$.each( draggable.sortables, function() {\n\t\t\t\t\t\tthis.refreshPositions();\n\t\t\t\t\t} );\n\n\t\t\t\t\t// Hack so receive/update callbacks work (mostly)\n\t\t\t\t\tdraggable.currentItem = draggable.element;\n\t\t\t\t\tsortable.fromOutside = draggable;\n\t\t\t\t}\n\n\t\t\t\tif ( sortable.currentItem ) {\n\t\t\t\t\tsortable._mouseDrag( event );\n\n\t\t\t\t\t// Copy the sortable's position because the draggable's can potentially reflect\n\t\t\t\t\t// a relative position, while sortable is always absolute, which the dragged\n\t\t\t\t\t// element has now become. (#8809)\n\t\t\t\t\tui.position = sortable.position;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// If it doesn't intersect with the sortable, and it intersected before,\n\t\t\t\t// we fake the drag stop of the sortable, but make sure it doesn't remove\n\t\t\t\t// the helper by using cancelHelperRemoval.\n\t\t\t\tif ( sortable.isOver ) {\n\n\t\t\t\t\tsortable.isOver = 0;\n\t\t\t\t\tsortable.cancelHelperRemoval = true;\n\n\t\t\t\t\t// Calling sortable's mouseStop would trigger a revert,\n\t\t\t\t\t// so revert must be temporarily false until after mouseStop is called.\n\t\t\t\t\tsortable.options._revert = sortable.options.revert;\n\t\t\t\t\tsortable.options.revert = false;\n\n\t\t\t\t\tsortable._trigger( \"out\", event, sortable._uiHash( sortable ) );\n\t\t\t\t\tsortable._mouseStop( event, true );\n\n\t\t\t\t\t// Restore sortable behaviors that were modfied\n\t\t\t\t\t// when the draggable entered the sortable area (#9481)\n\t\t\t\t\tsortable.options.revert = sortable.options._revert;\n\t\t\t\t\tsortable.options.helper = sortable.options._helper;\n\n\t\t\t\t\tif ( sortable.placeholder ) {\n\t\t\t\t\t\tsortable.placeholder.remove();\n\t\t\t\t\t}\n\n\t\t\t\t\t// Restore and recalculate the draggable's offset considering the sortable\n\t\t\t\t\t// may have modified them in unexpected ways. (#8809, #10669)\n\t\t\t\t\tui.helper.appendTo( draggable._parent );\n\t\t\t\t\tdraggable._refreshOffsets( event );\n\t\t\t\t\tui.position = draggable._generatePosition( event, true );\n\n\t\t\t\t\tdraggable._trigger( \"fromSortable\", event );\n\n\t\t\t\t\t// Inform draggable that the helper is no longer in a valid drop zone\n\t\t\t\t\tdraggable.dropped = false;\n\n\t\t\t\t\t// Need to refreshPositions of all sortables just in case removing\n\t\t\t\t\t// from one sortable changes the location of other sortables (#9675)\n\t\t\t\t\t$.each( draggable.sortables, function() {\n\t\t\t\t\t\tthis.refreshPositions();\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"cursor\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar t = $( \"body\" ),\n\t\t\to = instance.options;\n\n\t\tif ( t.css( \"cursor\" ) ) {\n\t\t\to._cursor = t.css( \"cursor\" );\n\t\t}\n\t\tt.css( \"cursor\", o.cursor );\n\t},\n\tstop: function( event, ui, instance ) {\n\t\tvar o = instance.options;\n\t\tif ( o._cursor ) {\n\t\t\t$( \"body\" ).css( \"cursor\", o._cursor );\n\t\t}\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"opacity\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar t = $( ui.helper ),\n\t\t\to = instance.options;\n\t\tif ( t.css( \"opacity\" ) ) {\n\t\t\to._opacity = t.css( \"opacity\" );\n\t\t}\n\t\tt.css( \"opacity\", o.opacity );\n\t},\n\tstop: function( event, ui, instance ) {\n\t\tvar o = instance.options;\n\t\tif ( o._opacity ) {\n\t\t\t$( ui.helper ).css( \"opacity\", o._opacity );\n\t\t}\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"scroll\", {\n\tstart: function( event, ui, i ) {\n\t\tif ( !i.scrollParentNotHidden ) {\n\t\t\ti.scrollParentNotHidden = i.helper.scrollParent( false );\n\t\t}\n\n\t\tif ( i.scrollParentNotHidden[ 0 ] !== i.document[ 0 ] &&\n\t\t\t\ti.scrollParentNotHidden[ 0 ].tagName !== \"HTML\" ) {\n\t\t\ti.overflowOffset = i.scrollParentNotHidden.offset();\n\t\t}\n\t},\n\tdrag: function( event, ui, i ) {\n\n\t\tvar o = i.options,\n\t\t\tscrolled = false,\n\t\t\tscrollParent = i.scrollParentNotHidden[ 0 ],\n\t\t\tdocument = i.document[ 0 ];\n\n\t\tif ( scrollParent !== document && scrollParent.tagName !== \"HTML\" ) {\n\t\t\tif ( !o.axis || o.axis !== \"x\" ) {\n\t\t\t\tif ( ( i.overflowOffset.top + scrollParent.offsetHeight ) - event.pageY <\n\t\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\t\tscrollParent.scrollTop = scrolled = scrollParent.scrollTop + o.scrollSpeed;\n\t\t\t\t} else if ( event.pageY - i.overflowOffset.top < o.scrollSensitivity ) {\n\t\t\t\t\tscrollParent.scrollTop = scrolled = scrollParent.scrollTop - o.scrollSpeed;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !o.axis || o.axis !== \"y\" ) {\n\t\t\t\tif ( ( i.overflowOffset.left + scrollParent.offsetWidth ) - event.pageX <\n\t\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\t\tscrollParent.scrollLeft = scrolled = scrollParent.scrollLeft + o.scrollSpeed;\n\t\t\t\t} else if ( event.pageX - i.overflowOffset.left < o.scrollSensitivity ) {\n\t\t\t\t\tscrollParent.scrollLeft = scrolled = scrollParent.scrollLeft - o.scrollSpeed;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( !o.axis || o.axis !== \"x\" ) {\n\t\t\t\tif ( event.pageY - $( document ).scrollTop() < o.scrollSensitivity ) {\n\t\t\t\t\tscrolled = $( document ).scrollTop( $( document ).scrollTop() - o.scrollSpeed );\n\t\t\t\t} else if ( $( window ).height() - ( event.pageY - $( document ).scrollTop() ) <\n\t\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\t\tscrolled = $( document ).scrollTop( $( document ).scrollTop() + o.scrollSpeed );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !o.axis || o.axis !== \"y\" ) {\n\t\t\t\tif ( event.pageX - $( document ).scrollLeft() < o.scrollSensitivity ) {\n\t\t\t\t\tscrolled = $( document ).scrollLeft(\n\t\t\t\t\t\t$( document ).scrollLeft() - o.scrollSpeed\n\t\t\t\t\t);\n\t\t\t\t} else if ( $( window ).width() - ( event.pageX - $( document ).scrollLeft() ) <\n\t\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\t\tscrolled = $( document ).scrollLeft(\n\t\t\t\t\t\t$( document ).scrollLeft() + o.scrollSpeed\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif ( scrolled !== false && $.ui.ddmanager && !o.dropBehaviour ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( i, event );\n\t\t}\n\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"snap\", {\n\tstart: function( event, ui, i ) {\n\n\t\tvar o = i.options;\n\n\t\ti.snapElements = [];\n\n\t\t$( o.snap.constructor !== String ? ( o.snap.items || \":data(ui-draggable)\" ) : o.snap )\n\t\t\t.each( function() {\n\t\t\t\tvar $t = $( this ),\n\t\t\t\t\t$o = $t.offset();\n\t\t\t\tif ( this !== i.element[ 0 ] ) {\n\t\t\t\t\ti.snapElements.push( {\n\t\t\t\t\t\titem: this,\n\t\t\t\t\t\twidth: $t.outerWidth(), height: $t.outerHeight(),\n\t\t\t\t\t\ttop: $o.top, left: $o.left\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} );\n\n\t},\n\tdrag: function( event, ui, inst ) {\n\n\t\tvar ts, bs, ls, rs, l, r, t, b, i, first,\n\t\t\to = inst.options,\n\t\t\td = o.snapTolerance,\n\t\t\tx1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,\n\t\t\ty1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;\n\n\t\tfor ( i = inst.snapElements.length - 1; i >= 0; i-- ) {\n\n\t\t\tl = inst.snapElements[ i ].left - inst.margins.left;\n\t\t\tr = l + inst.snapElements[ i ].width;\n\t\t\tt = inst.snapElements[ i ].top - inst.margins.top;\n\t\t\tb = t + inst.snapElements[ i ].height;\n\n\t\t\tif ( x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d ||\n\t\t\t\t\t!$.contains( inst.snapElements[ i ].item.ownerDocument,\n\t\t\t\t\tinst.snapElements[ i ].item ) ) {\n\t\t\t\tif ( inst.snapElements[ i ].snapping ) {\n\t\t\t\t\t( inst.options.snap.release &&\n\t\t\t\t\t\tinst.options.snap.release.call(\n\t\t\t\t\t\t\tinst.element,\n\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t$.extend( inst._uiHash(), { snapItem: inst.snapElements[ i ].item } )\n\t\t\t\t\t\t) );\n\t\t\t\t}\n\t\t\t\tinst.snapElements[ i ].snapping = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( o.snapMode !== \"inner\" ) {\n\t\t\t\tts = Math.abs( t - y2 ) <= d;\n\t\t\t\tbs = Math.abs( b - y1 ) <= d;\n\t\t\t\tls = Math.abs( l - x2 ) <= d;\n\t\t\t\trs = Math.abs( r - x1 ) <= d;\n\t\t\t\tif ( ts ) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: t - inst.helperProportions.height,\n\t\t\t\t\t\tleft: 0\n\t\t\t\t\t} ).top;\n\t\t\t\t}\n\t\t\t\tif ( bs ) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: b,\n\t\t\t\t\t\tleft: 0\n\t\t\t\t\t} ).top;\n\t\t\t\t}\n\t\t\t\tif ( ls ) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: l - inst.helperProportions.width\n\t\t\t\t\t} ).left;\n\t\t\t\t}\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: r\n\t\t\t\t\t} ).left;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfirst = ( ts || bs || ls || rs );\n\n\t\t\tif ( o.snapMode !== \"outer\" ) {\n\t\t\t\tts = Math.abs( t - y1 ) <= d;\n\t\t\t\tbs = Math.abs( b - y2 ) <= d;\n\t\t\t\tls = Math.abs( l - x1 ) <= d;\n\t\t\t\trs = Math.abs( r - x2 ) <= d;\n\t\t\t\tif ( ts ) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: t,\n\t\t\t\t\t\tleft: 0\n\t\t\t\t\t} ).top;\n\t\t\t\t}\n\t\t\t\tif ( bs ) {\n\t\t\t\t\tui.position.top = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: b - inst.helperProportions.height,\n\t\t\t\t\t\tleft: 0\n\t\t\t\t\t} ).top;\n\t\t\t\t}\n\t\t\t\tif ( ls ) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: l\n\t\t\t\t\t} ).left;\n\t\t\t\t}\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tui.position.left = inst._convertPositionTo( \"relative\", {\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: r - inst.helperProportions.width\n\t\t\t\t\t} ).left;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !inst.snapElements[ i ].snapping && ( ts || bs || ls || rs || first ) ) {\n\t\t\t\t( inst.options.snap.snap &&\n\t\t\t\t\tinst.options.snap.snap.call(\n\t\t\t\t\t\tinst.element,\n\t\t\t\t\t\tevent,\n\t\t\t\t\t\t$.extend( inst._uiHash(), {\n\t\t\t\t\t\t\tsnapItem: inst.snapElements[ i ].item\n\t\t\t\t\t\t} ) ) );\n\t\t\t}\n\t\t\tinst.snapElements[ i ].snapping = ( ts || bs || ls || rs || first );\n\n\t\t}\n\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"stack\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar min,\n\t\t\to = instance.options,\n\t\t\tgroup = $.makeArray( $( o.stack ) ).sort( function( a, b ) {\n\t\t\t\treturn ( parseInt( $( a ).css( \"zIndex\" ), 10 ) || 0 ) -\n\t\t\t\t\t( parseInt( $( b ).css( \"zIndex\" ), 10 ) || 0 );\n\t\t\t} );\n\n\t\tif ( !group.length ) { return; }\n\n\t\tmin = parseInt( $( group[ 0 ] ).css( \"zIndex\" ), 10 ) || 0;\n\t\t$( group ).each( function( i ) {\n\t\t\t$( this ).css( \"zIndex\", min + i );\n\t\t} );\n\t\tthis.css( \"zIndex\", ( min + group.length ) );\n\t}\n} );\n\n$.ui.plugin.add( \"draggable\", \"zIndex\", {\n\tstart: function( event, ui, instance ) {\n\t\tvar t = $( ui.helper ),\n\t\t\to = instance.options;\n\n\t\tif ( t.css( \"zIndex\" ) ) {\n\t\t\to._zIndex = t.css( \"zIndex\" );\n\t\t}\n\t\tt.css( \"zIndex\", o.zIndex );\n\t},\n\tstop: function( event, ui, instance ) {\n\t\tvar o = instance.options;\n\n\t\tif ( o._zIndex ) {\n\t\t\t$( ui.helper ).css( \"zIndex\", o._zIndex );\n\t\t}\n\t}\n} );\n\nreturn $.ui.draggable;\n\n} ) );\n","/*!\n * jQuery UI Droppable 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Droppable\n//>>group: Interactions\n//>>description: Enables drop targets for draggable elements.\n//>>docs: http://api.jqueryui.com/droppable/\n//>>demos: http://jqueryui.com/droppable/\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"./draggable\",\n\t\t\t\"./mouse\",\n\t\t\t\"../version\",\n\t\t\t\"../widget\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n\n$.widget( \"ui.droppable\", {\n\tversion: \"1.12.1\",\n\twidgetEventPrefix: \"drop\",\n\toptions: {\n\t\taccept: \"*\",\n\t\taddClasses: true,\n\t\tgreedy: false,\n\t\tscope: \"default\",\n\t\ttolerance: \"intersect\",\n\n\t\t// Callbacks\n\t\tactivate: null,\n\t\tdeactivate: null,\n\t\tdrop: null,\n\t\tout: null,\n\t\tover: null\n\t},\n\t_create: function() {\n\n\t\tvar proportions,\n\t\t\to = this.options,\n\t\t\taccept = o.accept;\n\n\t\tthis.isover = false;\n\t\tthis.isout = true;\n\n\t\tthis.accept = $.isFunction( accept ) ? accept : function( d ) {\n\t\t\treturn d.is( accept );\n\t\t};\n\n\t\tthis.proportions = function( /* valueToWrite */ ) {\n\t\t\tif ( arguments.length ) {\n\n\t\t\t\t// Store the droppable's proportions\n\t\t\t\tproportions = arguments[ 0 ];\n\t\t\t} else {\n\n\t\t\t\t// Retrieve or derive the droppable's proportions\n\t\t\t\treturn proportions ?\n\t\t\t\t\tproportions :\n\t\t\t\t\tproportions = {\n\t\t\t\t\t\twidth: this.element[ 0 ].offsetWidth,\n\t\t\t\t\t\theight: this.element[ 0 ].offsetHeight\n\t\t\t\t\t};\n\t\t\t}\n\t\t};\n\n\t\tthis._addToManager( o.scope );\n\n\t\to.addClasses && this._addClass( \"ui-droppable\" );\n\n\t},\n\n\t_addToManager: function( scope ) {\n\n\t\t// Add the reference and positions to the manager\n\t\t$.ui.ddmanager.droppables[ scope ] = $.ui.ddmanager.droppables[ scope ] || [];\n\t\t$.ui.ddmanager.droppables[ scope ].push( this );\n\t},\n\n\t_splice: function( drop ) {\n\t\tvar i = 0;\n\t\tfor ( ; i < drop.length; i++ ) {\n\t\t\tif ( drop[ i ] === this ) {\n\t\t\t\tdrop.splice( i, 1 );\n\t\t\t}\n\t\t}\n\t},\n\n\t_destroy: function() {\n\t\tvar drop = $.ui.ddmanager.droppables[ this.options.scope ];\n\n\t\tthis._splice( drop );\n\t},\n\n\t_setOption: function( key, value ) {\n\n\t\tif ( key === \"accept\" ) {\n\t\t\tthis.accept = $.isFunction( value ) ? value : function( d ) {\n\t\t\t\treturn d.is( value );\n\t\t\t};\n\t\t} else if ( key === \"scope\" ) {\n\t\t\tvar drop = $.ui.ddmanager.droppables[ this.options.scope ];\n\n\t\t\tthis._splice( drop );\n\t\t\tthis._addToManager( value );\n\t\t}\n\n\t\tthis._super( key, value );\n\t},\n\n\t_activate: function( event ) {\n\t\tvar draggable = $.ui.ddmanager.current;\n\n\t\tthis._addActiveClass();\n\t\tif ( draggable ) {\n\t\t\tthis._trigger( \"activate\", event, this.ui( draggable ) );\n\t\t}\n\t},\n\n\t_deactivate: function( event ) {\n\t\tvar draggable = $.ui.ddmanager.current;\n\n\t\tthis._removeActiveClass();\n\t\tif ( draggable ) {\n\t\t\tthis._trigger( \"deactivate\", event, this.ui( draggable ) );\n\t\t}\n\t},\n\n\t_over: function( event ) {\n\n\t\tvar draggable = $.ui.ddmanager.current;\n\n\t\t// Bail if draggable and droppable are same element\n\t\tif ( !draggable || ( draggable.currentItem ||\n\t\t\t\tdraggable.element )[ 0 ] === this.element[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.accept.call( this.element[ 0 ], ( draggable.currentItem ||\n\t\t\t\tdraggable.element ) ) ) {\n\t\t\tthis._addHoverClass();\n\t\t\tthis._trigger( \"over\", event, this.ui( draggable ) );\n\t\t}\n\n\t},\n\n\t_out: function( event ) {\n\n\t\tvar draggable = $.ui.ddmanager.current;\n\n\t\t// Bail if draggable and droppable are same element\n\t\tif ( !draggable || ( draggable.currentItem ||\n\t\t\t\tdraggable.element )[ 0 ] === this.element[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this.accept.call( this.element[ 0 ], ( draggable.currentItem ||\n\t\t\t\tdraggable.element ) ) ) {\n\t\t\tthis._removeHoverClass();\n\t\t\tthis._trigger( \"out\", event, this.ui( draggable ) );\n\t\t}\n\n\t},\n\n\t_drop: function( event, custom ) {\n\n\t\tvar draggable = custom || $.ui.ddmanager.current,\n\t\t\tchildrenIntersection = false;\n\n\t\t// Bail if draggable and droppable are same element\n\t\tif ( !draggable || ( draggable.currentItem ||\n\t\t\t\tdraggable.element )[ 0 ] === this.element[ 0 ] ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.element\n\t\t\t.find( \":data(ui-droppable)\" )\n\t\t\t.not( \".ui-draggable-dragging\" )\n\t\t\t.each( function() {\n\t\t\t\tvar inst = $( this ).droppable( \"instance\" );\n\t\t\t\tif (\n\t\t\t\t\tinst.options.greedy &&\n\t\t\t\t\t!inst.options.disabled &&\n\t\t\t\t\tinst.options.scope === draggable.options.scope &&\n\t\t\t\t\tinst.accept.call(\n\t\t\t\t\t\tinst.element[ 0 ], ( draggable.currentItem || draggable.element )\n\t\t\t\t\t) &&\n\t\t\t\t\tintersect(\n\t\t\t\t\t\tdraggable,\n\t\t\t\t\t\t$.extend( inst, { offset: inst.element.offset() } ),\n\t\t\t\t\t\tinst.options.tolerance, event\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tchildrenIntersection = true;\n\t\t\t\t\treturn false; }\n\t\t\t} );\n\t\tif ( childrenIntersection ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( this.accept.call( this.element[ 0 ],\n\t\t\t\t( draggable.currentItem || draggable.element ) ) ) {\n\t\t\tthis._removeActiveClass();\n\t\t\tthis._removeHoverClass();\n\n\t\t\tthis._trigger( \"drop\", event, this.ui( draggable ) );\n\t\t\treturn this.element;\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tui: function( c ) {\n\t\treturn {\n\t\t\tdraggable: ( c.currentItem || c.element ),\n\t\t\thelper: c.helper,\n\t\t\tposition: c.position,\n\t\t\toffset: c.positionAbs\n\t\t};\n\t},\n\n\t// Extension points just to make backcompat sane and avoid duplicating logic\n\t// TODO: Remove in 1.13 along with call to it below\n\t_addHoverClass: function() {\n\t\tthis._addClass( \"ui-droppable-hover\" );\n\t},\n\n\t_removeHoverClass: function() {\n\t\tthis._removeClass( \"ui-droppable-hover\" );\n\t},\n\n\t_addActiveClass: function() {\n\t\tthis._addClass( \"ui-droppable-active\" );\n\t},\n\n\t_removeActiveClass: function() {\n\t\tthis._removeClass( \"ui-droppable-active\" );\n\t}\n} );\n\nvar intersect = $.ui.intersect = ( function() {\n\tfunction isOverAxis( x, reference, size ) {\n\t\treturn ( x >= reference ) && ( x < ( reference + size ) );\n\t}\n\n\treturn function( draggable, droppable, toleranceMode, event ) {\n\n\t\tif ( !droppable.offset ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar x1 = ( draggable.positionAbs ||\n\t\t\t\tdraggable.position.absolute ).left + draggable.margins.left,\n\t\t\ty1 = ( draggable.positionAbs ||\n\t\t\t\tdraggable.position.absolute ).top + draggable.margins.top,\n\t\t\tx2 = x1 + draggable.helperProportions.width,\n\t\t\ty2 = y1 + draggable.helperProportions.height,\n\t\t\tl = droppable.offset.left,\n\t\t\tt = droppable.offset.top,\n\t\t\tr = l + droppable.proportions().width,\n\t\t\tb = t + droppable.proportions().height;\n\n\t\tswitch ( toleranceMode ) {\n\t\tcase \"fit\":\n\t\t\treturn ( l <= x1 && x2 <= r && t <= y1 && y2 <= b );\n\t\tcase \"intersect\":\n\t\t\treturn ( l < x1 + ( draggable.helperProportions.width / 2 ) && // Right Half\n\t\t\t\tx2 - ( draggable.helperProportions.width / 2 ) < r && // Left Half\n\t\t\t\tt < y1 + ( draggable.helperProportions.height / 2 ) && // Bottom Half\n\t\t\t\ty2 - ( draggable.helperProportions.height / 2 ) < b ); // Top Half\n\t\tcase \"pointer\":\n\t\t\treturn isOverAxis( event.pageY, t, droppable.proportions().height ) &&\n\t\t\t\tisOverAxis( event.pageX, l, droppable.proportions().width );\n\t\tcase \"touch\":\n\t\t\treturn (\n\t\t\t\t( y1 >= t && y1 <= b ) || // Top edge touching\n\t\t\t\t( y2 >= t && y2 <= b ) || // Bottom edge touching\n\t\t\t\t( y1 < t && y2 > b ) // Surrounded vertically\n\t\t\t) && (\n\t\t\t\t( x1 >= l && x1 <= r ) || // Left edge touching\n\t\t\t\t( x2 >= l && x2 <= r ) || // Right edge touching\n\t\t\t\t( x1 < l && x2 > r ) // Surrounded horizontally\n\t\t\t);\n\t\tdefault:\n\t\t\treturn false;\n\t\t}\n\t};\n} )();\n\n/*\n\tThis manager tracks offsets of draggables and droppables\n*/\n$.ui.ddmanager = {\n\tcurrent: null,\n\tdroppables: { \"default\": [] },\n\tprepareOffsets: function( t, event ) {\n\n\t\tvar i, j,\n\t\t\tm = $.ui.ddmanager.droppables[ t.options.scope ] || [],\n\t\t\ttype = event ? event.type : null, // workaround for #2317\n\t\t\tlist = ( t.currentItem || t.element ).find( \":data(ui-droppable)\" ).addBack();\n\n\t\tdroppablesLoop: for ( i = 0; i < m.length; i++ ) {\n\n\t\t\t// No disabled and non-accepted\n\t\t\tif ( m[ i ].options.disabled || ( t && !m[ i ].accept.call( m[ i ].element[ 0 ],\n\t\t\t\t\t( t.currentItem || t.element ) ) ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Filter out elements in the current dragged item\n\t\t\tfor ( j = 0; j < list.length; j++ ) {\n\t\t\t\tif ( list[ j ] === m[ i ].element[ 0 ] ) {\n\t\t\t\t\tm[ i ].proportions().height = 0;\n\t\t\t\t\tcontinue droppablesLoop;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tm[ i ].visible = m[ i ].element.css( \"display\" ) !== \"none\";\n\t\t\tif ( !m[ i ].visible ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Activate the droppable if used directly from draggables\n\t\t\tif ( type === \"mousedown\" ) {\n\t\t\t\tm[ i ]._activate.call( m[ i ], event );\n\t\t\t}\n\n\t\t\tm[ i ].offset = m[ i ].element.offset();\n\t\t\tm[ i ].proportions( {\n\t\t\t\twidth: m[ i ].element[ 0 ].offsetWidth,\n\t\t\t\theight: m[ i ].element[ 0 ].offsetHeight\n\t\t\t} );\n\n\t\t}\n\n\t},\n\tdrop: function( draggable, event ) {\n\n\t\tvar dropped = false;\n\n\t\t// Create a copy of the droppables in case the list changes during the drop (#9116)\n\t\t$.each( ( $.ui.ddmanager.droppables[ draggable.options.scope ] || [] ).slice(), function() {\n\n\t\t\tif ( !this.options ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( !this.options.disabled && this.visible &&\n\t\t\t\t\tintersect( draggable, this, this.options.tolerance, event ) ) {\n\t\t\t\tdropped = this._drop.call( this, event ) || dropped;\n\t\t\t}\n\n\t\t\tif ( !this.options.disabled && this.visible && this.accept.call( this.element[ 0 ],\n\t\t\t\t\t( draggable.currentItem || draggable.element ) ) ) {\n\t\t\t\tthis.isout = true;\n\t\t\t\tthis.isover = false;\n\t\t\t\tthis._deactivate.call( this, event );\n\t\t\t}\n\n\t\t} );\n\t\treturn dropped;\n\n\t},\n\tdragStart: function( draggable, event ) {\n\n\t\t// Listen for scrolling so that if the dragging causes scrolling the position of the\n\t\t// droppables can be recalculated (see #5003)\n\t\tdraggable.element.parentsUntil( \"body\" ).on( \"scroll.droppable\", function() {\n\t\t\tif ( !draggable.options.refreshPositions ) {\n\t\t\t\t$.ui.ddmanager.prepareOffsets( draggable, event );\n\t\t\t}\n\t\t} );\n\t},\n\tdrag: function( draggable, event ) {\n\n\t\t// If you have a highly dynamic page, you might try this option. It renders positions\n\t\t// every time you move the mouse.\n\t\tif ( draggable.options.refreshPositions ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( draggable, event );\n\t\t}\n\n\t\t// Run through all droppables and check their positions based on specific tolerance options\n\t\t$.each( $.ui.ddmanager.droppables[ draggable.options.scope ] || [], function() {\n\n\t\t\tif ( this.options.disabled || this.greedyChild || !this.visible ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar parentInstance, scope, parent,\n\t\t\t\tintersects = intersect( draggable, this, this.options.tolerance, event ),\n\t\t\t\tc = !intersects && this.isover ?\n\t\t\t\t\t\"isout\" :\n\t\t\t\t\t( intersects && !this.isover ? \"isover\" : null );\n\t\t\tif ( !c ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this.options.greedy ) {\n\n\t\t\t\t// find droppable parents with same scope\n\t\t\t\tscope = this.options.scope;\n\t\t\t\tparent = this.element.parents( \":data(ui-droppable)\" ).filter( function() {\n\t\t\t\t\treturn $( this ).droppable( \"instance\" ).options.scope === scope;\n\t\t\t\t} );\n\n\t\t\t\tif ( parent.length ) {\n\t\t\t\t\tparentInstance = $( parent[ 0 ] ).droppable( \"instance\" );\n\t\t\t\t\tparentInstance.greedyChild = ( c === \"isover\" );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// We just moved into a greedy child\n\t\t\tif ( parentInstance && c === \"isover\" ) {\n\t\t\t\tparentInstance.isover = false;\n\t\t\t\tparentInstance.isout = true;\n\t\t\t\tparentInstance._out.call( parentInstance, event );\n\t\t\t}\n\n\t\t\tthis[ c ] = true;\n\t\t\tthis[ c === \"isout\" ? \"isover\" : \"isout\" ] = false;\n\t\t\tthis[ c === \"isover\" ? \"_over\" : \"_out\" ].call( this, event );\n\n\t\t\t// We just moved out of a greedy child\n\t\t\tif ( parentInstance && c === \"isout\" ) {\n\t\t\t\tparentInstance.isout = false;\n\t\t\t\tparentInstance.isover = true;\n\t\t\t\tparentInstance._over.call( parentInstance, event );\n\t\t\t}\n\t\t} );\n\n\t},\n\tdragStop: function( draggable, event ) {\n\t\tdraggable.element.parentsUntil( \"body\" ).off( \"scroll.droppable\" );\n\n\t\t// Call prepareOffsets one final time since IE does not fire return scroll events when\n\t\t// overflow was caused by drag (see #5003)\n\t\tif ( !draggable.options.refreshPositions ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( draggable, event );\n\t\t}\n\t}\n};\n\n// DEPRECATED\n// TODO: switch return back to widget declaration at top of file when this is removed\nif ( $.uiBackCompat !== false ) {\n\n\t// Backcompat for activeClass and hoverClass options\n\t$.widget( \"ui.droppable\", $.ui.droppable, {\n\t\toptions: {\n\t\t\thoverClass: false,\n\t\t\tactiveClass: false\n\t\t},\n\t\t_addActiveClass: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.activeClass ) {\n\t\t\t\tthis.element.addClass( this.options.activeClass );\n\t\t\t}\n\t\t},\n\t\t_removeActiveClass: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.activeClass ) {\n\t\t\t\tthis.element.removeClass( this.options.activeClass );\n\t\t\t}\n\t\t},\n\t\t_addHoverClass: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.hoverClass ) {\n\t\t\t\tthis.element.addClass( this.options.hoverClass );\n\t\t\t}\n\t\t},\n\t\t_removeHoverClass: function() {\n\t\t\tthis._super();\n\t\t\tif ( this.options.hoverClass ) {\n\t\t\t\tthis.element.removeClass( this.options.hoverClass );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nreturn $.ui.droppable;\n\n} ) );\n","/*!\n * jQuery UI Mouse 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Mouse\n//>>group: Widgets\n//>>description: Abstracts mouse-based interactions to assist in creating certain widgets.\n//>>docs: http://api.jqueryui.com/mouse/\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"../ie\",\n\t\t\t\"../version\",\n\t\t\t\"../widget\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n\nvar mouseHandled = false;\n$( document ).on( \"mouseup\", function() {\n\tmouseHandled = false;\n} );\n\nreturn $.widget( \"ui.mouse\", {\n\tversion: \"1.12.1\",\n\toptions: {\n\t\tcancel: \"input, textarea, button, select, option\",\n\t\tdistance: 1,\n\t\tdelay: 0\n\t},\n\t_mouseInit: function() {\n\t\tvar that = this;\n\n\t\tthis.element\n\t\t\t.on( \"mousedown.\" + this.widgetName, function( event ) {\n\t\t\t\treturn that._mouseDown( event );\n\t\t\t} )\n\t\t\t.on( \"click.\" + this.widgetName, function( event ) {\n\t\t\t\tif ( true === $.data( event.target, that.widgetName + \".preventClickEvent\" ) ) {\n\t\t\t\t\t$.removeData( event.target, that.widgetName + \".preventClickEvent\" );\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\n\t\tthis.started = false;\n\t},\n\n\t// TODO: make sure destroying one instance of mouse doesn't mess with\n\t// other instances of mouse\n\t_mouseDestroy: function() {\n\t\tthis.element.off( \".\" + this.widgetName );\n\t\tif ( this._mouseMoveDelegate ) {\n\t\t\tthis.document\n\t\t\t\t.off( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t\t.off( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\t\t}\n\t},\n\n\t_mouseDown: function( event ) {\n\n\t\t// don't let more than one widget handle mouseStart\n\t\tif ( mouseHandled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._mouseMoved = false;\n\n\t\t// We may have missed mouseup (out of window)\n\t\t( this._mouseStarted && this._mouseUp( event ) );\n\n\t\tthis._mouseDownEvent = event;\n\n\t\tvar that = this,\n\t\t\tbtnIsLeft = ( event.which === 1 ),\n\n\t\t\t// event.target.nodeName works around a bug in IE 8 with\n\t\t\t// disabled inputs (#7620)\n\t\t\telIsCancel = ( typeof this.options.cancel === \"string\" && event.target.nodeName ?\n\t\t\t\t$( event.target ).closest( this.options.cancel ).length : false );\n\t\tif ( !btnIsLeft || elIsCancel || !this._mouseCapture( event ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.mouseDelayMet = !this.options.delay;\n\t\tif ( !this.mouseDelayMet ) {\n\t\t\tthis._mouseDelayTimer = setTimeout( function() {\n\t\t\t\tthat.mouseDelayMet = true;\n\t\t\t}, this.options.delay );\n\t\t}\n\n\t\tif ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {\n\t\t\tthis._mouseStarted = ( this._mouseStart( event ) !== false );\n\t\t\tif ( !this._mouseStarted ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t// Click event may never have fired (Gecko & Opera)\n\t\tif ( true === $.data( event.target, this.widgetName + \".preventClickEvent\" ) ) {\n\t\t\t$.removeData( event.target, this.widgetName + \".preventClickEvent\" );\n\t\t}\n\n\t\t// These delegates are required to keep context\n\t\tthis._mouseMoveDelegate = function( event ) {\n\t\t\treturn that._mouseMove( event );\n\t\t};\n\t\tthis._mouseUpDelegate = function( event ) {\n\t\t\treturn that._mouseUp( event );\n\t\t};\n\n\t\tthis.document\n\t\t\t.on( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t.on( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\n\t\tevent.preventDefault();\n\n\t\tmouseHandled = true;\n\t\treturn true;\n\t},\n\n\t_mouseMove: function( event ) {\n\n\t\t// Only check for mouseups outside the document if you've moved inside the document\n\t\t// at least once. This prevents the firing of mouseup in the case of IE<9, which will\n\t\t// fire a mousemove event if content is placed under the cursor. See #7778\n\t\t// Support: IE <9\n\t\tif ( this._mouseMoved ) {\n\n\t\t\t// IE mouseup check - mouseup happened when mouse was out of window\n\t\t\tif ( $.ui.ie && ( !document.documentMode || document.documentMode < 9 ) &&\n\t\t\t\t\t!event.button ) {\n\t\t\t\treturn this._mouseUp( event );\n\n\t\t\t// Iframe mouseup check - mouseup occurred in another document\n\t\t\t} else if ( !event.which ) {\n\n\t\t\t\t// Support: Safari <=8 - 9\n\t\t\t\t// Safari sets which to 0 if you press any of the following keys\n\t\t\t\t// during a drag (#14461)\n\t\t\t\tif ( event.originalEvent.altKey || event.originalEvent.ctrlKey ||\n\t\t\t\t\t\tevent.originalEvent.metaKey || event.originalEvent.shiftKey ) {\n\t\t\t\t\tthis.ignoreMissingWhich = true;\n\t\t\t\t} else if ( !this.ignoreMissingWhich ) {\n\t\t\t\t\treturn this._mouseUp( event );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( event.which || event.button ) {\n\t\t\tthis._mouseMoved = true;\n\t\t}\n\n\t\tif ( this._mouseStarted ) {\n\t\t\tthis._mouseDrag( event );\n\t\t\treturn event.preventDefault();\n\t\t}\n\n\t\tif ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {\n\t\t\tthis._mouseStarted =\n\t\t\t\t( this._mouseStart( this._mouseDownEvent, event ) !== false );\n\t\t\t( this._mouseStarted ? this._mouseDrag( event ) : this._mouseUp( event ) );\n\t\t}\n\n\t\treturn !this._mouseStarted;\n\t},\n\n\t_mouseUp: function( event ) {\n\t\tthis.document\n\t\t\t.off( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t.off( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\n\t\tif ( this._mouseStarted ) {\n\t\t\tthis._mouseStarted = false;\n\n\t\t\tif ( event.target === this._mouseDownEvent.target ) {\n\t\t\t\t$.data( event.target, this.widgetName + \".preventClickEvent\", true );\n\t\t\t}\n\n\t\t\tthis._mouseStop( event );\n\t\t}\n\n\t\tif ( this._mouseDelayTimer ) {\n\t\t\tclearTimeout( this._mouseDelayTimer );\n\t\t\tdelete this._mouseDelayTimer;\n\t\t}\n\n\t\tthis.ignoreMissingWhich = false;\n\t\tmouseHandled = false;\n\t\tevent.preventDefault();\n\t},\n\n\t_mouseDistanceMet: function( event ) {\n\t\treturn ( Math.max(\n\t\t\t\tMath.abs( this._mouseDownEvent.pageX - event.pageX ),\n\t\t\t\tMath.abs( this._mouseDownEvent.pageY - event.pageY )\n\t\t\t) >= this.options.distance\n\t\t);\n\t},\n\n\t_mouseDelayMet: function( /* event */ ) {\n\t\treturn this.mouseDelayMet;\n\t},\n\n\t// These are placeholder methods, to be overriden by extending plugin\n\t_mouseStart: function( /* event */ ) {},\n\t_mouseDrag: function( /* event */ ) {},\n\t_mouseStop: function( /* event */ ) {},\n\t_mouseCapture: function( /* event */ ) { return true; }\n} );\n\n} ) );\n","/*!\n * jQuery UI Resizable 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Resizable\n//>>group: Interactions\n//>>description: Enables resize functionality for any element.\n//>>docs: http://api.jqueryui.com/resizable/\n//>>demos: http://jqueryui.com/resizable/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/resizable.css\n//>>css.theme: ../../themes/base/theme.css\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"./mouse\",\n\t\t\t\"../disable-selection\",\n\t\t\t\"../plugin\",\n\t\t\t\"../version\",\n\t\t\t\"../widget\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n\n$.widget( \"ui.resizable\", $.ui.mouse, {\n\tversion: \"1.12.1\",\n\twidgetEventPrefix: \"resize\",\n\toptions: {\n\t\talsoResize: false,\n\t\tanimate: false,\n\t\tanimateDuration: \"slow\",\n\t\tanimateEasing: \"swing\",\n\t\taspectRatio: false,\n\t\tautoHide: false,\n\t\tclasses: {\n\t\t\t\"ui-resizable-se\": \"ui-icon ui-icon-gripsmall-diagonal-se\"\n\t\t},\n\t\tcontainment: false,\n\t\tghost: false,\n\t\tgrid: false,\n\t\thandles: \"e,s,se\",\n\t\thelper: false,\n\t\tmaxHeight: null,\n\t\tmaxWidth: null,\n\t\tminHeight: 10,\n\t\tminWidth: 10,\n\n\t\t// See #7960\n\t\tzIndex: 90,\n\n\t\t// Callbacks\n\t\tresize: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\n\t_num: function( value ) {\n\t\treturn parseFloat( value ) || 0;\n\t},\n\n\t_isNumber: function( value ) {\n\t\treturn !isNaN( parseFloat( value ) );\n\t},\n\n\t_hasScroll: function( el, a ) {\n\n\t\tif ( $( el ).css( \"overflow\" ) === \"hidden\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar scroll = ( a && a === \"left\" ) ? \"scrollLeft\" : \"scrollTop\",\n\t\t\thas = false;\n\n\t\tif ( el[ scroll ] > 0 ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// TODO: determine which cases actually cause this to happen\n\t\t// if the element doesn't have the scroll set, see if it's possible to\n\t\t// set the scroll\n\t\tel[ scroll ] = 1;\n\t\thas = ( el[ scroll ] > 0 );\n\t\tel[ scroll ] = 0;\n\t\treturn has;\n\t},\n\n\t_create: function() {\n\n\t\tvar margins,\n\t\t\to = this.options,\n\t\t\tthat = this;\n\t\tthis._addClass( \"ui-resizable\" );\n\n\t\t$.extend( this, {\n\t\t\t_aspectRatio: !!( o.aspectRatio ),\n\t\t\taspectRatio: o.aspectRatio,\n\t\t\toriginalElement: this.element,\n\t\t\t_proportionallyResizeElements: [],\n\t\t\t_helper: o.helper || o.ghost || o.animate ? o.helper || \"ui-resizable-helper\" : null\n\t\t} );\n\n\t\t// Wrap the element if it cannot hold child nodes\n\t\tif ( this.element[ 0 ].nodeName.match( /^(canvas|textarea|input|select|button|img)$/i ) ) {\n\n\t\t\tthis.element.wrap(\n\t\t\t\t$( \"<div class='ui-wrapper' style='overflow: hidden;'></div>\" ).css( {\n\t\t\t\t\tposition: this.element.css( \"position\" ),\n\t\t\t\t\twidth: this.element.outerWidth(),\n\t\t\t\t\theight: this.element.outerHeight(),\n\t\t\t\t\ttop: this.element.css( \"top\" ),\n\t\t\t\t\tleft: this.element.css( \"left\" )\n\t\t\t\t} )\n\t\t\t);\n\n\t\t\tthis.element = this.element.parent().data(\n\t\t\t\t\"ui-resizable\", this.element.resizable( \"instance\" )\n\t\t\t);\n\n\t\t\tthis.elementIsWrapper = true;\n\n\t\t\tmargins = {\n\t\t\t\tmarginTop: this.originalElement.css( \"marginTop\" ),\n\t\t\t\tmarginRight: this.originalElement.css( \"marginRight\" ),\n\t\t\t\tmarginBottom: this.originalElement.css( \"marginBottom\" ),\n\t\t\t\tmarginLeft: this.originalElement.css( \"marginLeft\" )\n\t\t\t};\n\n\t\t\tthis.element.css( margins );\n\t\t\tthis.originalElement.css( \"margin\", 0 );\n\n\t\t\t// support: Safari\n\t\t\t// Prevent Safari textarea resize\n\t\t\tthis.originalResizeStyle = this.originalElement.css( \"resize\" );\n\t\t\tthis.originalElement.css( \"resize\", \"none\" );\n\n\t\t\tthis._proportionallyResizeElements.push( this.originalElement.css( {\n\t\t\t\tposition: \"static\",\n\t\t\t\tzoom: 1,\n\t\t\t\tdisplay: \"block\"\n\t\t\t} ) );\n\n\t\t\t// Support: IE9\n\t\t\t// avoid IE jump (hard set the margin)\n\t\t\tthis.originalElement.css( margins );\n\n\t\t\tthis._proportionallyResize();\n\t\t}\n\n\t\tthis._setupHandles();\n\n\t\tif ( o.autoHide ) {\n\t\t\t$( this.element )\n\t\t\t\t.on( \"mouseenter\", function() {\n\t\t\t\t\tif ( o.disabled ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthat._removeClass( \"ui-resizable-autohide\" );\n\t\t\t\t\tthat._handles.show();\n\t\t\t\t} )\n\t\t\t\t.on( \"mouseleave\", function() {\n\t\t\t\t\tif ( o.disabled ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif ( !that.resizing ) {\n\t\t\t\t\t\tthat._addClass( \"ui-resizable-autohide\" );\n\t\t\t\t\t\tthat._handles.hide();\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}\n\n\t\tthis._mouseInit();\n\t},\n\n\t_destroy: function() {\n\n\t\tthis._mouseDestroy();\n\n\t\tvar wrapper,\n\t\t\t_destroy = function( exp ) {\n\t\t\t\t$( exp )\n\t\t\t\t\t.removeData( \"resizable\" )\n\t\t\t\t\t.removeData( \"ui-resizable\" )\n\t\t\t\t\t.off( \".resizable\" )\n\t\t\t\t\t.find( \".ui-resizable-handle\" )\n\t\t\t\t\t\t.remove();\n\t\t\t};\n\n\t\t// TODO: Unwrap at same DOM position\n\t\tif ( this.elementIsWrapper ) {\n\t\t\t_destroy( this.element );\n\t\t\twrapper = this.element;\n\t\t\tthis.originalElement.css( {\n\t\t\t\tposition: wrapper.css( \"position\" ),\n\t\t\t\twidth: wrapper.outerWidth(),\n\t\t\t\theight: wrapper.outerHeight(),\n\t\t\t\ttop: wrapper.css( \"top\" ),\n\t\t\t\tleft: wrapper.css( \"left\" )\n\t\t\t} ).insertAfter( wrapper );\n\t\t\twrapper.remove();\n\t\t}\n\n\t\tthis.originalElement.css( \"resize\", this.originalResizeStyle );\n\t\t_destroy( this.originalElement );\n\n\t\treturn this;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\n\t\tswitch ( key ) {\n\t\tcase \"handles\":\n\t\t\tthis._removeHandles();\n\t\t\tthis._setupHandles();\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\t},\n\n\t_setupHandles: function() {\n\t\tvar o = this.options, handle, i, n, hname, axis, that = this;\n\t\tthis.handles = o.handles ||\n\t\t\t( !$( \".ui-resizable-handle\", this.element ).length ?\n\t\t\t\t\"e,s,se\" : {\n\t\t\t\t\tn: \".ui-resizable-n\",\n\t\t\t\t\te: \".ui-resizable-e\",\n\t\t\t\t\ts: \".ui-resizable-s\",\n\t\t\t\t\tw: \".ui-resizable-w\",\n\t\t\t\t\tse: \".ui-resizable-se\",\n\t\t\t\t\tsw: \".ui-resizable-sw\",\n\t\t\t\t\tne: \".ui-resizable-ne\",\n\t\t\t\t\tnw: \".ui-resizable-nw\"\n\t\t\t\t} );\n\n\t\tthis._handles = $();\n\t\tif ( this.handles.constructor === String ) {\n\n\t\t\tif ( this.handles === \"all\" ) {\n\t\t\t\tthis.handles = \"n,e,s,w,se,sw,ne,nw\";\n\t\t\t}\n\n\t\t\tn = this.handles.split( \",\" );\n\t\t\tthis.handles = {};\n\n\t\t\tfor ( i = 0; i < n.length; i++ ) {\n\n\t\t\t\thandle = $.trim( n[ i ] );\n\t\t\t\thname = \"ui-resizable-\" + handle;\n\t\t\t\taxis = $( \"<div>\" );\n\t\t\t\tthis._addClass( axis, \"ui-resizable-handle \" + hname );\n\n\t\t\t\taxis.css( { zIndex: o.zIndex } );\n\n\t\t\t\tthis.handles[ handle ] = \".ui-resizable-\" + handle;\n\t\t\t\tthis.element.append( axis );\n\t\t\t}\n\n\t\t}\n\n\t\tthis._renderAxis = function( target ) {\n\n\t\t\tvar i, axis, padPos, padWrapper;\n\n\t\t\ttarget = target || this.element;\n\n\t\t\tfor ( i in this.handles ) {\n\n\t\t\t\tif ( this.handles[ i ].constructor === String ) {\n\t\t\t\t\tthis.handles[ i ] = this.element.children( this.handles[ i ] ).first().show();\n\t\t\t\t} else if ( this.handles[ i ].jquery || this.handles[ i ].nodeType ) {\n\t\t\t\t\tthis.handles[ i ] = $( this.handles[ i ] );\n\t\t\t\t\tthis._on( this.handles[ i ], { \"mousedown\": that._mouseDown } );\n\t\t\t\t}\n\n\t\t\t\tif ( this.elementIsWrapper &&\n\t\t\t\t\t\tthis.originalElement[ 0 ]\n\t\t\t\t\t\t\t.nodeName\n\t\t\t\t\t\t\t.match( /^(textarea|input|select|button)$/i ) ) {\n\t\t\t\t\taxis = $( this.handles[ i ], this.element );\n\n\t\t\t\t\tpadWrapper = /sw|ne|nw|se|n|s/.test( i ) ?\n\t\t\t\t\t\taxis.outerHeight() :\n\t\t\t\t\t\taxis.outerWidth();\n\n\t\t\t\t\tpadPos = [ \"padding\",\n\t\t\t\t\t\t/ne|nw|n/.test( i ) ? \"Top\" :\n\t\t\t\t\t\t/se|sw|s/.test( i ) ? \"Bottom\" :\n\t\t\t\t\t\t/^e$/.test( i ) ? \"Right\" : \"Left\" ].join( \"\" );\n\n\t\t\t\t\ttarget.css( padPos, padWrapper );\n\n\t\t\t\t\tthis._proportionallyResize();\n\t\t\t\t}\n\n\t\t\t\tthis._handles = this._handles.add( this.handles[ i ] );\n\t\t\t}\n\t\t};\n\n\t\t// TODO: make renderAxis a prototype function\n\t\tthis._renderAxis( this.element );\n\n\t\tthis._handles = this._handles.add( this.element.find( \".ui-resizable-handle\" ) );\n\t\tthis._handles.disableSelection();\n\n\t\tthis._handles.on( \"mouseover\", function() {\n\t\t\tif ( !that.resizing ) {\n\t\t\t\tif ( this.className ) {\n\t\t\t\t\taxis = this.className.match( /ui-resizable-(se|sw|ne|nw|n|e|s|w)/i );\n\t\t\t\t}\n\t\t\t\tthat.axis = axis && axis[ 1 ] ? axis[ 1 ] : \"se\";\n\t\t\t}\n\t\t} );\n\n\t\tif ( o.autoHide ) {\n\t\t\tthis._handles.hide();\n\t\t\tthis._addClass( \"ui-resizable-autohide\" );\n\t\t}\n\t},\n\n\t_removeHandles: function() {\n\t\tthis._handles.remove();\n\t},\n\n\t_mouseCapture: function( event ) {\n\t\tvar i, handle,\n\t\t\tcapture = false;\n\n\t\tfor ( i in this.handles ) {\n\t\t\thandle = $( this.handles[ i ] )[ 0 ];\n\t\t\tif ( handle === event.target || $.contains( handle, event.target ) ) {\n\t\t\t\tcapture = true;\n\t\t\t}\n\t\t}\n\n\t\treturn !this.options.disabled && capture;\n\t},\n\n\t_mouseStart: function( event ) {\n\n\t\tvar curleft, curtop, cursor,\n\t\t\to = this.options,\n\t\t\tel = this.element;\n\n\t\tthis.resizing = true;\n\n\t\tthis._renderProxy();\n\n\t\tcurleft = this._num( this.helper.css( \"left\" ) );\n\t\tcurtop = this._num( this.helper.css( \"top\" ) );\n\n\t\tif ( o.containment ) {\n\t\t\tcurleft += $( o.containment ).scrollLeft() || 0;\n\t\t\tcurtop += $( o.containment ).scrollTop() || 0;\n\t\t}\n\n\t\tthis.offset = this.helper.offset();\n\t\tthis.position = { left: curleft, top: curtop };\n\n\t\tthis.size = this._helper ? {\n\t\t\t\twidth: this.helper.width(),\n\t\t\t\theight: this.helper.height()\n\t\t\t} : {\n\t\t\t\twidth: el.width(),\n\t\t\t\theight: el.height()\n\t\t\t};\n\n\t\tthis.originalSize = this._helper ? {\n\t\t\t\twidth: el.outerWidth(),\n\t\t\t\theight: el.outerHeight()\n\t\t\t} : {\n\t\t\t\twidth: el.width(),\n\t\t\t\theight: el.height()\n\t\t\t};\n\n\t\tthis.sizeDiff = {\n\t\t\twidth: el.outerWidth() - el.width(),\n\t\t\theight: el.outerHeight() - el.height()\n\t\t};\n\n\t\tthis.originalPosition = { left: curleft, top: curtop };\n\t\tthis.originalMousePosition = { left: event.pageX, top: event.pageY };\n\n\t\tthis.aspectRatio = ( typeof o.aspectRatio === \"number\" ) ?\n\t\t\to.aspectRatio :\n\t\t\t( ( this.originalSize.width / this.originalSize.height ) || 1 );\n\n\t\tcursor = $( \".ui-resizable-\" + this.axis ).css( \"cursor\" );\n\t\t$( \"body\" ).css( \"cursor\", cursor === \"auto\" ? this.axis + \"-resize\" : cursor );\n\n\t\tthis._addClass( \"ui-resizable-resizing\" );\n\t\tthis._propagate( \"start\", event );\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function( event ) {\n\n\t\tvar data, props,\n\t\t\tsmp = this.originalMousePosition,\n\t\t\ta = this.axis,\n\t\t\tdx = ( event.pageX - smp.left ) || 0,\n\t\t\tdy = ( event.pageY - smp.top ) || 0,\n\t\t\ttrigger = this._change[ a ];\n\n\t\tthis._updatePrevProperties();\n\n\t\tif ( !trigger ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tdata = trigger.apply( this, [ event, dx, dy ] );\n\n\t\tthis._updateVirtualBoundaries( event.shiftKey );\n\t\tif ( this._aspectRatio || event.shiftKey ) {\n\t\t\tdata = this._updateRatio( data, event );\n\t\t}\n\n\t\tdata = this._respectSize( data, event );\n\n\t\tthis._updateCache( data );\n\n\t\tthis._propagate( \"resize\", event );\n\n\t\tprops = this._applyChanges();\n\n\t\tif ( !this._helper && this._proportionallyResizeElements.length ) {\n\t\t\tthis._proportionallyResize();\n\t\t}\n\n\t\tif ( !$.isEmptyObject( props ) ) {\n\t\t\tthis._updatePrevProperties();\n\t\t\tthis._trigger( \"resize\", event, this.ui() );\n\t\t\tthis._applyChanges();\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function( event ) {\n\n\t\tthis.resizing = false;\n\t\tvar pr, ista, soffseth, soffsetw, s, left, top,\n\t\t\to = this.options, that = this;\n\n\t\tif ( this._helper ) {\n\n\t\t\tpr = this._proportionallyResizeElements;\n\t\t\tista = pr.length && ( /textarea/i ).test( pr[ 0 ].nodeName );\n\t\t\tsoffseth = ista && this._hasScroll( pr[ 0 ], \"left\" ) ? 0 : that.sizeDiff.height;\n\t\t\tsoffsetw = ista ? 0 : that.sizeDiff.width;\n\n\t\t\ts = {\n\t\t\t\twidth: ( that.helper.width() - soffsetw ),\n\t\t\t\theight: ( that.helper.height() - soffseth )\n\t\t\t};\n\t\t\tleft = ( parseFloat( that.element.css( \"left\" ) ) +\n\t\t\t\t( that.position.left - that.originalPosition.left ) ) || null;\n\t\t\ttop = ( parseFloat( that.element.css( \"top\" ) ) +\n\t\t\t\t( that.position.top - that.originalPosition.top ) ) || null;\n\n\t\t\tif ( !o.animate ) {\n\t\t\t\tthis.element.css( $.extend( s, { top: top, left: left } ) );\n\t\t\t}\n\n\t\t\tthat.helper.height( that.size.height );\n\t\t\tthat.helper.width( that.size.width );\n\n\t\t\tif ( this._helper && !o.animate ) {\n\t\t\t\tthis._proportionallyResize();\n\t\t\t}\n\t\t}\n\n\t\t$( \"body\" ).css( \"cursor\", \"auto\" );\n\n\t\tthis._removeClass( \"ui-resizable-resizing\" );\n\n\t\tthis._propagate( \"stop\", event );\n\n\t\tif ( this._helper ) {\n\t\t\tthis.helper.remove();\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\t_updatePrevProperties: function() {\n\t\tthis.prevPosition = {\n\t\t\ttop: this.position.top,\n\t\t\tleft: this.position.left\n\t\t};\n\t\tthis.prevSize = {\n\t\t\twidth: this.size.width,\n\t\t\theight: this.size.height\n\t\t};\n\t},\n\n\t_applyChanges: function() {\n\t\tvar props = {};\n\n\t\tif ( this.position.top !== this.prevPosition.top ) {\n\t\t\tprops.top = this.position.top + \"px\";\n\t\t}\n\t\tif ( this.position.left !== this.prevPosition.left ) {\n\t\t\tprops.left = this.position.left + \"px\";\n\t\t}\n\t\tif ( this.size.width !== this.prevSize.width ) {\n\t\t\tprops.width = this.size.width + \"px\";\n\t\t}\n\t\tif ( this.size.height !== this.prevSize.height ) {\n\t\t\tprops.height = this.size.height + \"px\";\n\t\t}\n\n\t\tthis.helper.css( props );\n\n\t\treturn props;\n\t},\n\n\t_updateVirtualBoundaries: function( forceAspectRatio ) {\n\t\tvar pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b,\n\t\t\to = this.options;\n\n\t\tb = {\n\t\t\tminWidth: this._isNumber( o.minWidth ) ? o.minWidth : 0,\n\t\t\tmaxWidth: this._isNumber( o.maxWidth ) ? o.maxWidth : Infinity,\n\t\t\tminHeight: this._isNumber( o.minHeight ) ? o.minHeight : 0,\n\t\t\tmaxHeight: this._isNumber( o.maxHeight ) ? o.maxHeight : Infinity\n\t\t};\n\n\t\tif ( this._aspectRatio || forceAspectRatio ) {\n\t\t\tpMinWidth = b.minHeight * this.aspectRatio;\n\t\t\tpMinHeight = b.minWidth / this.aspectRatio;\n\t\t\tpMaxWidth = b.maxHeight * this.aspectRatio;\n\t\t\tpMaxHeight = b.maxWidth / this.aspectRatio;\n\n\t\t\tif ( pMinWidth > b.minWidth ) {\n\t\t\t\tb.minWidth = pMinWidth;\n\t\t\t}\n\t\t\tif ( pMinHeight > b.minHeight ) {\n\t\t\t\tb.minHeight = pMinHeight;\n\t\t\t}\n\t\t\tif ( pMaxWidth < b.maxWidth ) {\n\t\t\t\tb.maxWidth = pMaxWidth;\n\t\t\t}\n\t\t\tif ( pMaxHeight < b.maxHeight ) {\n\t\t\t\tb.maxHeight = pMaxHeight;\n\t\t\t}\n\t\t}\n\t\tthis._vBoundaries = b;\n\t},\n\n\t_updateCache: function( data ) {\n\t\tthis.offset = this.helper.offset();\n\t\tif ( this._isNumber( data.left ) ) {\n\t\t\tthis.position.left = data.left;\n\t\t}\n\t\tif ( this._isNumber( data.top ) ) {\n\t\t\tthis.position.top = data.top;\n\t\t}\n\t\tif ( this._isNumber( data.height ) ) {\n\t\t\tthis.size.height = data.height;\n\t\t}\n\t\tif ( this._isNumber( data.width ) ) {\n\t\t\tthis.size.width = data.width;\n\t\t}\n\t},\n\n\t_updateRatio: function( data ) {\n\n\t\tvar cpos = this.position,\n\t\t\tcsize = this.size,\n\t\t\ta = this.axis;\n\n\t\tif ( this._isNumber( data.height ) ) {\n\t\t\tdata.width = ( data.height * this.aspectRatio );\n\t\t} else if ( this._isNumber( data.width ) ) {\n\t\t\tdata.height = ( data.width / this.aspectRatio );\n\t\t}\n\n\t\tif ( a === \"sw\" ) {\n\t\t\tdata.left = cpos.left + ( csize.width - data.width );\n\t\t\tdata.top = null;\n\t\t}\n\t\tif ( a === \"nw\" ) {\n\t\t\tdata.top = cpos.top + ( csize.height - data.height );\n\t\t\tdata.left = cpos.left + ( csize.width - data.width );\n\t\t}\n\n\t\treturn data;\n\t},\n\n\t_respectSize: function( data ) {\n\n\t\tvar o = this._vBoundaries,\n\t\t\ta = this.axis,\n\t\t\tismaxw = this._isNumber( data.width ) && o.maxWidth && ( o.maxWidth < data.width ),\n\t\t\tismaxh = this._isNumber( data.height ) && o.maxHeight && ( o.maxHeight < data.height ),\n\t\t\tisminw = this._isNumber( data.width ) && o.minWidth && ( o.minWidth > data.width ),\n\t\t\tisminh = this._isNumber( data.height ) && o.minHeight && ( o.minHeight > data.height ),\n\t\t\tdw = this.originalPosition.left + this.originalSize.width,\n\t\t\tdh = this.originalPosition.top + this.originalSize.height,\n\t\t\tcw = /sw|nw|w/.test( a ), ch = /nw|ne|n/.test( a );\n\t\tif ( isminw ) {\n\t\t\tdata.width = o.minWidth;\n\t\t}\n\t\tif ( isminh ) {\n\t\t\tdata.height = o.minHeight;\n\t\t}\n\t\tif ( ismaxw ) {\n\t\t\tdata.width = o.maxWidth;\n\t\t}\n\t\tif ( ismaxh ) {\n\t\t\tdata.height = o.maxHeight;\n\t\t}\n\n\t\tif ( isminw && cw ) {\n\t\t\tdata.left = dw - o.minWidth;\n\t\t}\n\t\tif ( ismaxw && cw ) {\n\t\t\tdata.left = dw - o.maxWidth;\n\t\t}\n\t\tif ( isminh && ch ) {\n\t\t\tdata.top = dh - o.minHeight;\n\t\t}\n\t\tif ( ismaxh && ch ) {\n\t\t\tdata.top = dh - o.maxHeight;\n\t\t}\n\n\t\t// Fixing jump error on top/left - bug #2330\n\t\tif ( !data.width && !data.height && !data.left && data.top ) {\n\t\t\tdata.top = null;\n\t\t} else if ( !data.width && !data.height && !data.top && data.left ) {\n\t\t\tdata.left = null;\n\t\t}\n\n\t\treturn data;\n\t},\n\n\t_getPaddingPlusBorderDimensions: function( element ) {\n\t\tvar i = 0,\n\t\t\twidths = [],\n\t\t\tborders = [\n\t\t\t\telement.css( \"borderTopWidth\" ),\n\t\t\t\telement.css( \"borderRightWidth\" ),\n\t\t\t\telement.css( \"borderBottomWidth\" ),\n\t\t\t\telement.css( \"borderLeftWidth\" )\n\t\t\t],\n\t\t\tpaddings = [\n\t\t\t\telement.css( \"paddingTop\" ),\n\t\t\t\telement.css( \"paddingRight\" ),\n\t\t\t\telement.css( \"paddingBottom\" ),\n\t\t\t\telement.css( \"paddingLeft\" )\n\t\t\t];\n\n\t\tfor ( ; i < 4; i++ ) {\n\t\t\twidths[ i ] = ( parseFloat( borders[ i ] ) || 0 );\n\t\t\twidths[ i ] += ( parseFloat( paddings[ i ] ) || 0 );\n\t\t}\n\n\t\treturn {\n\t\t\theight: widths[ 0 ] + widths[ 2 ],\n\t\t\twidth: widths[ 1 ] + widths[ 3 ]\n\t\t};\n\t},\n\n\t_proportionallyResize: function() {\n\n\t\tif ( !this._proportionallyResizeElements.length ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar prel,\n\t\t\ti = 0,\n\t\t\telement = this.helper || this.element;\n\n\t\tfor ( ; i < this._proportionallyResizeElements.length; i++ ) {\n\n\t\t\tprel = this._proportionallyResizeElements[ i ];\n\n\t\t\t// TODO: Seems like a bug to cache this.outerDimensions\n\t\t\t// considering that we are in a loop.\n\t\t\tif ( !this.outerDimensions ) {\n\t\t\t\tthis.outerDimensions = this._getPaddingPlusBorderDimensions( prel );\n\t\t\t}\n\n\t\t\tprel.css( {\n\t\t\t\theight: ( element.height() - this.outerDimensions.height ) || 0,\n\t\t\t\twidth: ( element.width() - this.outerDimensions.width ) || 0\n\t\t\t} );\n\n\t\t}\n\n\t},\n\n\t_renderProxy: function() {\n\n\t\tvar el = this.element, o = this.options;\n\t\tthis.elementOffset = el.offset();\n\n\t\tif ( this._helper ) {\n\n\t\t\tthis.helper = this.helper || $( \"<div style='overflow:hidden;'></div>\" );\n\n\t\t\tthis._addClass( this.helper, this._helper );\n\t\t\tthis.helper.css( {\n\t\t\t\twidth: this.element.outerWidth(),\n\t\t\t\theight: this.element.outerHeight(),\n\t\t\t\tposition: \"absolute\",\n\t\t\t\tleft: this.elementOffset.left + \"px\",\n\t\t\t\ttop: this.elementOffset.top + \"px\",\n\t\t\t\tzIndex: ++o.zIndex //TODO: Don't modify option\n\t\t\t} );\n\n\t\t\tthis.helper\n\t\t\t\t.appendTo( \"body\" )\n\t\t\t\t.disableSelection();\n\n\t\t} else {\n\t\t\tthis.helper = this.element;\n\t\t}\n\n\t},\n\n\t_change: {\n\t\te: function( event, dx ) {\n\t\t\treturn { width: this.originalSize.width + dx };\n\t\t},\n\t\tw: function( event, dx ) {\n\t\t\tvar cs = this.originalSize, sp = this.originalPosition;\n\t\t\treturn { left: sp.left + dx, width: cs.width - dx };\n\t\t},\n\t\tn: function( event, dx, dy ) {\n\t\t\tvar cs = this.originalSize, sp = this.originalPosition;\n\t\t\treturn { top: sp.top + dy, height: cs.height - dy };\n\t\t},\n\t\ts: function( event, dx, dy ) {\n\t\t\treturn { height: this.originalSize.height + dy };\n\t\t},\n\t\tse: function( event, dx, dy ) {\n\t\t\treturn $.extend( this._change.s.apply( this, arguments ),\n\t\t\t\tthis._change.e.apply( this, [ event, dx, dy ] ) );\n\t\t},\n\t\tsw: function( event, dx, dy ) {\n\t\t\treturn $.extend( this._change.s.apply( this, arguments ),\n\t\t\t\tthis._change.w.apply( this, [ event, dx, dy ] ) );\n\t\t},\n\t\tne: function( event, dx, dy ) {\n\t\t\treturn $.extend( this._change.n.apply( this, arguments ),\n\t\t\t\tthis._change.e.apply( this, [ event, dx, dy ] ) );\n\t\t},\n\t\tnw: function( event, dx, dy ) {\n\t\t\treturn $.extend( this._change.n.apply( this, arguments ),\n\t\t\t\tthis._change.w.apply( this, [ event, dx, dy ] ) );\n\t\t}\n\t},\n\n\t_propagate: function( n, event ) {\n\t\t$.ui.plugin.call( this, n, [ event, this.ui() ] );\n\t\t( n !== \"resize\" && this._trigger( n, event, this.ui() ) );\n\t},\n\n\tplugins: {},\n\n\tui: function() {\n\t\treturn {\n\t\t\toriginalElement: this.originalElement,\n\t\t\telement: this.element,\n\t\t\thelper: this.helper,\n\t\t\tposition: this.position,\n\t\t\tsize: this.size,\n\t\t\toriginalSize: this.originalSize,\n\t\t\toriginalPosition: this.originalPosition\n\t\t};\n\t}\n\n} );\n\n/*\n * Resizable Extensions\n */\n\n$.ui.plugin.add( \"resizable\", \"animate\", {\n\n\tstop: function( event ) {\n\t\tvar that = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tpr = that._proportionallyResizeElements,\n\t\t\tista = pr.length && ( /textarea/i ).test( pr[ 0 ].nodeName ),\n\t\t\tsoffseth = ista && that._hasScroll( pr[ 0 ], \"left\" ) ? 0 : that.sizeDiff.height,\n\t\t\tsoffsetw = ista ? 0 : that.sizeDiff.width,\n\t\t\tstyle = {\n\t\t\t\twidth: ( that.size.width - soffsetw ),\n\t\t\t\theight: ( that.size.height - soffseth )\n\t\t\t},\n\t\t\tleft = ( parseFloat( that.element.css( \"left\" ) ) +\n\t\t\t\t( that.position.left - that.originalPosition.left ) ) || null,\n\t\t\ttop = ( parseFloat( that.element.css( \"top\" ) ) +\n\t\t\t\t( that.position.top - that.originalPosition.top ) ) || null;\n\n\t\tthat.element.animate(\n\t\t\t$.extend( style, top && left ? { top: top, left: left } : {} ), {\n\t\t\t\tduration: o.animateDuration,\n\t\t\t\teasing: o.animateEasing,\n\t\t\t\tstep: function() {\n\n\t\t\t\t\tvar data = {\n\t\t\t\t\t\twidth: parseFloat( that.element.css( \"width\" ) ),\n\t\t\t\t\t\theight: parseFloat( that.element.css( \"height\" ) ),\n\t\t\t\t\t\ttop: parseFloat( that.element.css( \"top\" ) ),\n\t\t\t\t\t\tleft: parseFloat( that.element.css( \"left\" ) )\n\t\t\t\t\t};\n\n\t\t\t\t\tif ( pr && pr.length ) {\n\t\t\t\t\t\t$( pr[ 0 ] ).css( { width: data.width, height: data.height } );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Propagating resize, and updating values for each animation step\n\t\t\t\t\tthat._updateCache( data );\n\t\t\t\t\tthat._propagate( \"resize\", event );\n\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t}\n\n} );\n\n$.ui.plugin.add( \"resizable\", \"containment\", {\n\n\tstart: function() {\n\t\tvar element, p, co, ch, cw, width, height,\n\t\t\tthat = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tel = that.element,\n\t\t\toc = o.containment,\n\t\t\tce = ( oc instanceof $ ) ?\n\t\t\t\toc.get( 0 ) :\n\t\t\t\t( /parent/.test( oc ) ) ? el.parent().get( 0 ) : oc;\n\n\t\tif ( !ce ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthat.containerElement = $( ce );\n\n\t\tif ( /document/.test( oc ) || oc === document ) {\n\t\t\tthat.containerOffset = {\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0\n\t\t\t};\n\t\t\tthat.containerPosition = {\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0\n\t\t\t};\n\n\t\t\tthat.parentData = {\n\t\t\t\telement: $( document ),\n\t\t\t\tleft: 0,\n\t\t\t\ttop: 0,\n\t\t\t\twidth: $( document ).width(),\n\t\t\t\theight: $( document ).height() || document.body.parentNode.scrollHeight\n\t\t\t};\n\t\t} else {\n\t\t\telement = $( ce );\n\t\t\tp = [];\n\t\t\t$( [ \"Top\", \"Right\", \"Left\", \"Bottom\" ] ).each( function( i, name ) {\n\t\t\t\tp[ i ] = that._num( element.css( \"padding\" + name ) );\n\t\t\t} );\n\n\t\t\tthat.containerOffset = element.offset();\n\t\t\tthat.containerPosition = element.position();\n\t\t\tthat.containerSize = {\n\t\t\t\theight: ( element.innerHeight() - p[ 3 ] ),\n\t\t\t\twidth: ( element.innerWidth() - p[ 1 ] )\n\t\t\t};\n\n\t\t\tco = that.containerOffset;\n\t\t\tch = that.containerSize.height;\n\t\t\tcw = that.containerSize.width;\n\t\t\twidth = ( that._hasScroll ( ce, \"left\" ) ? ce.scrollWidth : cw );\n\t\t\theight = ( that._hasScroll ( ce ) ? ce.scrollHeight : ch ) ;\n\n\t\t\tthat.parentData = {\n\t\t\t\telement: ce,\n\t\t\t\tleft: co.left,\n\t\t\t\ttop: co.top,\n\t\t\t\twidth: width,\n\t\t\t\theight: height\n\t\t\t};\n\t\t}\n\t},\n\n\tresize: function( event ) {\n\t\tvar woset, hoset, isParent, isOffsetRelative,\n\t\t\tthat = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tco = that.containerOffset,\n\t\t\tcp = that.position,\n\t\t\tpRatio = that._aspectRatio || event.shiftKey,\n\t\t\tcop = {\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0\n\t\t\t},\n\t\t\tce = that.containerElement,\n\t\t\tcontinueResize = true;\n\n\t\tif ( ce[ 0 ] !== document && ( /static/ ).test( ce.css( \"position\" ) ) ) {\n\t\t\tcop = co;\n\t\t}\n\n\t\tif ( cp.left < ( that._helper ? co.left : 0 ) ) {\n\t\t\tthat.size.width = that.size.width +\n\t\t\t\t( that._helper ?\n\t\t\t\t\t( that.position.left - co.left ) :\n\t\t\t\t\t( that.position.left - cop.left ) );\n\n\t\t\tif ( pRatio ) {\n\t\t\t\tthat.size.height = that.size.width / that.aspectRatio;\n\t\t\t\tcontinueResize = false;\n\t\t\t}\n\t\t\tthat.position.left = o.helper ? co.left : 0;\n\t\t}\n\n\t\tif ( cp.top < ( that._helper ? co.top : 0 ) ) {\n\t\t\tthat.size.height = that.size.height +\n\t\t\t\t( that._helper ?\n\t\t\t\t\t( that.position.top - co.top ) :\n\t\t\t\t\tthat.position.top );\n\n\t\t\tif ( pRatio ) {\n\t\t\t\tthat.size.width = that.size.height * that.aspectRatio;\n\t\t\t\tcontinueResize = false;\n\t\t\t}\n\t\t\tthat.position.top = that._helper ? co.top : 0;\n\t\t}\n\n\t\tisParent = that.containerElement.get( 0 ) === that.element.parent().get( 0 );\n\t\tisOffsetRelative = /relative|absolute/.test( that.containerElement.css( \"position\" ) );\n\n\t\tif ( isParent && isOffsetRelative ) {\n\t\t\tthat.offset.left = that.parentData.left + that.position.left;\n\t\t\tthat.offset.top = that.parentData.top + that.position.top;\n\t\t} else {\n\t\t\tthat.offset.left = that.element.offset().left;\n\t\t\tthat.offset.top = that.element.offset().top;\n\t\t}\n\n\t\twoset = Math.abs( that.sizeDiff.width +\n\t\t\t( that._helper ?\n\t\t\t\tthat.offset.left - cop.left :\n\t\t\t\t( that.offset.left - co.left ) ) );\n\n\t\thoset = Math.abs( that.sizeDiff.height +\n\t\t\t( that._helper ?\n\t\t\t\tthat.offset.top - cop.top :\n\t\t\t\t( that.offset.top - co.top ) ) );\n\n\t\tif ( woset + that.size.width >= that.parentData.width ) {\n\t\t\tthat.size.width = that.parentData.width - woset;\n\t\t\tif ( pRatio ) {\n\t\t\t\tthat.size.height = that.size.width / that.aspectRatio;\n\t\t\t\tcontinueResize = false;\n\t\t\t}\n\t\t}\n\n\t\tif ( hoset + that.size.height >= that.parentData.height ) {\n\t\t\tthat.size.height = that.parentData.height - hoset;\n\t\t\tif ( pRatio ) {\n\t\t\t\tthat.size.width = that.size.height * that.aspectRatio;\n\t\t\t\tcontinueResize = false;\n\t\t\t}\n\t\t}\n\n\t\tif ( !continueResize ) {\n\t\t\tthat.position.left = that.prevPosition.left;\n\t\t\tthat.position.top = that.prevPosition.top;\n\t\t\tthat.size.width = that.prevSize.width;\n\t\t\tthat.size.height = that.prevSize.height;\n\t\t}\n\t},\n\n\tstop: function() {\n\t\tvar that = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tco = that.containerOffset,\n\t\t\tcop = that.containerPosition,\n\t\t\tce = that.containerElement,\n\t\t\thelper = $( that.helper ),\n\t\t\tho = helper.offset(),\n\t\t\tw = helper.outerWidth() - that.sizeDiff.width,\n\t\t\th = helper.outerHeight() - that.sizeDiff.height;\n\n\t\tif ( that._helper && !o.animate && ( /relative/ ).test( ce.css( \"position\" ) ) ) {\n\t\t\t$( this ).css( {\n\t\t\t\tleft: ho.left - cop.left - co.left,\n\t\t\t\twidth: w,\n\t\t\t\theight: h\n\t\t\t} );\n\t\t}\n\n\t\tif ( that._helper && !o.animate && ( /static/ ).test( ce.css( \"position\" ) ) ) {\n\t\t\t$( this ).css( {\n\t\t\t\tleft: ho.left - cop.left - co.left,\n\t\t\t\twidth: w,\n\t\t\t\theight: h\n\t\t\t} );\n\t\t}\n\t}\n} );\n\n$.ui.plugin.add( \"resizable\", \"alsoResize\", {\n\n\tstart: function() {\n\t\tvar that = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options;\n\n\t\t$( o.alsoResize ).each( function() {\n\t\t\tvar el = $( this );\n\t\t\tel.data( \"ui-resizable-alsoresize\", {\n\t\t\t\twidth: parseFloat( el.width() ), height: parseFloat( el.height() ),\n\t\t\t\tleft: parseFloat( el.css( \"left\" ) ), top: parseFloat( el.css( \"top\" ) )\n\t\t\t} );\n\t\t} );\n\t},\n\n\tresize: function( event, ui ) {\n\t\tvar that = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tos = that.originalSize,\n\t\t\top = that.originalPosition,\n\t\t\tdelta = {\n\t\t\t\theight: ( that.size.height - os.height ) || 0,\n\t\t\t\twidth: ( that.size.width - os.width ) || 0,\n\t\t\t\ttop: ( that.position.top - op.top ) || 0,\n\t\t\t\tleft: ( that.position.left - op.left ) || 0\n\t\t\t};\n\n\t\t\t$( o.alsoResize ).each( function() {\n\t\t\t\tvar el = $( this ), start = $( this ).data( \"ui-resizable-alsoresize\" ), style = {},\n\t\t\t\t\tcss = el.parents( ui.originalElement[ 0 ] ).length ?\n\t\t\t\t\t\t\t[ \"width\", \"height\" ] :\n\t\t\t\t\t\t\t[ \"width\", \"height\", \"top\", \"left\" ];\n\n\t\t\t\t$.each( css, function( i, prop ) {\n\t\t\t\t\tvar sum = ( start[ prop ] || 0 ) + ( delta[ prop ] || 0 );\n\t\t\t\t\tif ( sum && sum >= 0 ) {\n\t\t\t\t\t\tstyle[ prop ] = sum || null;\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\tel.css( style );\n\t\t\t} );\n\t},\n\n\tstop: function() {\n\t\t$( this ).removeData( \"ui-resizable-alsoresize\" );\n\t}\n} );\n\n$.ui.plugin.add( \"resizable\", \"ghost\", {\n\n\tstart: function() {\n\n\t\tvar that = $( this ).resizable( \"instance\" ), cs = that.size;\n\n\t\tthat.ghost = that.originalElement.clone();\n\t\tthat.ghost.css( {\n\t\t\topacity: 0.25,\n\t\t\tdisplay: \"block\",\n\t\t\tposition: \"relative\",\n\t\t\theight: cs.height,\n\t\t\twidth: cs.width,\n\t\t\tmargin: 0,\n\t\t\tleft: 0,\n\t\t\ttop: 0\n\t\t} );\n\n\t\tthat._addClass( that.ghost, \"ui-resizable-ghost\" );\n\n\t\t// DEPRECATED\n\t\t// TODO: remove after 1.12\n\t\tif ( $.uiBackCompat !== false && typeof that.options.ghost === \"string\" ) {\n\n\t\t\t// Ghost option\n\t\t\tthat.ghost.addClass( this.options.ghost );\n\t\t}\n\n\t\tthat.ghost.appendTo( that.helper );\n\n\t},\n\n\tresize: function() {\n\t\tvar that = $( this ).resizable( \"instance\" );\n\t\tif ( that.ghost ) {\n\t\t\tthat.ghost.css( {\n\t\t\t\tposition: \"relative\",\n\t\t\t\theight: that.size.height,\n\t\t\t\twidth: that.size.width\n\t\t\t} );\n\t\t}\n\t},\n\n\tstop: function() {\n\t\tvar that = $( this ).resizable( \"instance\" );\n\t\tif ( that.ghost && that.helper ) {\n\t\t\tthat.helper.get( 0 ).removeChild( that.ghost.get( 0 ) );\n\t\t}\n\t}\n\n} );\n\n$.ui.plugin.add( \"resizable\", \"grid\", {\n\n\tresize: function() {\n\t\tvar outerDimensions,\n\t\t\tthat = $( this ).resizable( \"instance\" ),\n\t\t\to = that.options,\n\t\t\tcs = that.size,\n\t\t\tos = that.originalSize,\n\t\t\top = that.originalPosition,\n\t\t\ta = that.axis,\n\t\t\tgrid = typeof o.grid === \"number\" ? [ o.grid, o.grid ] : o.grid,\n\t\t\tgridX = ( grid[ 0 ] || 1 ),\n\t\t\tgridY = ( grid[ 1 ] || 1 ),\n\t\t\tox = Math.round( ( cs.width - os.width ) / gridX ) * gridX,\n\t\t\toy = Math.round( ( cs.height - os.height ) / gridY ) * gridY,\n\t\t\tnewWidth = os.width + ox,\n\t\t\tnewHeight = os.height + oy,\n\t\t\tisMaxWidth = o.maxWidth && ( o.maxWidth < newWidth ),\n\t\t\tisMaxHeight = o.maxHeight && ( o.maxHeight < newHeight ),\n\t\t\tisMinWidth = o.minWidth && ( o.minWidth > newWidth ),\n\t\t\tisMinHeight = o.minHeight && ( o.minHeight > newHeight );\n\n\t\to.grid = grid;\n\n\t\tif ( isMinWidth ) {\n\t\t\tnewWidth += gridX;\n\t\t}\n\t\tif ( isMinHeight ) {\n\t\t\tnewHeight += gridY;\n\t\t}\n\t\tif ( isMaxWidth ) {\n\t\t\tnewWidth -= gridX;\n\t\t}\n\t\tif ( isMaxHeight ) {\n\t\t\tnewHeight -= gridY;\n\t\t}\n\n\t\tif ( /^(se|s|e)$/.test( a ) ) {\n\t\t\tthat.size.width = newWidth;\n\t\t\tthat.size.height = newHeight;\n\t\t} else if ( /^(ne)$/.test( a ) ) {\n\t\t\tthat.size.width = newWidth;\n\t\t\tthat.size.height = newHeight;\n\t\t\tthat.position.top = op.top - oy;\n\t\t} else if ( /^(sw)$/.test( a ) ) {\n\t\t\tthat.size.width = newWidth;\n\t\t\tthat.size.height = newHeight;\n\t\t\tthat.position.left = op.left - ox;\n\t\t} else {\n\t\t\tif ( newHeight - gridY <= 0 || newWidth - gridX <= 0 ) {\n\t\t\t\touterDimensions = that._getPaddingPlusBorderDimensions( this );\n\t\t\t}\n\n\t\t\tif ( newHeight - gridY > 0 ) {\n\t\t\t\tthat.size.height = newHeight;\n\t\t\t\tthat.position.top = op.top - oy;\n\t\t\t} else {\n\t\t\t\tnewHeight = gridY - outerDimensions.height;\n\t\t\t\tthat.size.height = newHeight;\n\t\t\t\tthat.position.top = op.top + os.height - newHeight;\n\t\t\t}\n\t\t\tif ( newWidth - gridX > 0 ) {\n\t\t\t\tthat.size.width = newWidth;\n\t\t\t\tthat.position.left = op.left - ox;\n\t\t\t} else {\n\t\t\t\tnewWidth = gridX - outerDimensions.width;\n\t\t\t\tthat.size.width = newWidth;\n\t\t\t\tthat.position.left = op.left + os.width - newWidth;\n\t\t\t}\n\t\t}\n\t}\n\n} );\n\nreturn $.ui.resizable;\n\n} ) );\n","/*!\n * jQuery UI Slider 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Slider\n//>>group: Widgets\n//>>description: Displays a flexible slider with ranges and accessibility via keyboard.\n//>>docs: http://api.jqueryui.com/slider/\n//>>demos: http://jqueryui.com/slider/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/slider.css\n//>>css.theme: ../../themes/base/theme.css\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"./mouse\",\n\t\t\t\"../keycode\",\n\t\t\t\"../version\",\n\t\t\t\"../widget\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n\nreturn $.widget( \"ui.slider\", $.ui.mouse, {\n\tversion: \"1.12.1\",\n\twidgetEventPrefix: \"slide\",\n\n\toptions: {\n\t\tanimate: false,\n\t\tclasses: {\n\t\t\t\"ui-slider\": \"ui-corner-all\",\n\t\t\t\"ui-slider-handle\": \"ui-corner-all\",\n\n\t\t\t// Note: ui-widget-header isn't the most fittingly semantic framework class for this\n\t\t\t// element, but worked best visually with a variety of themes\n\t\t\t\"ui-slider-range\": \"ui-corner-all ui-widget-header\"\n\t\t},\n\t\tdistance: 0,\n\t\tmax: 100,\n\t\tmin: 0,\n\t\torientation: \"horizontal\",\n\t\trange: false,\n\t\tstep: 1,\n\t\tvalue: 0,\n\t\tvalues: null,\n\n\t\t// Callbacks\n\t\tchange: null,\n\t\tslide: null,\n\t\tstart: null,\n\t\tstop: null\n\t},\n\n\t// Number of pages in a slider\n\t// (how many times can you page up/down to go through the whole range)\n\tnumPages: 5,\n\n\t_create: function() {\n\t\tthis._keySliding = false;\n\t\tthis._mouseSliding = false;\n\t\tthis._animateOff = true;\n\t\tthis._handleIndex = null;\n\t\tthis._detectOrientation();\n\t\tthis._mouseInit();\n\t\tthis._calculateNewMax();\n\n\t\tthis._addClass( \"ui-slider ui-slider-\" + this.orientation,\n\t\t\t\"ui-widget ui-widget-content\" );\n\n\t\tthis._refresh();\n\n\t\tthis._animateOff = false;\n\t},\n\n\t_refresh: function() {\n\t\tthis._createRange();\n\t\tthis._createHandles();\n\t\tthis._setupEvents();\n\t\tthis._refreshValue();\n\t},\n\n\t_createHandles: function() {\n\t\tvar i, handleCount,\n\t\t\toptions = this.options,\n\t\t\texistingHandles = this.element.find( \".ui-slider-handle\" ),\n\t\t\thandle = \"<span tabindex='0'></span>\",\n\t\t\thandles = [];\n\n\t\thandleCount = ( options.values && options.values.length ) || 1;\n\n\t\tif ( existingHandles.length > handleCount ) {\n\t\t\texistingHandles.slice( handleCount ).remove();\n\t\t\texistingHandles = existingHandles.slice( 0, handleCount );\n\t\t}\n\n\t\tfor ( i = existingHandles.length; i < handleCount; i++ ) {\n\t\t\thandles.push( handle );\n\t\t}\n\n\t\tthis.handles = existingHandles.add( $( handles.join( \"\" ) ).appendTo( this.element ) );\n\n\t\tthis._addClass( this.handles, \"ui-slider-handle\", \"ui-state-default\" );\n\n\t\tthis.handle = this.handles.eq( 0 );\n\n\t\tthis.handles.each( function( i ) {\n\t\t\t$( this )\n\t\t\t\t.data( \"ui-slider-handle-index\", i )\n\t\t\t\t.attr( \"tabIndex\", 0 );\n\t\t} );\n\t},\n\n\t_createRange: function() {\n\t\tvar options = this.options;\n\n\t\tif ( options.range ) {\n\t\t\tif ( options.range === true ) {\n\t\t\t\tif ( !options.values ) {\n\t\t\t\t\toptions.values = [ this._valueMin(), this._valueMin() ];\n\t\t\t\t} else if ( options.values.length && options.values.length !== 2 ) {\n\t\t\t\t\toptions.values = [ options.values[ 0 ], options.values[ 0 ] ];\n\t\t\t\t} else if ( $.isArray( options.values ) ) {\n\t\t\t\t\toptions.values = options.values.slice( 0 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( !this.range || !this.range.length ) {\n\t\t\t\tthis.range = $( \"<div>\" )\n\t\t\t\t\t.appendTo( this.element );\n\n\t\t\t\tthis._addClass( this.range, \"ui-slider-range\" );\n\t\t\t} else {\n\t\t\t\tthis._removeClass( this.range, \"ui-slider-range-min ui-slider-range-max\" );\n\n\t\t\t\t// Handle range switching from true to min/max\n\t\t\t\tthis.range.css( {\n\t\t\t\t\t\"left\": \"\",\n\t\t\t\t\t\"bottom\": \"\"\n\t\t\t\t} );\n\t\t\t}\n\t\t\tif ( options.range === \"min\" || options.range === \"max\" ) {\n\t\t\t\tthis._addClass( this.range, \"ui-slider-range-\" + options.range );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( this.range ) {\n\t\t\t\tthis.range.remove();\n\t\t\t}\n\t\t\tthis.range = null;\n\t\t}\n\t},\n\n\t_setupEvents: function() {\n\t\tthis._off( this.handles );\n\t\tthis._on( this.handles, this._handleEvents );\n\t\tthis._hoverable( this.handles );\n\t\tthis._focusable( this.handles );\n\t},\n\n\t_destroy: function() {\n\t\tthis.handles.remove();\n\t\tif ( this.range ) {\n\t\t\tthis.range.remove();\n\t\t}\n\n\t\tthis._mouseDestroy();\n\t},\n\n\t_mouseCapture: function( event ) {\n\t\tvar position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle,\n\t\t\tthat = this,\n\t\t\to = this.options;\n\n\t\tif ( o.disabled ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tthis.elementSize = {\n\t\t\twidth: this.element.outerWidth(),\n\t\t\theight: this.element.outerHeight()\n\t\t};\n\t\tthis.elementOffset = this.element.offset();\n\n\t\tposition = { x: event.pageX, y: event.pageY };\n\t\tnormValue = this._normValueFromMouse( position );\n\t\tdistance = this._valueMax() - this._valueMin() + 1;\n\t\tthis.handles.each( function( i ) {\n\t\t\tvar thisDistance = Math.abs( normValue - that.values( i ) );\n\t\t\tif ( ( distance > thisDistance ) ||\n\t\t\t\t( distance === thisDistance &&\n\t\t\t\t\t( i === that._lastChangedValue || that.values( i ) === o.min ) ) ) {\n\t\t\t\tdistance = thisDistance;\n\t\t\t\tclosestHandle = $( this );\n\t\t\t\tindex = i;\n\t\t\t}\n\t\t} );\n\n\t\tallowed = this._start( event, index );\n\t\tif ( allowed === false ) {\n\t\t\treturn false;\n\t\t}\n\t\tthis._mouseSliding = true;\n\n\t\tthis._handleIndex = index;\n\n\t\tthis._addClass( closestHandle, null, \"ui-state-active\" );\n\t\tclosestHandle.trigger( \"focus\" );\n\n\t\toffset = closestHandle.offset();\n\t\tmouseOverHandle = !$( event.target ).parents().addBack().is( \".ui-slider-handle\" );\n\t\tthis._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {\n\t\t\tleft: event.pageX - offset.left - ( closestHandle.width() / 2 ),\n\t\t\ttop: event.pageY - offset.top -\n\t\t\t\t( closestHandle.height() / 2 ) -\n\t\t\t\t( parseInt( closestHandle.css( \"borderTopWidth\" ), 10 ) || 0 ) -\n\t\t\t\t( parseInt( closestHandle.css( \"borderBottomWidth\" ), 10 ) || 0 ) +\n\t\t\t\t( parseInt( closestHandle.css( \"marginTop\" ), 10 ) || 0 )\n\t\t};\n\n\t\tif ( !this.handles.hasClass( \"ui-state-hover\" ) ) {\n\t\t\tthis._slide( event, index, normValue );\n\t\t}\n\t\tthis._animateOff = true;\n\t\treturn true;\n\t},\n\n\t_mouseStart: function() {\n\t\treturn true;\n\t},\n\n\t_mouseDrag: function( event ) {\n\t\tvar position = { x: event.pageX, y: event.pageY },\n\t\t\tnormValue = this._normValueFromMouse( position );\n\n\t\tthis._slide( event, this._handleIndex, normValue );\n\n\t\treturn false;\n\t},\n\n\t_mouseStop: function( event ) {\n\t\tthis._removeClass( this.handles, null, \"ui-state-active\" );\n\t\tthis._mouseSliding = false;\n\n\t\tthis._stop( event, this._handleIndex );\n\t\tthis._change( event, this._handleIndex );\n\n\t\tthis._handleIndex = null;\n\t\tthis._clickOffset = null;\n\t\tthis._animateOff = false;\n\n\t\treturn false;\n\t},\n\n\t_detectOrientation: function() {\n\t\tthis.orientation = ( this.options.orientation === \"vertical\" ) ? \"vertical\" : \"horizontal\";\n\t},\n\n\t_normValueFromMouse: function( position ) {\n\t\tvar pixelTotal,\n\t\t\tpixelMouse,\n\t\t\tpercentMouse,\n\t\t\tvalueTotal,\n\t\t\tvalueMouse;\n\n\t\tif ( this.orientation === \"horizontal\" ) {\n\t\t\tpixelTotal = this.elementSize.width;\n\t\t\tpixelMouse = position.x - this.elementOffset.left -\n\t\t\t\t( this._clickOffset ? this._clickOffset.left : 0 );\n\t\t} else {\n\t\t\tpixelTotal = this.elementSize.height;\n\t\t\tpixelMouse = position.y - this.elementOffset.top -\n\t\t\t\t( this._clickOffset ? this._clickOffset.top : 0 );\n\t\t}\n\n\t\tpercentMouse = ( pixelMouse / pixelTotal );\n\t\tif ( percentMouse > 1 ) {\n\t\t\tpercentMouse = 1;\n\t\t}\n\t\tif ( percentMouse < 0 ) {\n\t\t\tpercentMouse = 0;\n\t\t}\n\t\tif ( this.orientation === \"vertical\" ) {\n\t\t\tpercentMouse = 1 - percentMouse;\n\t\t}\n\n\t\tvalueTotal = this._valueMax() - this._valueMin();\n\t\tvalueMouse = this._valueMin() + percentMouse * valueTotal;\n\n\t\treturn this._trimAlignValue( valueMouse );\n\t},\n\n\t_uiHash: function( index, value, values ) {\n\t\tvar uiHash = {\n\t\t\thandle: this.handles[ index ],\n\t\t\thandleIndex: index,\n\t\t\tvalue: value !== undefined ? value : this.value()\n\t\t};\n\n\t\tif ( this._hasMultipleValues() ) {\n\t\t\tuiHash.value = value !== undefined ? value : this.values( index );\n\t\t\tuiHash.values = values || this.values();\n\t\t}\n\n\t\treturn uiHash;\n\t},\n\n\t_hasMultipleValues: function() {\n\t\treturn this.options.values && this.options.values.length;\n\t},\n\n\t_start: function( event, index ) {\n\t\treturn this._trigger( \"start\", event, this._uiHash( index ) );\n\t},\n\n\t_slide: function( event, index, newVal ) {\n\t\tvar allowed, otherVal,\n\t\t\tcurrentValue = this.value(),\n\t\t\tnewValues = this.values();\n\n\t\tif ( this._hasMultipleValues() ) {\n\t\t\totherVal = this.values( index ? 0 : 1 );\n\t\t\tcurrentValue = this.values( index );\n\n\t\t\tif ( this.options.values.length === 2 && this.options.range === true ) {\n\t\t\t\tnewVal = index === 0 ? Math.min( otherVal, newVal ) : Math.max( otherVal, newVal );\n\t\t\t}\n\n\t\t\tnewValues[ index ] = newVal;\n\t\t}\n\n\t\tif ( newVal === currentValue ) {\n\t\t\treturn;\n\t\t}\n\n\t\tallowed = this._trigger( \"slide\", event, this._uiHash( index, newVal, newValues ) );\n\n\t\t// A slide can be canceled by returning false from the slide callback\n\t\tif ( allowed === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( this._hasMultipleValues() ) {\n\t\t\tthis.values( index, newVal );\n\t\t} else {\n\t\t\tthis.value( newVal );\n\t\t}\n\t},\n\n\t_stop: function( event, index ) {\n\t\tthis._trigger( \"stop\", event, this._uiHash( index ) );\n\t},\n\n\t_change: function( event, index ) {\n\t\tif ( !this._keySliding && !this._mouseSliding ) {\n\n\t\t\t//store the last changed value index for reference when handles overlap\n\t\t\tthis._lastChangedValue = index;\n\t\t\tthis._trigger( \"change\", event, this._uiHash( index ) );\n\t\t}\n\t},\n\n\tvalue: function( newValue ) {\n\t\tif ( arguments.length ) {\n\t\t\tthis.options.value = this._trimAlignValue( newValue );\n\t\t\tthis._refreshValue();\n\t\t\tthis._change( null, 0 );\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._value();\n\t},\n\n\tvalues: function( index, newValue ) {\n\t\tvar vals,\n\t\t\tnewValues,\n\t\t\ti;\n\n\t\tif ( arguments.length > 1 ) {\n\t\t\tthis.options.values[ index ] = this._trimAlignValue( newValue );\n\t\t\tthis._refreshValue();\n\t\t\tthis._change( null, index );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( arguments.length ) {\n\t\t\tif ( $.isArray( arguments[ 0 ] ) ) {\n\t\t\t\tvals = this.options.values;\n\t\t\t\tnewValues = arguments[ 0 ];\n\t\t\t\tfor ( i = 0; i < vals.length; i += 1 ) {\n\t\t\t\t\tvals[ i ] = this._trimAlignValue( newValues[ i ] );\n\t\t\t\t\tthis._change( null, i );\n\t\t\t\t}\n\t\t\t\tthis._refreshValue();\n\t\t\t} else {\n\t\t\t\tif ( this._hasMultipleValues() ) {\n\t\t\t\t\treturn this._values( index );\n\t\t\t\t} else {\n\t\t\t\t\treturn this.value();\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn this._values();\n\t\t}\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar i,\n\t\t\tvalsLength = 0;\n\n\t\tif ( key === \"range\" && this.options.range === true ) {\n\t\t\tif ( value === \"min\" ) {\n\t\t\t\tthis.options.value = this._values( 0 );\n\t\t\t\tthis.options.values = null;\n\t\t\t} else if ( value === \"max\" ) {\n\t\t\t\tthis.options.value = this._values( this.options.values.length - 1 );\n\t\t\t\tthis.options.values = null;\n\t\t\t}\n\t\t}\n\n\t\tif ( $.isArray( this.options.values ) ) {\n\t\t\tvalsLength = this.options.values.length;\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tswitch ( key ) {\n\t\t\tcase \"orientation\":\n\t\t\t\tthis._detectOrientation();\n\t\t\t\tthis._removeClass( \"ui-slider-horizontal ui-slider-vertical\" )\n\t\t\t\t\t._addClass( \"ui-slider-\" + this.orientation );\n\t\t\t\tthis._refreshValue();\n\t\t\t\tif ( this.options.range ) {\n\t\t\t\t\tthis._refreshRange( value );\n\t\t\t\t}\n\n\t\t\t\t// Reset positioning from previous orientation\n\t\t\t\tthis.handles.css( value === \"horizontal\" ? \"bottom\" : \"left\", \"\" );\n\t\t\t\tbreak;\n\t\t\tcase \"value\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\t\t\t\tthis._change( null, 0 );\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"values\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refreshValue();\n\n\t\t\t\t// Start from the last handle to prevent unreachable handles (#9046)\n\t\t\t\tfor ( i = valsLength - 1; i >= 0; i-- ) {\n\t\t\t\t\tthis._change( null, i );\n\t\t\t\t}\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"step\":\n\t\t\tcase \"min\":\n\t\t\tcase \"max\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._calculateNewMax();\n\t\t\t\tthis._refreshValue();\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t\tcase \"range\":\n\t\t\t\tthis._animateOff = true;\n\t\t\t\tthis._refresh();\n\t\t\t\tthis._animateOff = false;\n\t\t\t\tbreak;\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._super( value );\n\n\t\tthis._toggleClass( null, \"ui-state-disabled\", !!value );\n\t},\n\n\t//internal value getter\n\t// _value() returns value trimmed by min and max, aligned by step\n\t_value: function() {\n\t\tvar val = this.options.value;\n\t\tval = this._trimAlignValue( val );\n\n\t\treturn val;\n\t},\n\n\t//internal values getter\n\t// _values() returns array of values trimmed by min and max, aligned by step\n\t// _values( index ) returns single value trimmed by min and max, aligned by step\n\t_values: function( index ) {\n\t\tvar val,\n\t\t\tvals,\n\t\t\ti;\n\n\t\tif ( arguments.length ) {\n\t\t\tval = this.options.values[ index ];\n\t\t\tval = this._trimAlignValue( val );\n\n\t\t\treturn val;\n\t\t} else if ( this._hasMultipleValues() ) {\n\n\t\t\t// .slice() creates a copy of the array\n\t\t\t// this copy gets trimmed by min and max and then returned\n\t\t\tvals = this.options.values.slice();\n\t\t\tfor ( i = 0; i < vals.length; i += 1 ) {\n\t\t\t\tvals[ i ] = this._trimAlignValue( vals[ i ] );\n\t\t\t}\n\n\t\t\treturn vals;\n\t\t} else {\n\t\t\treturn [];\n\t\t}\n\t},\n\n\t// Returns the step-aligned value that val is closest to, between (inclusive) min and max\n\t_trimAlignValue: function( val ) {\n\t\tif ( val <= this._valueMin() ) {\n\t\t\treturn this._valueMin();\n\t\t}\n\t\tif ( val >= this._valueMax() ) {\n\t\t\treturn this._valueMax();\n\t\t}\n\t\tvar step = ( this.options.step > 0 ) ? this.options.step : 1,\n\t\t\tvalModStep = ( val - this._valueMin() ) % step,\n\t\t\talignValue = val - valModStep;\n\n\t\tif ( Math.abs( valModStep ) * 2 >= step ) {\n\t\t\talignValue += ( valModStep > 0 ) ? step : ( -step );\n\t\t}\n\n\t\t// Since JavaScript has problems with large floats, round\n\t\t// the final value to 5 digits after the decimal point (see #4124)\n\t\treturn parseFloat( alignValue.toFixed( 5 ) );\n\t},\n\n\t_calculateNewMax: function() {\n\t\tvar max = this.options.max,\n\t\t\tmin = this._valueMin(),\n\t\t\tstep = this.options.step,\n\t\t\taboveMin = Math.round( ( max - min ) / step ) * step;\n\t\tmax = aboveMin + min;\n\t\tif ( max > this.options.max ) {\n\n\t\t\t//If max is not divisible by step, rounding off may increase its value\n\t\t\tmax -= step;\n\t\t}\n\t\tthis.max = parseFloat( max.toFixed( this._precision() ) );\n\t},\n\n\t_precision: function() {\n\t\tvar precision = this._precisionOf( this.options.step );\n\t\tif ( this.options.min !== null ) {\n\t\t\tprecision = Math.max( precision, this._precisionOf( this.options.min ) );\n\t\t}\n\t\treturn precision;\n\t},\n\n\t_precisionOf: function( num ) {\n\t\tvar str = num.toString(),\n\t\t\tdecimal = str.indexOf( \".\" );\n\t\treturn decimal === -1 ? 0 : str.length - decimal - 1;\n\t},\n\n\t_valueMin: function() {\n\t\treturn this.options.min;\n\t},\n\n\t_valueMax: function() {\n\t\treturn this.max;\n\t},\n\n\t_refreshRange: function( orientation ) {\n\t\tif ( orientation === \"vertical\" ) {\n\t\t\tthis.range.css( { \"width\": \"\", \"left\": \"\" } );\n\t\t}\n\t\tif ( orientation === \"horizontal\" ) {\n\t\t\tthis.range.css( { \"height\": \"\", \"bottom\": \"\" } );\n\t\t}\n\t},\n\n\t_refreshValue: function() {\n\t\tvar lastValPercent, valPercent, value, valueMin, valueMax,\n\t\t\toRange = this.options.range,\n\t\t\to = this.options,\n\t\t\tthat = this,\n\t\t\tanimate = ( !this._animateOff ) ? o.animate : false,\n\t\t\t_set = {};\n\n\t\tif ( this._hasMultipleValues() ) {\n\t\t\tthis.handles.each( function( i ) {\n\t\t\t\tvalPercent = ( that.values( i ) - that._valueMin() ) / ( that._valueMax() -\n\t\t\t\t\tthat._valueMin() ) * 100;\n\t\t\t\t_set[ that.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\n\t\t\t\t$( this ).stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\n\t\t\t\tif ( that.options.range === true ) {\n\t\t\t\t\tif ( that.orientation === \"horizontal\" ) {\n\t\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\t\t\t\tleft: valPercent + \"%\"\n\t\t\t\t\t\t\t}, o.animate );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( i === 1 ) {\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\t\t\t\twidth: ( valPercent - lastValPercent ) + \"%\"\n\t\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tqueue: false,\n\t\t\t\t\t\t\t\tduration: o.animate\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ( i === 0 ) {\n\t\t\t\t\t\t\tthat.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\t\t\t\tbottom: ( valPercent ) + \"%\"\n\t\t\t\t\t\t\t}, o.animate );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( i === 1 ) {\n\t\t\t\t\t\t\tthat.range[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\t\t\t\theight: ( valPercent - lastValPercent ) + \"%\"\n\t\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tqueue: false,\n\t\t\t\t\t\t\t\tduration: o.animate\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlastValPercent = valPercent;\n\t\t\t} );\n\t\t} else {\n\t\t\tvalue = this.value();\n\t\t\tvalueMin = this._valueMin();\n\t\t\tvalueMax = this._valueMax();\n\t\t\tvalPercent = ( valueMax !== valueMin ) ?\n\t\t\t\t\t( value - valueMin ) / ( valueMax - valueMin ) * 100 :\n\t\t\t\t\t0;\n\t\t\t_set[ this.orientation === \"horizontal\" ? \"left\" : \"bottom\" ] = valPercent + \"%\";\n\t\t\tthis.handle.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( _set, o.animate );\n\n\t\t\tif ( oRange === \"min\" && this.orientation === \"horizontal\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\twidth: valPercent + \"%\"\n\t\t\t\t}, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"max\" && this.orientation === \"horizontal\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\twidth: ( 100 - valPercent ) + \"%\"\n\t\t\t\t}, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"min\" && this.orientation === \"vertical\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\theight: valPercent + \"%\"\n\t\t\t\t}, o.animate );\n\t\t\t}\n\t\t\tif ( oRange === \"max\" && this.orientation === \"vertical\" ) {\n\t\t\t\tthis.range.stop( 1, 1 )[ animate ? \"animate\" : \"css\" ]( {\n\t\t\t\t\theight: ( 100 - valPercent ) + \"%\"\n\t\t\t\t}, o.animate );\n\t\t\t}\n\t\t}\n\t},\n\n\t_handleEvents: {\n\t\tkeydown: function( event ) {\n\t\t\tvar allowed, curVal, newVal, step,\n\t\t\t\tindex = $( event.target ).data( \"ui-slider-handle-index\" );\n\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tif ( !this._keySliding ) {\n\t\t\t\t\t\tthis._keySliding = true;\n\t\t\t\t\t\tthis._addClass( $( event.target ), null, \"ui-state-active\" );\n\t\t\t\t\t\tallowed = this._start( event, index );\n\t\t\t\t\t\tif ( allowed === false ) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tstep = this.options.step;\n\t\t\tif ( this._hasMultipleValues() ) {\n\t\t\t\tcurVal = newVal = this.values( index );\n\t\t\t} else {\n\t\t\t\tcurVal = newVal = this.value();\n\t\t\t}\n\n\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase $.ui.keyCode.HOME:\n\t\t\t\t\tnewVal = this._valueMin();\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.END:\n\t\t\t\t\tnewVal = this._valueMax();\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\t\t\tnewVal = this._trimAlignValue(\n\t\t\t\t\t\tcurVal + ( ( this._valueMax() - this._valueMin() ) / this.numPages )\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\t\t\tnewVal = this._trimAlignValue(\n\t\t\t\t\t\tcurVal - ( ( this._valueMax() - this._valueMin() ) / this.numPages ) );\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.UP:\n\t\t\t\tcase $.ui.keyCode.RIGHT:\n\t\t\t\t\tif ( curVal === this._valueMax() ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tnewVal = this._trimAlignValue( curVal + step );\n\t\t\t\t\tbreak;\n\t\t\t\tcase $.ui.keyCode.DOWN:\n\t\t\t\tcase $.ui.keyCode.LEFT:\n\t\t\t\t\tif ( curVal === this._valueMin() ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tnewVal = this._trimAlignValue( curVal - step );\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tthis._slide( event, index, newVal );\n\t\t},\n\t\tkeyup: function( event ) {\n\t\t\tvar index = $( event.target ).data( \"ui-slider-handle-index\" );\n\n\t\t\tif ( this._keySliding ) {\n\t\t\t\tthis._keySliding = false;\n\t\t\t\tthis._stop( event, index );\n\t\t\t\tthis._change( event, index );\n\t\t\t\tthis._removeClass( $( event.target ), null, \"ui-state-active\" );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n} ) );\n","/*!\n * jQuery UI Sortable 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Sortable\n//>>group: Interactions\n//>>description: Enables items in a list to be sorted using the mouse.\n//>>docs: http://api.jqueryui.com/sortable/\n//>>demos: http://jqueryui.com/sortable/\n//>>css.structure: ../../themes/base/sortable.css\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"./mouse\",\n\t\t\t\"../data\",\n\t\t\t\"../ie\",\n\t\t\t\"../scroll-parent\",\n\t\t\t\"../version\",\n\t\t\t\"../widget\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n\nreturn $.widget( \"ui.sortable\", $.ui.mouse, {\n\tversion: \"1.12.1\",\n\twidgetEventPrefix: \"sort\",\n\tready: false,\n\toptions: {\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectWith: false,\n\t\tcontainment: false,\n\t\tcursor: \"auto\",\n\t\tcursorAt: false,\n\t\tdropOnEmpty: true,\n\t\tforcePlaceholderSize: false,\n\t\tforceHelperSize: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\titems: \"> *\",\n\t\topacity: false,\n\t\tplaceholder: false,\n\t\trevert: false,\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tscope: \"default\",\n\t\ttolerance: \"intersect\",\n\t\tzIndex: 1000,\n\n\t\t// Callbacks\n\t\tactivate: null,\n\t\tbeforeStop: null,\n\t\tchange: null,\n\t\tdeactivate: null,\n\t\tout: null,\n\t\tover: null,\n\t\treceive: null,\n\t\tremove: null,\n\t\tsort: null,\n\t\tstart: null,\n\t\tstop: null,\n\t\tupdate: null\n\t},\n\n\t_isOverAxis: function( x, reference, size ) {\n\t\treturn ( x >= reference ) && ( x < ( reference + size ) );\n\t},\n\n\t_isFloating: function( item ) {\n\t\treturn ( /left|right/ ).test( item.css( \"float\" ) ) ||\n\t\t\t( /inline|table-cell/ ).test( item.css( \"display\" ) );\n\t},\n\n\t_create: function() {\n\t\tthis.containerCache = {};\n\t\tthis._addClass( \"ui-sortable\" );\n\n\t\t//Get the items\n\t\tthis.refresh();\n\n\t\t//Let's determine the parent's offset\n\t\tthis.offset = this.element.offset();\n\n\t\t//Initialize mouse events for interaction\n\t\tthis._mouseInit();\n\n\t\tthis._setHandleClassName();\n\n\t\t//We're ready to go\n\t\tthis.ready = true;\n\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"handle\" ) {\n\t\t\tthis._setHandleClassName();\n\t\t}\n\t},\n\n\t_setHandleClassName: function() {\n\t\tvar that = this;\n\t\tthis._removeClass( this.element.find( \".ui-sortable-handle\" ), \"ui-sortable-handle\" );\n\t\t$.each( this.items, function() {\n\t\t\tthat._addClass(\n\t\t\t\tthis.instance.options.handle ?\n\t\t\t\t\tthis.item.find( this.instance.options.handle ) :\n\t\t\t\t\tthis.item,\n\t\t\t\t\"ui-sortable-handle\"\n\t\t\t);\n\t\t} );\n\t},\n\n\t_destroy: function() {\n\t\tthis._mouseDestroy();\n\n\t\tfor ( var i = this.items.length - 1; i >= 0; i-- ) {\n\t\t\tthis.items[ i ].item.removeData( this.widgetName + \"-item\" );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_mouseCapture: function( event, overrideHandle ) {\n\t\tvar currentItem = null,\n\t\t\tvalidHandle = false,\n\t\t\tthat = this;\n\n\t\tif ( this.reverting ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( this.options.disabled || this.options.type === \"static\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t//We have to refresh the items data once first\n\t\tthis._refreshItems( event );\n\n\t\t//Find out if the clicked node (or one of its parents) is a actual item in this.items\n\t\t$( event.target ).parents().each( function() {\n\t\t\tif ( $.data( this, that.widgetName + \"-item\" ) === that ) {\n\t\t\t\tcurrentItem = $( this );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} );\n\t\tif ( $.data( event.target, that.widgetName + \"-item\" ) === that ) {\n\t\t\tcurrentItem = $( event.target );\n\t\t}\n\n\t\tif ( !currentItem ) {\n\t\t\treturn false;\n\t\t}\n\t\tif ( this.options.handle && !overrideHandle ) {\n\t\t\t$( this.options.handle, currentItem ).find( \"*\" ).addBack().each( function() {\n\t\t\t\tif ( this === event.target ) {\n\t\t\t\t\tvalidHandle = true;\n\t\t\t\t}\n\t\t\t} );\n\t\t\tif ( !validHandle ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tthis.currentItem = currentItem;\n\t\tthis._removeCurrentsFromItems();\n\t\treturn true;\n\n\t},\n\n\t_mouseStart: function( event, overrideHandle, noActivation ) {\n\n\t\tvar i, body,\n\t\t\to = this.options;\n\n\t\tthis.currentContainer = this;\n\n\t\t//We only need to call refreshPositions, because the refreshItems call has been moved to\n\t\t// mouseCapture\n\t\tthis.refreshPositions();\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper( event );\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//Get the next scrolling parent\n\t\tthis.scrollParent = this.helper.scrollParent();\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.offset = this.currentItem.offset();\n\t\tthis.offset = {\n\t\t\ttop: this.offset.top - this.margins.top,\n\t\t\tleft: this.offset.left - this.margins.left\n\t\t};\n\n\t\t$.extend( this.offset, {\n\t\t\tclick: { //Where the click happened, relative to the element\n\t\t\t\tleft: event.pageX - this.offset.left,\n\t\t\t\ttop: event.pageY - this.offset.top\n\t\t\t},\n\t\t\tparent: this._getParentOffset(),\n\n\t\t\t// This is a relative to absolute position minus the actual position calculation -\n\t\t\t// only used for relative positioned helper\n\t\t\trelative: this._getRelativeOffset()\n\t\t} );\n\n\t\t// Only after we got the offset, we can change the helper's position to absolute\n\t\t// TODO: Still need to figure out a way to make relative sorting possible\n\t\tthis.helper.css( \"position\", \"absolute\" );\n\t\tthis.cssPosition = this.helper.css( \"position\" );\n\n\t\t//Generate the original position\n\t\tthis.originalPosition = this._generatePosition( event );\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\n\t\t//Adjust the mouse offset relative to the helper if \"cursorAt\" is supplied\n\t\t( o.cursorAt && this._adjustOffsetFromHelper( o.cursorAt ) );\n\n\t\t//Cache the former DOM position\n\t\tthis.domPosition = {\n\t\t\tprev: this.currentItem.prev()[ 0 ],\n\t\t\tparent: this.currentItem.parent()[ 0 ]\n\t\t};\n\n\t\t// If the helper is not the original, hide the original so it's not playing any role during\n\t\t// the drag, won't cause anything bad this way\n\t\tif ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {\n\t\t\tthis.currentItem.hide();\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthis._createPlaceholder();\n\n\t\t//Set a containment if given in the options\n\t\tif ( o.containment ) {\n\t\t\tthis._setContainment();\n\t\t}\n\n\t\tif ( o.cursor && o.cursor !== \"auto\" ) { // cursor option\n\t\t\tbody = this.document.find( \"body\" );\n\n\t\t\t// Support: IE\n\t\t\tthis.storedCursor = body.css( \"cursor\" );\n\t\t\tbody.css( \"cursor\", o.cursor );\n\n\t\t\tthis.storedStylesheet =\n\t\t\t\t$( \"<style>*{ cursor: \" + o.cursor + \" !important; }</style>\" ).appendTo( body );\n\t\t}\n\n\t\tif ( o.opacity ) { // opacity option\n\t\t\tif ( this.helper.css( \"opacity\" ) ) {\n\t\t\t\tthis._storedOpacity = this.helper.css( \"opacity\" );\n\t\t\t}\n\t\t\tthis.helper.css( \"opacity\", o.opacity );\n\t\t}\n\n\t\tif ( o.zIndex ) { // zIndex option\n\t\t\tif ( this.helper.css( \"zIndex\" ) ) {\n\t\t\t\tthis._storedZIndex = this.helper.css( \"zIndex\" );\n\t\t\t}\n\t\t\tthis.helper.css( \"zIndex\", o.zIndex );\n\t\t}\n\n\t\t//Prepare scrolling\n\t\tif ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\tthis.scrollParent[ 0 ].tagName !== \"HTML\" ) {\n\t\t\tthis.overflowOffset = this.scrollParent.offset();\n\t\t}\n\n\t\t//Call callbacks\n\t\tthis._trigger( \"start\", event, this._uiHash() );\n\n\t\t//Recache the helper size\n\t\tif ( !this._preserveHelperProportions ) {\n\t\t\tthis._cacheHelperProportions();\n\t\t}\n\n\t\t//Post \"activate\" events to possible containers\n\t\tif ( !noActivation ) {\n\t\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\t\tthis.containers[ i ]._trigger( \"activate\", event, this._uiHash( this ) );\n\t\t\t}\n\t\t}\n\n\t\t//Prepare possible droppables\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.current = this;\n\t\t}\n\n\t\tif ( $.ui.ddmanager && !o.dropBehaviour ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( this, event );\n\t\t}\n\n\t\tthis.dragging = true;\n\n\t\tthis._addClass( this.helper, \"ui-sortable-helper\" );\n\n\t\t// Execute the drag once - this causes the helper not to be visiblebefore getting its\n\t\t// correct position\n\t\tthis._mouseDrag( event );\n\t\treturn true;\n\n\t},\n\n\t_mouseDrag: function( event ) {\n\t\tvar i, item, itemElement, intersection,\n\t\t\to = this.options,\n\t\t\tscrolled = false;\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition( event );\n\t\tthis.positionAbs = this._convertPositionTo( \"absolute\" );\n\n\t\tif ( !this.lastPositionAbs ) {\n\t\t\tthis.lastPositionAbs = this.positionAbs;\n\t\t}\n\n\t\t//Do scrolling\n\t\tif ( this.options.scroll ) {\n\t\t\tif ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\t\tthis.scrollParent[ 0 ].tagName !== \"HTML\" ) {\n\n\t\t\t\tif ( ( this.overflowOffset.top + this.scrollParent[ 0 ].offsetHeight ) -\n\t\t\t\t\t\tevent.pageY < o.scrollSensitivity ) {\n\t\t\t\t\tthis.scrollParent[ 0 ].scrollTop =\n\t\t\t\t\t\tscrolled = this.scrollParent[ 0 ].scrollTop + o.scrollSpeed;\n\t\t\t\t} else if ( event.pageY - this.overflowOffset.top < o.scrollSensitivity ) {\n\t\t\t\t\tthis.scrollParent[ 0 ].scrollTop =\n\t\t\t\t\t\tscrolled = this.scrollParent[ 0 ].scrollTop - o.scrollSpeed;\n\t\t\t\t}\n\n\t\t\t\tif ( ( this.overflowOffset.left + this.scrollParent[ 0 ].offsetWidth ) -\n\t\t\t\t\t\tevent.pageX < o.scrollSensitivity ) {\n\t\t\t\t\tthis.scrollParent[ 0 ].scrollLeft = scrolled =\n\t\t\t\t\t\tthis.scrollParent[ 0 ].scrollLeft + o.scrollSpeed;\n\t\t\t\t} else if ( event.pageX - this.overflowOffset.left < o.scrollSensitivity ) {\n\t\t\t\t\tthis.scrollParent[ 0 ].scrollLeft = scrolled =\n\t\t\t\t\t\tthis.scrollParent[ 0 ].scrollLeft - o.scrollSpeed;\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( event.pageY - this.document.scrollTop() < o.scrollSensitivity ) {\n\t\t\t\t\tscrolled = this.document.scrollTop( this.document.scrollTop() - o.scrollSpeed );\n\t\t\t\t} else if ( this.window.height() - ( event.pageY - this.document.scrollTop() ) <\n\t\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\t\tscrolled = this.document.scrollTop( this.document.scrollTop() + o.scrollSpeed );\n\t\t\t\t}\n\n\t\t\t\tif ( event.pageX - this.document.scrollLeft() < o.scrollSensitivity ) {\n\t\t\t\t\tscrolled = this.document.scrollLeft(\n\t\t\t\t\t\tthis.document.scrollLeft() - o.scrollSpeed\n\t\t\t\t\t);\n\t\t\t\t} else if ( this.window.width() - ( event.pageX - this.document.scrollLeft() ) <\n\t\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\t\tscrolled = this.document.scrollLeft(\n\t\t\t\t\t\tthis.document.scrollLeft() + o.scrollSpeed\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( scrolled !== false && $.ui.ddmanager && !o.dropBehaviour ) {\n\t\t\t\t$.ui.ddmanager.prepareOffsets( this, event );\n\t\t\t}\n\t\t}\n\n\t\t//Regenerate the absolute position used for position checks\n\t\tthis.positionAbs = this._convertPositionTo( \"absolute\" );\n\n\t\t//Set the helper position\n\t\tif ( !this.options.axis || this.options.axis !== \"y\" ) {\n\t\t\tthis.helper[ 0 ].style.left = this.position.left + \"px\";\n\t\t}\n\t\tif ( !this.options.axis || this.options.axis !== \"x\" ) {\n\t\t\tthis.helper[ 0 ].style.top = this.position.top + \"px\";\n\t\t}\n\n\t\t//Rearrange\n\t\tfor ( i = this.items.length - 1; i >= 0; i-- ) {\n\n\t\t\t//Cache variables and intersection, continue if no intersection\n\t\t\titem = this.items[ i ];\n\t\t\titemElement = item.item[ 0 ];\n\t\t\tintersection = this._intersectsWithPointer( item );\n\t\t\tif ( !intersection ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Only put the placeholder inside the current Container, skip all\n\t\t\t// items from other containers. This works because when moving\n\t\t\t// an item from one container to another the\n\t\t\t// currentContainer is switched before the placeholder is moved.\n\t\t\t//\n\t\t\t// Without this, moving items in \"sub-sortables\" can cause\n\t\t\t// the placeholder to jitter between the outer and inner container.\n\t\t\tif ( item.instance !== this.currentContainer ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Cannot intersect with itself\n\t\t\t// no useless actions that have been done before\n\t\t\t// no action if the item moved is the parent of the item checked\n\t\t\tif ( itemElement !== this.currentItem[ 0 ] &&\n\t\t\t\tthis.placeholder[ intersection === 1 ? \"next\" : \"prev\" ]()[ 0 ] !== itemElement &&\n\t\t\t\t!$.contains( this.placeholder[ 0 ], itemElement ) &&\n\t\t\t\t( this.options.type === \"semi-dynamic\" ?\n\t\t\t\t\t!$.contains( this.element[ 0 ], itemElement ) :\n\t\t\t\t\ttrue\n\t\t\t\t)\n\t\t\t) {\n\n\t\t\t\tthis.direction = intersection === 1 ? \"down\" : \"up\";\n\n\t\t\t\tif ( this.options.tolerance === \"pointer\" || this._intersectsWithSides( item ) ) {\n\t\t\t\t\tthis._rearrange( event, item );\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tthis._trigger( \"change\", event, this._uiHash() );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t//Post events to containers\n\t\tthis._contactContainers( event );\n\n\t\t//Interconnect with droppables\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.drag( this, event );\n\t\t}\n\n\t\t//Call callbacks\n\t\tthis._trigger( \"sort\", event, this._uiHash() );\n\n\t\tthis.lastPositionAbs = this.positionAbs;\n\t\treturn false;\n\n\t},\n\n\t_mouseStop: function( event, noPropagation ) {\n\n\t\tif ( !event ) {\n\t\t\treturn;\n\t\t}\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tif ( $.ui.ddmanager && !this.options.dropBehaviour ) {\n\t\t\t$.ui.ddmanager.drop( this, event );\n\t\t}\n\n\t\tif ( this.options.revert ) {\n\t\t\tvar that = this,\n\t\t\t\tcur = this.placeholder.offset(),\n\t\t\t\taxis = this.options.axis,\n\t\t\t\tanimation = {};\n\n\t\t\tif ( !axis || axis === \"x\" ) {\n\t\t\t\tanimation.left = cur.left - this.offset.parent.left - this.margins.left +\n\t\t\t\t\t( this.offsetParent[ 0 ] === this.document[ 0 ].body ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tthis.offsetParent[ 0 ].scrollLeft\n\t\t\t\t\t);\n\t\t\t}\n\t\t\tif ( !axis || axis === \"y\" ) {\n\t\t\t\tanimation.top = cur.top - this.offset.parent.top - this.margins.top +\n\t\t\t\t\t( this.offsetParent[ 0 ] === this.document[ 0 ].body ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tthis.offsetParent[ 0 ].scrollTop\n\t\t\t\t\t);\n\t\t\t}\n\t\t\tthis.reverting = true;\n\t\t\t$( this.helper ).animate(\n\t\t\t\tanimation,\n\t\t\t\tparseInt( this.options.revert, 10 ) || 500,\n\t\t\t\tfunction() {\n\t\t\t\t\tthat._clear( event );\n\t\t\t\t}\n\t\t\t);\n\t\t} else {\n\t\t\tthis._clear( event, noPropagation );\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tcancel: function() {\n\n\t\tif ( this.dragging ) {\n\n\t\t\tthis._mouseUp( new $.Event( \"mouseup\", { target: null } ) );\n\n\t\t\tif ( this.options.helper === \"original\" ) {\n\t\t\t\tthis.currentItem.css( this._storedCSS );\n\t\t\t\tthis._removeClass( this.currentItem, \"ui-sortable-helper\" );\n\t\t\t} else {\n\t\t\t\tthis.currentItem.show();\n\t\t\t}\n\n\t\t\t//Post deactivating events to containers\n\t\t\tfor ( var i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\t\tthis.containers[ i ]._trigger( \"deactivate\", null, this._uiHash( this ) );\n\t\t\t\tif ( this.containers[ i ].containerCache.over ) {\n\t\t\t\t\tthis.containers[ i ]._trigger( \"out\", null, this._uiHash( this ) );\n\t\t\t\t\tthis.containers[ i ].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.placeholder ) {\n\n\t\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,\n\t\t\t// it unbinds ALL events from the original node!\n\t\t\tif ( this.placeholder[ 0 ].parentNode ) {\n\t\t\t\tthis.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] );\n\t\t\t}\n\t\t\tif ( this.options.helper !== \"original\" && this.helper &&\n\t\t\t\t\tthis.helper[ 0 ].parentNode ) {\n\t\t\t\tthis.helper.remove();\n\t\t\t}\n\n\t\t\t$.extend( this, {\n\t\t\t\thelper: null,\n\t\t\t\tdragging: false,\n\t\t\t\treverting: false,\n\t\t\t\t_noFinalSort: null\n\t\t\t} );\n\n\t\t\tif ( this.domPosition.prev ) {\n\t\t\t\t$( this.domPosition.prev ).after( this.currentItem );\n\t\t\t} else {\n\t\t\t\t$( this.domPosition.parent ).prepend( this.currentItem );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tserialize: function( o ) {\n\n\t\tvar items = this._getItemsAsjQuery( o && o.connected ),\n\t\t\tstr = [];\n\t\to = o || {};\n\n\t\t$( items ).each( function() {\n\t\t\tvar res = ( $( o.item || this ).attr( o.attribute || \"id\" ) || \"\" )\n\t\t\t\t.match( o.expression || ( /(.+)[\\-=_](.+)/ ) );\n\t\t\tif ( res ) {\n\t\t\t\tstr.push(\n\t\t\t\t\t( o.key || res[ 1 ] + \"[]\" ) +\n\t\t\t\t\t\"=\" + ( o.key && o.expression ? res[ 1 ] : res[ 2 ] ) );\n\t\t\t}\n\t\t} );\n\n\t\tif ( !str.length && o.key ) {\n\t\t\tstr.push( o.key + \"=\" );\n\t\t}\n\n\t\treturn str.join( \"&\" );\n\n\t},\n\n\ttoArray: function( o ) {\n\n\t\tvar items = this._getItemsAsjQuery( o && o.connected ),\n\t\t\tret = [];\n\n\t\to = o || {};\n\n\t\titems.each( function() {\n\t\t\tret.push( $( o.item || this ).attr( o.attribute || \"id\" ) || \"\" );\n\t\t} );\n\t\treturn ret;\n\n\t},\n\n\t/* Be careful with the following core functions */\n\t_intersectsWith: function( item ) {\n\n\t\tvar x1 = this.positionAbs.left,\n\t\t\tx2 = x1 + this.helperProportions.width,\n\t\t\ty1 = this.positionAbs.top,\n\t\t\ty2 = y1 + this.helperProportions.height,\n\t\t\tl = item.left,\n\t\t\tr = l + item.width,\n\t\t\tt = item.top,\n\t\t\tb = t + item.height,\n\t\t\tdyClick = this.offset.click.top,\n\t\t\tdxClick = this.offset.click.left,\n\t\t\tisOverElementHeight = ( this.options.axis === \"x\" ) || ( ( y1 + dyClick ) > t &&\n\t\t\t\t( y1 + dyClick ) < b ),\n\t\t\tisOverElementWidth = ( this.options.axis === \"y\" ) || ( ( x1 + dxClick ) > l &&\n\t\t\t\t( x1 + dxClick ) < r ),\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth;\n\n\t\tif ( this.options.tolerance === \"pointer\" ||\n\t\t\tthis.options.forcePointerForContainers ||\n\t\t\t( this.options.tolerance !== \"pointer\" &&\n\t\t\t\tthis.helperProportions[ this.floating ? \"width\" : \"height\" ] >\n\t\t\t\titem[ this.floating ? \"width\" : \"height\" ] )\n\t\t) {\n\t\t\treturn isOverElement;\n\t\t} else {\n\n\t\t\treturn ( l < x1 + ( this.helperProportions.width / 2 ) && // Right Half\n\t\t\t\tx2 - ( this.helperProportions.width / 2 ) < r && // Left Half\n\t\t\t\tt < y1 + ( this.helperProportions.height / 2 ) && // Bottom Half\n\t\t\t\ty2 - ( this.helperProportions.height / 2 ) < b ); // Top Half\n\n\t\t}\n\t},\n\n\t_intersectsWithPointer: function( item ) {\n\t\tvar verticalDirection, horizontalDirection,\n\t\t\tisOverElementHeight = ( this.options.axis === \"x\" ) ||\n\t\t\t\tthis._isOverAxis(\n\t\t\t\t\tthis.positionAbs.top + this.offset.click.top, item.top, item.height ),\n\t\t\tisOverElementWidth = ( this.options.axis === \"y\" ) ||\n\t\t\t\tthis._isOverAxis(\n\t\t\t\t\tthis.positionAbs.left + this.offset.click.left, item.left, item.width ),\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth;\n\n\t\tif ( !isOverElement ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tverticalDirection = this._getDragVerticalDirection();\n\t\thorizontalDirection = this._getDragHorizontalDirection();\n\n\t\treturn this.floating ?\n\t\t\t( ( horizontalDirection === \"right\" || verticalDirection === \"down\" ) ? 2 : 1 )\n\t\t\t: ( verticalDirection && ( verticalDirection === \"down\" ? 2 : 1 ) );\n\n\t},\n\n\t_intersectsWithSides: function( item ) {\n\n\t\tvar isOverBottomHalf = this._isOverAxis( this.positionAbs.top +\n\t\t\t\tthis.offset.click.top, item.top + ( item.height / 2 ), item.height ),\n\t\t\tisOverRightHalf = this._isOverAxis( this.positionAbs.left +\n\t\t\t\tthis.offset.click.left, item.left + ( item.width / 2 ), item.width ),\n\t\t\tverticalDirection = this._getDragVerticalDirection(),\n\t\t\thorizontalDirection = this._getDragHorizontalDirection();\n\n\t\tif ( this.floating && horizontalDirection ) {\n\t\t\treturn ( ( horizontalDirection === \"right\" && isOverRightHalf ) ||\n\t\t\t\t( horizontalDirection === \"left\" && !isOverRightHalf ) );\n\t\t} else {\n\t\t\treturn verticalDirection && ( ( verticalDirection === \"down\" && isOverBottomHalf ) ||\n\t\t\t\t( verticalDirection === \"up\" && !isOverBottomHalf ) );\n\t\t}\n\n\t},\n\n\t_getDragVerticalDirection: function() {\n\t\tvar delta = this.positionAbs.top - this.lastPositionAbs.top;\n\t\treturn delta !== 0 && ( delta > 0 ? \"down\" : \"up\" );\n\t},\n\n\t_getDragHorizontalDirection: function() {\n\t\tvar delta = this.positionAbs.left - this.lastPositionAbs.left;\n\t\treturn delta !== 0 && ( delta > 0 ? \"right\" : \"left\" );\n\t},\n\n\trefresh: function( event ) {\n\t\tthis._refreshItems( event );\n\t\tthis._setHandleClassName();\n\t\tthis.refreshPositions();\n\t\treturn this;\n\t},\n\n\t_connectWith: function() {\n\t\tvar options = this.options;\n\t\treturn options.connectWith.constructor === String ?\n\t\t\t[ options.connectWith ] :\n\t\t\toptions.connectWith;\n\t},\n\n\t_getItemsAsjQuery: function( connected ) {\n\n\t\tvar i, j, cur, inst,\n\t\t\titems = [],\n\t\t\tqueries = [],\n\t\t\tconnectWith = this._connectWith();\n\n\t\tif ( connectWith && connected ) {\n\t\t\tfor ( i = connectWith.length - 1; i >= 0; i-- ) {\n\t\t\t\tcur = $( connectWith[ i ], this.document[ 0 ] );\n\t\t\t\tfor ( j = cur.length - 1; j >= 0; j-- ) {\n\t\t\t\t\tinst = $.data( cur[ j ], this.widgetFullName );\n\t\t\t\t\tif ( inst && inst !== this && !inst.options.disabled ) {\n\t\t\t\t\t\tqueries.push( [ $.isFunction( inst.options.items ) ?\n\t\t\t\t\t\t\tinst.options.items.call( inst.element ) :\n\t\t\t\t\t\t\t$( inst.options.items, inst.element )\n\t\t\t\t\t\t\t\t.not( \".ui-sortable-helper\" )\n\t\t\t\t\t\t\t\t.not( \".ui-sortable-placeholder\" ), inst ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tqueries.push( [ $.isFunction( this.options.items ) ?\n\t\t\tthis.options.items\n\t\t\t\t.call( this.element, null, { options: this.options, item: this.currentItem } ) :\n\t\t\t$( this.options.items, this.element )\n\t\t\t\t.not( \".ui-sortable-helper\" )\n\t\t\t\t.not( \".ui-sortable-placeholder\" ), this ] );\n\n\t\tfunction addItems() {\n\t\t\titems.push( this );\n\t\t}\n\t\tfor ( i = queries.length - 1; i >= 0; i-- ) {\n\t\t\tqueries[ i ][ 0 ].each( addItems );\n\t\t}\n\n\t\treturn $( items );\n\n\t},\n\n\t_removeCurrentsFromItems: function() {\n\n\t\tvar list = this.currentItem.find( \":data(\" + this.widgetName + \"-item)\" );\n\n\t\tthis.items = $.grep( this.items, function( item ) {\n\t\t\tfor ( var j = 0; j < list.length; j++ ) {\n\t\t\t\tif ( list[ j ] === item.item[ 0 ] ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} );\n\n\t},\n\n\t_refreshItems: function( event ) {\n\n\t\tthis.items = [];\n\t\tthis.containers = [ this ];\n\n\t\tvar i, j, cur, inst, targetData, _queries, item, queriesLength,\n\t\t\titems = this.items,\n\t\t\tqueries = [ [ $.isFunction( this.options.items ) ?\n\t\t\t\tthis.options.items.call( this.element[ 0 ], event, { item: this.currentItem } ) :\n\t\t\t\t$( this.options.items, this.element ), this ] ],\n\t\t\tconnectWith = this._connectWith();\n\n\t\t//Shouldn't be run the first time through due to massive slow-down\n\t\tif ( connectWith && this.ready ) {\n\t\t\tfor ( i = connectWith.length - 1; i >= 0; i-- ) {\n\t\t\t\tcur = $( connectWith[ i ], this.document[ 0 ] );\n\t\t\t\tfor ( j = cur.length - 1; j >= 0; j-- ) {\n\t\t\t\t\tinst = $.data( cur[ j ], this.widgetFullName );\n\t\t\t\t\tif ( inst && inst !== this && !inst.options.disabled ) {\n\t\t\t\t\t\tqueries.push( [ $.isFunction( inst.options.items ) ?\n\t\t\t\t\t\t\tinst.options.items\n\t\t\t\t\t\t\t\t.call( inst.element[ 0 ], event, { item: this.currentItem } ) :\n\t\t\t\t\t\t\t$( inst.options.items, inst.element ), inst ] );\n\t\t\t\t\t\tthis.containers.push( inst );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor ( i = queries.length - 1; i >= 0; i-- ) {\n\t\t\ttargetData = queries[ i ][ 1 ];\n\t\t\t_queries = queries[ i ][ 0 ];\n\n\t\t\tfor ( j = 0, queriesLength = _queries.length; j < queriesLength; j++ ) {\n\t\t\t\titem = $( _queries[ j ] );\n\n\t\t\t\t// Data for target checking (mouse manager)\n\t\t\t\titem.data( this.widgetName + \"-item\", targetData );\n\n\t\t\t\titems.push( {\n\t\t\t\t\titem: item,\n\t\t\t\t\tinstance: targetData,\n\t\t\t\t\twidth: 0, height: 0,\n\t\t\t\t\tleft: 0, top: 0\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t},\n\n\trefreshPositions: function( fast ) {\n\n\t\t// Determine whether items are being displayed horizontally\n\t\tthis.floating = this.items.length ?\n\t\t\tthis.options.axis === \"x\" || this._isFloating( this.items[ 0 ].item ) :\n\t\t\tfalse;\n\n\t\t//This has to be redone because due to the item being moved out/into the offsetParent,\n\t\t// the offsetParent's position will change\n\t\tif ( this.offsetParent && this.helper ) {\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\tvar i, item, t, p;\n\n\t\tfor ( i = this.items.length - 1; i >= 0; i-- ) {\n\t\t\titem = this.items[ i ];\n\n\t\t\t//We ignore calculating positions of all connected containers when we're not over them\n\t\t\tif ( item.instance !== this.currentContainer && this.currentContainer &&\n\t\t\t\t\titem.item[ 0 ] !== this.currentItem[ 0 ] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tt = this.options.toleranceElement ?\n\t\t\t\t$( this.options.toleranceElement, item.item ) :\n\t\t\t\titem.item;\n\n\t\t\tif ( !fast ) {\n\t\t\t\titem.width = t.outerWidth();\n\t\t\t\titem.height = t.outerHeight();\n\t\t\t}\n\n\t\t\tp = t.offset();\n\t\t\titem.left = p.left;\n\t\t\titem.top = p.top;\n\t\t}\n\n\t\tif ( this.options.custom && this.options.custom.refreshContainers ) {\n\t\t\tthis.options.custom.refreshContainers.call( this );\n\t\t} else {\n\t\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\t\tp = this.containers[ i ].element.offset();\n\t\t\t\tthis.containers[ i ].containerCache.left = p.left;\n\t\t\t\tthis.containers[ i ].containerCache.top = p.top;\n\t\t\t\tthis.containers[ i ].containerCache.width =\n\t\t\t\t\tthis.containers[ i ].element.outerWidth();\n\t\t\t\tthis.containers[ i ].containerCache.height =\n\t\t\t\t\tthis.containers[ i ].element.outerHeight();\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_createPlaceholder: function( that ) {\n\t\tthat = that || this;\n\t\tvar className,\n\t\t\to = that.options;\n\n\t\tif ( !o.placeholder || o.placeholder.constructor === String ) {\n\t\t\tclassName = o.placeholder;\n\t\t\to.placeholder = {\n\t\t\t\telement: function() {\n\n\t\t\t\t\tvar nodeName = that.currentItem[ 0 ].nodeName.toLowerCase(),\n\t\t\t\t\t\telement = $( \"<\" + nodeName + \">\", that.document[ 0 ] );\n\n\t\t\t\t\t\tthat._addClass( element, \"ui-sortable-placeholder\",\n\t\t\t\t\t\t\t\tclassName || that.currentItem[ 0 ].className )\n\t\t\t\t\t\t\t._removeClass( element, \"ui-sortable-helper\" );\n\n\t\t\t\t\tif ( nodeName === \"tbody\" ) {\n\t\t\t\t\t\tthat._createTrPlaceholder(\n\t\t\t\t\t\t\tthat.currentItem.find( \"tr\" ).eq( 0 ),\n\t\t\t\t\t\t\t$( \"<tr>\", that.document[ 0 ] ).appendTo( element )\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if ( nodeName === \"tr\" ) {\n\t\t\t\t\t\tthat._createTrPlaceholder( that.currentItem, element );\n\t\t\t\t\t} else if ( nodeName === \"img\" ) {\n\t\t\t\t\t\telement.attr( \"src\", that.currentItem.attr( \"src\" ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !className ) {\n\t\t\t\t\t\telement.css( \"visibility\", \"hidden\" );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn element;\n\t\t\t\t},\n\t\t\t\tupdate: function( container, p ) {\n\n\t\t\t\t\t// 1. If a className is set as 'placeholder option, we don't force sizes -\n\t\t\t\t\t// the class is responsible for that\n\t\t\t\t\t// 2. The option 'forcePlaceholderSize can be enabled to force it even if a\n\t\t\t\t\t// class name is specified\n\t\t\t\t\tif ( className && !o.forcePlaceholderSize ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t//If the element doesn't have a actual height by itself (without styles coming\n\t\t\t\t\t// from a stylesheet), it receives the inline height from the dragged item\n\t\t\t\t\tif ( !p.height() ) {\n\t\t\t\t\t\tp.height(\n\t\t\t\t\t\t\tthat.currentItem.innerHeight() -\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingTop\" ) || 0, 10 ) -\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingBottom\" ) || 0, 10 ) );\n\t\t\t\t\t}\n\t\t\t\t\tif ( !p.width() ) {\n\t\t\t\t\t\tp.width(\n\t\t\t\t\t\t\tthat.currentItem.innerWidth() -\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingLeft\" ) || 0, 10 ) -\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingRight\" ) || 0, 10 ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthat.placeholder = $( o.placeholder.element.call( that.element, that.currentItem ) );\n\n\t\t//Append it after the actual current item\n\t\tthat.currentItem.after( that.placeholder );\n\n\t\t//Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)\n\t\to.placeholder.update( that, that.placeholder );\n\n\t},\n\n\t_createTrPlaceholder: function( sourceTr, targetTr ) {\n\t\tvar that = this;\n\n\t\tsourceTr.children().each( function() {\n\t\t\t$( \"<td> </td>\", that.document[ 0 ] )\n\t\t\t\t.attr( \"colspan\", $( this ).attr( \"colspan\" ) || 1 )\n\t\t\t\t.appendTo( targetTr );\n\t\t} );\n\t},\n\n\t_contactContainers: function( event ) {\n\t\tvar i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, cur, nearBottom,\n\t\t\tfloating, axis,\n\t\t\tinnermostContainer = null,\n\t\t\tinnermostIndex = null;\n\n\t\t// Get innermost container that intersects with item\n\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\n\t\t\t// Never consider a container that's located within the item itself\n\t\t\tif ( $.contains( this.currentItem[ 0 ], this.containers[ i ].element[ 0 ] ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( this._intersectsWith( this.containers[ i ].containerCache ) ) {\n\n\t\t\t\t// If we've already found a container and it's more \"inner\" than this, then continue\n\t\t\t\tif ( innermostContainer &&\n\t\t\t\t\t\t$.contains(\n\t\t\t\t\t\t\tthis.containers[ i ].element[ 0 ],\n\t\t\t\t\t\t\tinnermostContainer.element[ 0 ] ) ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tinnermostContainer = this.containers[ i ];\n\t\t\t\tinnermostIndex = i;\n\n\t\t\t} else {\n\n\t\t\t\t// container doesn't intersect. trigger \"out\" event if necessary\n\t\t\t\tif ( this.containers[ i ].containerCache.over ) {\n\t\t\t\t\tthis.containers[ i ]._trigger( \"out\", event, this._uiHash( this ) );\n\t\t\t\t\tthis.containers[ i ].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t// If no intersecting containers found, return\n\t\tif ( !innermostContainer ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Move the item into the container if it's not there already\n\t\tif ( this.containers.length === 1 ) {\n\t\t\tif ( !this.containers[ innermostIndex ].containerCache.over ) {\n\t\t\t\tthis.containers[ innermostIndex ]._trigger( \"over\", event, this._uiHash( this ) );\n\t\t\t\tthis.containers[ innermostIndex ].containerCache.over = 1;\n\t\t\t}\n\t\t} else {\n\n\t\t\t// When entering a new container, we will find the item with the least distance and\n\t\t\t// append our item near it\n\t\t\tdist = 10000;\n\t\t\titemWithLeastDistance = null;\n\t\t\tfloating = innermostContainer.floating || this._isFloating( this.currentItem );\n\t\t\tposProperty = floating ? \"left\" : \"top\";\n\t\t\tsizeProperty = floating ? \"width\" : \"height\";\n\t\t\taxis = floating ? \"pageX\" : \"pageY\";\n\n\t\t\tfor ( j = this.items.length - 1; j >= 0; j-- ) {\n\t\t\t\tif ( !$.contains(\n\t\t\t\t\t\tthis.containers[ innermostIndex ].element[ 0 ], this.items[ j ].item[ 0 ] )\n\t\t\t\t) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif ( this.items[ j ].item[ 0 ] === this.currentItem[ 0 ] ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcur = this.items[ j ].item.offset()[ posProperty ];\n\t\t\t\tnearBottom = false;\n\t\t\t\tif ( event[ axis ] - cur > this.items[ j ][ sizeProperty ] / 2 ) {\n\t\t\t\t\tnearBottom = true;\n\t\t\t\t}\n\n\t\t\t\tif ( Math.abs( event[ axis ] - cur ) < dist ) {\n\t\t\t\t\tdist = Math.abs( event[ axis ] - cur );\n\t\t\t\t\titemWithLeastDistance = this.items[ j ];\n\t\t\t\t\tthis.direction = nearBottom ? \"up\" : \"down\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//Check if dropOnEmpty is enabled\n\t\t\tif ( !itemWithLeastDistance && !this.options.dropOnEmpty ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this.currentContainer === this.containers[ innermostIndex ] ) {\n\t\t\t\tif ( !this.currentContainer.containerCache.over ) {\n\t\t\t\t\tthis.containers[ innermostIndex ]._trigger( \"over\", event, this._uiHash() );\n\t\t\t\t\tthis.currentContainer.containerCache.over = 1;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\titemWithLeastDistance ?\n\t\t\t\tthis._rearrange( event, itemWithLeastDistance, null, true ) :\n\t\t\t\tthis._rearrange( event, null, this.containers[ innermostIndex ].element, true );\n\t\t\tthis._trigger( \"change\", event, this._uiHash() );\n\t\t\tthis.containers[ innermostIndex ]._trigger( \"change\", event, this._uiHash( this ) );\n\t\t\tthis.currentContainer = this.containers[ innermostIndex ];\n\n\t\t\t//Update the placeholder\n\t\t\tthis.options.placeholder.update( this.currentContainer, this.placeholder );\n\n\t\t\tthis.containers[ innermostIndex ]._trigger( \"over\", event, this._uiHash( this ) );\n\t\t\tthis.containers[ innermostIndex ].containerCache.over = 1;\n\t\t}\n\n\t},\n\n\t_createHelper: function( event ) {\n\n\t\tvar o = this.options,\n\t\t\thelper = $.isFunction( o.helper ) ?\n\t\t\t\t$( o.helper.apply( this.element[ 0 ], [ event, this.currentItem ] ) ) :\n\t\t\t\t( o.helper === \"clone\" ? this.currentItem.clone() : this.currentItem );\n\n\t\t//Add the helper to the DOM if that didn't happen already\n\t\tif ( !helper.parents( \"body\" ).length ) {\n\t\t\t$( o.appendTo !== \"parent\" ?\n\t\t\t\to.appendTo :\n\t\t\t\tthis.currentItem[ 0 ].parentNode )[ 0 ].appendChild( helper[ 0 ] );\n\t\t}\n\n\t\tif ( helper[ 0 ] === this.currentItem[ 0 ] ) {\n\t\t\tthis._storedCSS = {\n\t\t\t\twidth: this.currentItem[ 0 ].style.width,\n\t\t\t\theight: this.currentItem[ 0 ].style.height,\n\t\t\t\tposition: this.currentItem.css( \"position\" ),\n\t\t\t\ttop: this.currentItem.css( \"top\" ),\n\t\t\t\tleft: this.currentItem.css( \"left\" )\n\t\t\t};\n\t\t}\n\n\t\tif ( !helper[ 0 ].style.width || o.forceHelperSize ) {\n\t\t\thelper.width( this.currentItem.width() );\n\t\t}\n\t\tif ( !helper[ 0 ].style.height || o.forceHelperSize ) {\n\t\t\thelper.height( this.currentItem.height() );\n\t\t}\n\n\t\treturn helper;\n\n\t},\n\n\t_adjustOffsetFromHelper: function( obj ) {\n\t\tif ( typeof obj === \"string\" ) {\n\t\t\tobj = obj.split( \" \" );\n\t\t}\n\t\tif ( $.isArray( obj ) ) {\n\t\t\tobj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };\n\t\t}\n\t\tif ( \"left\" in obj ) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif ( \"right\" in obj ) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif ( \"top\" in obj ) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif ( \"bottom\" in obj ) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_getParentOffset: function() {\n\n\t\t//Get the offsetParent and cache its position\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tvar po = this.offsetParent.offset();\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the\n\t\t// following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the\n\t\t// next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't\n\t\t// the document, which means that the scroll is included in the initial calculation of the\n\t\t// offset of the parent, and never recalculated upon drag\n\t\tif ( this.cssPosition === \"absolute\" && this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\t// This needs to be actually done for all browsers, since pageX/pageY includes this\n\t\t// information with an ugly IE fix\n\t\tif ( this.offsetParent[ 0 ] === this.document[ 0 ].body ||\n\t\t\t\t( this.offsetParent[ 0 ].tagName &&\n\t\t\t\tthis.offsetParent[ 0 ].tagName.toLowerCase() === \"html\" && $.ui.ie ) ) {\n\t\t\tpo = { top: 0, left: 0 };\n\t\t}\n\n\t\treturn {\n\t\t\ttop: po.top + ( parseInt( this.offsetParent.css( \"borderTopWidth\" ), 10 ) || 0 ),\n\t\t\tleft: po.left + ( parseInt( this.offsetParent.css( \"borderLeftWidth\" ), 10 ) || 0 )\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\n\t\tif ( this.cssPosition === \"relative\" ) {\n\t\t\tvar p = this.currentItem.position();\n\t\t\treturn {\n\t\t\t\ttop: p.top - ( parseInt( this.helper.css( \"top\" ), 10 ) || 0 ) +\n\t\t\t\t\tthis.scrollParent.scrollTop(),\n\t\t\t\tleft: p.left - ( parseInt( this.helper.css( \"left\" ), 10 ) || 0 ) +\n\t\t\t\t\tthis.scrollParent.scrollLeft()\n\t\t\t};\n\t\t} else {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: ( parseInt( this.currentItem.css( \"marginLeft\" ), 10 ) || 0 ),\n\t\t\ttop: ( parseInt( this.currentItem.css( \"marginTop\" ), 10 ) || 0 )\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar ce, co, over,\n\t\t\to = this.options;\n\t\tif ( o.containment === \"parent\" ) {\n\t\t\to.containment = this.helper[ 0 ].parentNode;\n\t\t}\n\t\tif ( o.containment === \"document\" || o.containment === \"window\" ) {\n\t\t\tthis.containment = [\n\t\t\t\t0 - this.offset.relative.left - this.offset.parent.left,\n\t\t\t\t0 - this.offset.relative.top - this.offset.parent.top,\n\t\t\t\to.containment === \"document\" ?\n\t\t\t\t\tthis.document.width() :\n\t\t\t\t\tthis.window.width() - this.helperProportions.width - this.margins.left,\n\t\t\t\t( o.containment === \"document\" ?\n\t\t\t\t\t( this.document.height() || document.body.parentNode.scrollHeight ) :\n\t\t\t\t\tthis.window.height() || this.document[ 0 ].body.parentNode.scrollHeight\n\t\t\t\t) - this.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t}\n\n\t\tif ( !( /^(document|window|parent)$/ ).test( o.containment ) ) {\n\t\t\tce = $( o.containment )[ 0 ];\n\t\t\tco = $( o.containment ).offset();\n\t\t\tover = ( $( ce ).css( \"overflow\" ) !== \"hidden\" );\n\n\t\t\tthis.containment = [\n\t\t\t\tco.left + ( parseInt( $( ce ).css( \"borderLeftWidth\" ), 10 ) || 0 ) +\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingLeft\" ), 10 ) || 0 ) - this.margins.left,\n\t\t\t\tco.top + ( parseInt( $( ce ).css( \"borderTopWidth\" ), 10 ) || 0 ) +\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingTop\" ), 10 ) || 0 ) - this.margins.top,\n\t\t\t\tco.left + ( over ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -\n\t\t\t\t\t( parseInt( $( ce ).css( \"borderLeftWidth\" ), 10 ) || 0 ) -\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingRight\" ), 10 ) || 0 ) -\n\t\t\t\t\tthis.helperProportions.width - this.margins.left,\n\t\t\t\tco.top + ( over ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -\n\t\t\t\t\t( parseInt( $( ce ).css( \"borderTopWidth\" ), 10 ) || 0 ) -\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingBottom\" ), 10 ) || 0 ) -\n\t\t\t\t\tthis.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t}\n\n\t},\n\n\t_convertPositionTo: function( d, pos ) {\n\n\t\tif ( !pos ) {\n\t\t\tpos = this.position;\n\t\t}\n\t\tvar mod = d === \"absolute\" ? 1 : -1,\n\t\t\tscroll = this.cssPosition === \"absolute\" &&\n\t\t\t\t!( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ?\n\t\t\t\t\tthis.offsetParent :\n\t\t\t\t\tthis.scrollParent,\n\t\t\tscrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName );\n\n\t\treturn {\n\t\t\ttop: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpos.top\t+\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.top * mod +\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.top * mod -\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.scrollParent.scrollTop() :\n\t\t\t\t\t( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod )\n\t\t\t),\n\t\t\tleft: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpos.left +\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.left * mod +\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.left * mod\t-\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 :\n\t\t\t\t\tscroll.scrollLeft() ) * mod )\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function( event ) {\n\n\t\tvar top, left,\n\t\t\to = this.options,\n\t\t\tpageX = event.pageX,\n\t\t\tpageY = event.pageY,\n\t\t\tscroll = this.cssPosition === \"absolute\" &&\n\t\t\t\t!( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ?\n\t\t\t\t\tthis.offsetParent :\n\t\t\t\t\tthis.scrollParent,\n\t\t\t\tscrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName );\n\n\t\t// This is another very weird special case that only happens for relative elements:\n\t\t// 1. If the css position is relative\n\t\t// 2. and the scroll parent is the document or similar to the offset parent\n\t\t// we have to refresh the relative offset during the scroll so there are no jumps\n\t\tif ( this.cssPosition === \"relative\" && !( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\tthis.scrollParent[ 0 ] !== this.offsetParent[ 0 ] ) ) {\n\t\t\tthis.offset.relative = this._getRelativeOffset();\n\t\t}\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\tif ( this.originalPosition ) { //If we are not dragging yet, we won't check for options\n\n\t\t\tif ( this.containment ) {\n\t\t\t\tif ( event.pageX - this.offset.click.left < this.containment[ 0 ] ) {\n\t\t\t\t\tpageX = this.containment[ 0 ] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif ( event.pageY - this.offset.click.top < this.containment[ 1 ] ) {\n\t\t\t\t\tpageY = this.containment[ 1 ] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t\tif ( event.pageX - this.offset.click.left > this.containment[ 2 ] ) {\n\t\t\t\t\tpageX = this.containment[ 2 ] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif ( event.pageY - this.offset.click.top > this.containment[ 3 ] ) {\n\t\t\t\t\tpageY = this.containment[ 3 ] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( o.grid ) {\n\t\t\t\ttop = this.originalPageY + Math.round( ( pageY - this.originalPageY ) /\n\t\t\t\t\to.grid[ 1 ] ) * o.grid[ 1 ];\n\t\t\t\tpageY = this.containment ?\n\t\t\t\t\t( ( top - this.offset.click.top >= this.containment[ 1 ] &&\n\t\t\t\t\t\ttop - this.offset.click.top <= this.containment[ 3 ] ) ?\n\t\t\t\t\t\t\ttop :\n\t\t\t\t\t\t\t( ( top - this.offset.click.top >= this.containment[ 1 ] ) ?\n\t\t\t\t\t\t\t\ttop - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) :\n\t\t\t\t\t\t\t\ttop;\n\n\t\t\t\tleft = this.originalPageX + Math.round( ( pageX - this.originalPageX ) /\n\t\t\t\t\to.grid[ 0 ] ) * o.grid[ 0 ];\n\t\t\t\tpageX = this.containment ?\n\t\t\t\t\t( ( left - this.offset.click.left >= this.containment[ 0 ] &&\n\t\t\t\t\t\tleft - this.offset.click.left <= this.containment[ 2 ] ) ?\n\t\t\t\t\t\t\tleft :\n\t\t\t\t\t\t\t( ( left - this.offset.click.left >= this.containment[ 0 ] ) ?\n\t\t\t\t\t\t\t\tleft - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) :\n\t\t\t\t\t\t\t\tleft;\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpageY -\n\n\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.click.top -\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.top -\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.top +\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.scrollParent.scrollTop() :\n\t\t\t\t\t( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) )\n\t\t\t),\n\t\t\tleft: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpageX -\n\n\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.click.left -\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.left -\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.left +\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.scrollParent.scrollLeft() :\n\t\t\t\t\tscrollIsRootNode ? 0 : scroll.scrollLeft() ) )\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_rearrange: function( event, i, a, hardRefresh ) {\n\n\t\ta ? a[ 0 ].appendChild( this.placeholder[ 0 ] ) :\n\t\t\ti.item[ 0 ].parentNode.insertBefore( this.placeholder[ 0 ],\n\t\t\t\t( this.direction === \"down\" ? i.item[ 0 ] : i.item[ 0 ].nextSibling ) );\n\n\t\t//Various things done here to improve the performance:\n\t\t// 1. we create a setTimeout, that calls refreshPositions\n\t\t// 2. on the instance, we have a counter variable, that get's higher after every append\n\t\t// 3. on the local scope, we copy the counter variable, and check in the timeout,\n\t\t// if it's still the same\n\t\t// 4. this lets only the last addition to the timeout stack through\n\t\tthis.counter = this.counter ? ++this.counter : 1;\n\t\tvar counter = this.counter;\n\n\t\tthis._delay( function() {\n\t\t\tif ( counter === this.counter ) {\n\n\t\t\t\t//Precompute after each DOM insertion, NOT on mousemove\n\t\t\t\tthis.refreshPositions( !hardRefresh );\n\t\t\t}\n\t\t} );\n\n\t},\n\n\t_clear: function( event, noPropagation ) {\n\n\t\tthis.reverting = false;\n\n\t\t// We delay all events that have to be triggered to after the point where the placeholder\n\t\t// has been removed and everything else normalized again\n\t\tvar i,\n\t\t\tdelayedTriggers = [];\n\n\t\t// We first have to update the dom position of the actual currentItem\n\t\t// Note: don't do it if the current item is already removed (by a user), or it gets\n\t\t// reappended (see #4088)\n\t\tif ( !this._noFinalSort && this.currentItem.parent().length ) {\n\t\t\tthis.placeholder.before( this.currentItem );\n\t\t}\n\t\tthis._noFinalSort = null;\n\n\t\tif ( this.helper[ 0 ] === this.currentItem[ 0 ] ) {\n\t\t\tfor ( i in this._storedCSS ) {\n\t\t\t\tif ( this._storedCSS[ i ] === \"auto\" || this._storedCSS[ i ] === \"static\" ) {\n\t\t\t\t\tthis._storedCSS[ i ] = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.currentItem.css( this._storedCSS );\n\t\t\tthis._removeClass( this.currentItem, \"ui-sortable-helper\" );\n\t\t} else {\n\t\t\tthis.currentItem.show();\n\t\t}\n\n\t\tif ( this.fromOutside && !noPropagation ) {\n\t\t\tdelayedTriggers.push( function( event ) {\n\t\t\t\tthis._trigger( \"receive\", event, this._uiHash( this.fromOutside ) );\n\t\t\t} );\n\t\t}\n\t\tif ( ( this.fromOutside ||\n\t\t\t\tthis.domPosition.prev !==\n\t\t\t\tthis.currentItem.prev().not( \".ui-sortable-helper\" )[ 0 ] ||\n\t\t\t\tthis.domPosition.parent !== this.currentItem.parent()[ 0 ] ) && !noPropagation ) {\n\n\t\t\t// Trigger update callback if the DOM position has changed\n\t\t\tdelayedTriggers.push( function( event ) {\n\t\t\t\tthis._trigger( \"update\", event, this._uiHash() );\n\t\t\t} );\n\t\t}\n\n\t\t// Check if the items Container has Changed and trigger appropriate\n\t\t// events.\n\t\tif ( this !== this.currentContainer ) {\n\t\t\tif ( !noPropagation ) {\n\t\t\t\tdelayedTriggers.push( function( event ) {\n\t\t\t\t\tthis._trigger( \"remove\", event, this._uiHash() );\n\t\t\t\t} );\n\t\t\t\tdelayedTriggers.push( ( function( c ) {\n\t\t\t\t\treturn function( event ) {\n\t\t\t\t\t\tc._trigger( \"receive\", event, this._uiHash( this ) );\n\t\t\t\t\t};\n\t\t\t\t} ).call( this, this.currentContainer ) );\n\t\t\t\tdelayedTriggers.push( ( function( c ) {\n\t\t\t\t\treturn function( event ) {\n\t\t\t\t\t\tc._trigger( \"update\", event, this._uiHash( this ) );\n\t\t\t\t\t};\n\t\t\t\t} ).call( this, this.currentContainer ) );\n\t\t\t}\n\t\t}\n\n\t\t//Post events to containers\n\t\tfunction delayEvent( type, instance, container ) {\n\t\t\treturn function( event ) {\n\t\t\t\tcontainer._trigger( type, event, instance._uiHash( instance ) );\n\t\t\t};\n\t\t}\n\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\tif ( !noPropagation ) {\n\t\t\t\tdelayedTriggers.push( delayEvent( \"deactivate\", this, this.containers[ i ] ) );\n\t\t\t}\n\t\t\tif ( this.containers[ i ].containerCache.over ) {\n\t\t\t\tdelayedTriggers.push( delayEvent( \"out\", this, this.containers[ i ] ) );\n\t\t\t\tthis.containers[ i ].containerCache.over = 0;\n\t\t\t}\n\t\t}\n\n\t\t//Do what was originally in plugins\n\t\tif ( this.storedCursor ) {\n\t\t\tthis.document.find( \"body\" ).css( \"cursor\", this.storedCursor );\n\t\t\tthis.storedStylesheet.remove();\n\t\t}\n\t\tif ( this._storedOpacity ) {\n\t\t\tthis.helper.css( \"opacity\", this._storedOpacity );\n\t\t}\n\t\tif ( this._storedZIndex ) {\n\t\t\tthis.helper.css( \"zIndex\", this._storedZIndex === \"auto\" ? \"\" : this._storedZIndex );\n\t\t}\n\n\t\tthis.dragging = false;\n\n\t\tif ( !noPropagation ) {\n\t\t\tthis._trigger( \"beforeStop\", event, this._uiHash() );\n\t\t}\n\n\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,\n\t\t// it unbinds ALL events from the original node!\n\t\tthis.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] );\n\n\t\tif ( !this.cancelHelperRemoval ) {\n\t\t\tif ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {\n\t\t\t\tthis.helper.remove();\n\t\t\t}\n\t\t\tthis.helper = null;\n\t\t}\n\n\t\tif ( !noPropagation ) {\n\t\t\tfor ( i = 0; i < delayedTriggers.length; i++ ) {\n\n\t\t\t\t// Trigger all delayed events\n\t\t\t\tdelayedTriggers[ i ].call( this, event );\n\t\t\t}\n\t\t\tthis._trigger( \"stop\", event, this._uiHash() );\n\t\t}\n\n\t\tthis.fromOutside = false;\n\t\treturn !this.cancelHelperRemoval;\n\n\t},\n\n\t_trigger: function() {\n\t\tif ( $.Widget.prototype._trigger.apply( this, arguments ) === false ) {\n\t\t\tthis.cancel();\n\t\t}\n\t},\n\n\t_uiHash: function( _inst ) {\n\t\tvar inst = _inst || this;\n\t\treturn {\n\t\t\thelper: inst.helper,\n\t\t\tplaceholder: inst.placeholder || $( [] ),\n\t\t\tposition: inst.position,\n\t\t\toriginalPosition: inst.originalPosition,\n\t\t\toffset: inst.positionAbs,\n\t\t\titem: inst.currentItem,\n\t\t\tsender: _inst ? _inst.element : null\n\t\t};\n\t}\n\n} );\n\n} ) );\n","/*!\n * jQuery UI Tabs 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Tabs\n//>>group: Widgets\n//>>description: Transforms a set of container elements into a tab structure.\n//>>docs: http://api.jqueryui.com/tabs/\n//>>demos: http://jqueryui.com/tabs/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/tabs.css\n//>>css.theme: ../../themes/base/theme.css\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"../escape-selector\",\n\t\t\t\"../keycode\",\n\t\t\t\"../safe-active-element\",\n\t\t\t\"../unique-id\",\n\t\t\t\"../version\",\n\t\t\t\"../widget\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n\n$.widget( \"ui.tabs\", {\n\tversion: \"1.12.1\",\n\tdelay: 300,\n\toptions: {\n\t\tactive: null,\n\t\tclasses: {\n\t\t\t\"ui-tabs\": \"ui-corner-all\",\n\t\t\t\"ui-tabs-nav\": \"ui-corner-all\",\n\t\t\t\"ui-tabs-panel\": \"ui-corner-bottom\",\n\t\t\t\"ui-tabs-tab\": \"ui-corner-top\"\n\t\t},\n\t\tcollapsible: false,\n\t\tevent: \"click\",\n\t\theightStyle: \"content\",\n\t\thide: null,\n\t\tshow: null,\n\n\t\t// Callbacks\n\t\tactivate: null,\n\t\tbeforeActivate: null,\n\t\tbeforeLoad: null,\n\t\tload: null\n\t},\n\n\t_isLocal: ( function() {\n\t\tvar rhash = /#.*$/;\n\n\t\treturn function( anchor ) {\n\t\t\tvar anchorUrl, locationUrl;\n\n\t\t\tanchorUrl = anchor.href.replace( rhash, \"\" );\n\t\t\tlocationUrl = location.href.replace( rhash, \"\" );\n\n\t\t\t// Decoding may throw an error if the URL isn't UTF-8 (#9518)\n\t\t\ttry {\n\t\t\t\tanchorUrl = decodeURIComponent( anchorUrl );\n\t\t\t} catch ( error ) {}\n\t\t\ttry {\n\t\t\t\tlocationUrl = decodeURIComponent( locationUrl );\n\t\t\t} catch ( error ) {}\n\n\t\t\treturn anchor.hash.length > 1 && anchorUrl === locationUrl;\n\t\t};\n\t} )(),\n\n\t_create: function() {\n\t\tvar that = this,\n\t\t\toptions = this.options;\n\n\t\tthis.running = false;\n\n\t\tthis._addClass( \"ui-tabs\", \"ui-widget ui-widget-content\" );\n\t\tthis._toggleClass( \"ui-tabs-collapsible\", null, options.collapsible );\n\n\t\tthis._processTabs();\n\t\toptions.active = this._initialActive();\n\n\t\t// Take disabling tabs via class attribute from HTML\n\t\t// into account and update option properly.\n\t\tif ( $.isArray( options.disabled ) ) {\n\t\t\toptions.disabled = $.unique( options.disabled.concat(\n\t\t\t\t$.map( this.tabs.filter( \".ui-state-disabled\" ), function( li ) {\n\t\t\t\t\treturn that.tabs.index( li );\n\t\t\t\t} )\n\t\t\t) ).sort();\n\t\t}\n\n\t\t// Check for length avoids error when initializing empty list\n\t\tif ( this.options.active !== false && this.anchors.length ) {\n\t\t\tthis.active = this._findActive( options.active );\n\t\t} else {\n\t\t\tthis.active = $();\n\t\t}\n\n\t\tthis._refresh();\n\n\t\tif ( this.active.length ) {\n\t\t\tthis.load( options.active );\n\t\t}\n\t},\n\n\t_initialActive: function() {\n\t\tvar active = this.options.active,\n\t\t\tcollapsible = this.options.collapsible,\n\t\t\tlocationHash = location.hash.substring( 1 );\n\n\t\tif ( active === null ) {\n\n\t\t\t// check the fragment identifier in the URL\n\t\t\tif ( locationHash ) {\n\t\t\t\tthis.tabs.each( function( i, tab ) {\n\t\t\t\t\tif ( $( tab ).attr( \"aria-controls\" ) === locationHash ) {\n\t\t\t\t\t\tactive = i;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\t// Check for a tab marked active via a class\n\t\t\tif ( active === null ) {\n\t\t\t\tactive = this.tabs.index( this.tabs.filter( \".ui-tabs-active\" ) );\n\t\t\t}\n\n\t\t\t// No active tab, set to false\n\t\t\tif ( active === null || active === -1 ) {\n\t\t\t\tactive = this.tabs.length ? 0 : false;\n\t\t\t}\n\t\t}\n\n\t\t// Handle numbers: negative, out of range\n\t\tif ( active !== false ) {\n\t\t\tactive = this.tabs.index( this.tabs.eq( active ) );\n\t\t\tif ( active === -1 ) {\n\t\t\t\tactive = collapsible ? false : 0;\n\t\t\t}\n\t\t}\n\n\t\t// Don't allow collapsible: false and active: false\n\t\tif ( !collapsible && active === false && this.anchors.length ) {\n\t\t\tactive = 0;\n\t\t}\n\n\t\treturn active;\n\t},\n\n\t_getCreateEventData: function() {\n\t\treturn {\n\t\t\ttab: this.active,\n\t\t\tpanel: !this.active.length ? $() : this._getPanelForTab( this.active )\n\t\t};\n\t},\n\n\t_tabKeydown: function( event ) {\n\t\tvar focusedTab = $( $.ui.safeActiveElement( this.document[ 0 ] ) ).closest( \"li\" ),\n\t\t\tselectedIndex = this.tabs.index( focusedTab ),\n\t\t\tgoingForward = true;\n\n\t\tif ( this._handlePageNav( event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase $.ui.keyCode.RIGHT:\n\t\tcase $.ui.keyCode.DOWN:\n\t\t\tselectedIndex++;\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.UP:\n\t\tcase $.ui.keyCode.LEFT:\n\t\t\tgoingForward = false;\n\t\t\tselectedIndex--;\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.END:\n\t\t\tselectedIndex = this.anchors.length - 1;\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.HOME:\n\t\t\tselectedIndex = 0;\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.SPACE:\n\n\t\t\t// Activate only, no collapsing\n\t\t\tevent.preventDefault();\n\t\t\tclearTimeout( this.activating );\n\t\t\tthis._activate( selectedIndex );\n\t\t\treturn;\n\t\tcase $.ui.keyCode.ENTER:\n\n\t\t\t// Toggle (cancel delayed activation, allow collapsing)\n\t\t\tevent.preventDefault();\n\t\t\tclearTimeout( this.activating );\n\n\t\t\t// Determine if we should collapse or activate\n\t\t\tthis._activate( selectedIndex === this.options.active ? false : selectedIndex );\n\t\t\treturn;\n\t\tdefault:\n\t\t\treturn;\n\t\t}\n\n\t\t// Focus the appropriate tab, based on which key was pressed\n\t\tevent.preventDefault();\n\t\tclearTimeout( this.activating );\n\t\tselectedIndex = this._focusNextTab( selectedIndex, goingForward );\n\n\t\t// Navigating with control/command key will prevent automatic activation\n\t\tif ( !event.ctrlKey && !event.metaKey ) {\n\n\t\t\t// Update aria-selected immediately so that AT think the tab is already selected.\n\t\t\t// Otherwise AT may confuse the user by stating that they need to activate the tab,\n\t\t\t// but the tab will already be activated by the time the announcement finishes.\n\t\t\tfocusedTab.attr( \"aria-selected\", \"false\" );\n\t\t\tthis.tabs.eq( selectedIndex ).attr( \"aria-selected\", \"true\" );\n\n\t\t\tthis.activating = this._delay( function() {\n\t\t\t\tthis.option( \"active\", selectedIndex );\n\t\t\t}, this.delay );\n\t\t}\n\t},\n\n\t_panelKeydown: function( event ) {\n\t\tif ( this._handlePageNav( event ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Ctrl+up moves focus to the current tab\n\t\tif ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.active.trigger( \"focus\" );\n\t\t}\n\t},\n\n\t// Alt+page up/down moves focus to the previous/next tab (and activates)\n\t_handlePageNav: function( event ) {\n\t\tif ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {\n\t\t\tthis._activate( this._focusNextTab( this.options.active - 1, false ) );\n\t\t\treturn true;\n\t\t}\n\t\tif ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {\n\t\t\tthis._activate( this._focusNextTab( this.options.active + 1, true ) );\n\t\t\treturn true;\n\t\t}\n\t},\n\n\t_findNextTab: function( index, goingForward ) {\n\t\tvar lastTabIndex = this.tabs.length - 1;\n\n\t\tfunction constrain() {\n\t\t\tif ( index > lastTabIndex ) {\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\tif ( index < 0 ) {\n\t\t\t\tindex = lastTabIndex;\n\t\t\t}\n\t\t\treturn index;\n\t\t}\n\n\t\twhile ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {\n\t\t\tindex = goingForward ? index + 1 : index - 1;\n\t\t}\n\n\t\treturn index;\n\t},\n\n\t_focusNextTab: function( index, goingForward ) {\n\t\tindex = this._findNextTab( index, goingForward );\n\t\tthis.tabs.eq( index ).trigger( \"focus\" );\n\t\treturn index;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"active\" ) {\n\n\t\t\t// _activate() will handle invalid values and update this.options\n\t\t\tthis._activate( value );\n\t\t\treturn;\n\t\t}\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"collapsible\" ) {\n\t\t\tthis._toggleClass( \"ui-tabs-collapsible\", null, value );\n\n\t\t\t// Setting collapsible: false while collapsed; open first panel\n\t\t\tif ( !value && this.options.active === false ) {\n\t\t\t\tthis._activate( 0 );\n\t\t\t}\n\t\t}\n\n\t\tif ( key === \"event\" ) {\n\t\t\tthis._setupEvents( value );\n\t\t}\n\n\t\tif ( key === \"heightStyle\" ) {\n\t\t\tthis._setupHeightStyle( value );\n\t\t}\n\t},\n\n\t_sanitizeSelector: function( hash ) {\n\t\treturn hash ? hash.replace( /[!\"$%&'()*+,.\\/:;<=>?@\\[\\]\\^`{|}~]/g, \"\\\\$&\" ) : \"\";\n\t},\n\n\trefresh: function() {\n\t\tvar options = this.options,\n\t\t\tlis = this.tablist.children( \":has(a[href])\" );\n\n\t\t// Get disabled tabs from class attribute from HTML\n\t\t// this will get converted to a boolean if needed in _refresh()\n\t\toptions.disabled = $.map( lis.filter( \".ui-state-disabled\" ), function( tab ) {\n\t\t\treturn lis.index( tab );\n\t\t} );\n\n\t\tthis._processTabs();\n\n\t\t// Was collapsed or no tabs\n\t\tif ( options.active === false || !this.anchors.length ) {\n\t\t\toptions.active = false;\n\t\t\tthis.active = $();\n\n\t\t// was active, but active tab is gone\n\t\t} else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {\n\n\t\t\t// all remaining tabs are disabled\n\t\t\tif ( this.tabs.length === options.disabled.length ) {\n\t\t\t\toptions.active = false;\n\t\t\t\tthis.active = $();\n\n\t\t\t// activate previous tab\n\t\t\t} else {\n\t\t\t\tthis._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );\n\t\t\t}\n\n\t\t// was active, active tab still exists\n\t\t} else {\n\n\t\t\t// make sure active index is correct\n\t\t\toptions.active = this.tabs.index( this.active );\n\t\t}\n\n\t\tthis._refresh();\n\t},\n\n\t_refresh: function() {\n\t\tthis._setOptionDisabled( this.options.disabled );\n\t\tthis._setupEvents( this.options.event );\n\t\tthis._setupHeightStyle( this.options.heightStyle );\n\n\t\tthis.tabs.not( this.active ).attr( {\n\t\t\t\"aria-selected\": \"false\",\n\t\t\t\"aria-expanded\": \"false\",\n\t\t\ttabIndex: -1\n\t\t} );\n\t\tthis.panels.not( this._getPanelForTab( this.active ) )\n\t\t\t.hide()\n\t\t\t.attr( {\n\t\t\t\t\"aria-hidden\": \"true\"\n\t\t\t} );\n\n\t\t// Make sure one tab is in the tab order\n\t\tif ( !this.active.length ) {\n\t\t\tthis.tabs.eq( 0 ).attr( \"tabIndex\", 0 );\n\t\t} else {\n\t\t\tthis.active\n\t\t\t\t.attr( {\n\t\t\t\t\t\"aria-selected\": \"true\",\n\t\t\t\t\t\"aria-expanded\": \"true\",\n\t\t\t\t\ttabIndex: 0\n\t\t\t\t} );\n\t\t\tthis._addClass( this.active, \"ui-tabs-active\", \"ui-state-active\" );\n\t\t\tthis._getPanelForTab( this.active )\n\t\t\t\t.show()\n\t\t\t\t.attr( {\n\t\t\t\t\t\"aria-hidden\": \"false\"\n\t\t\t\t} );\n\t\t}\n\t},\n\n\t_processTabs: function() {\n\t\tvar that = this,\n\t\t\tprevTabs = this.tabs,\n\t\t\tprevAnchors = this.anchors,\n\t\t\tprevPanels = this.panels;\n\n\t\tthis.tablist = this._getList().attr( \"role\", \"tablist\" );\n\t\tthis._addClass( this.tablist, \"ui-tabs-nav\",\n\t\t\t\"ui-helper-reset ui-helper-clearfix ui-widget-header\" );\n\n\t\t// Prevent users from focusing disabled tabs via click\n\t\tthis.tablist\n\t\t\t.on( \"mousedown\" + this.eventNamespace, \"> li\", function( event ) {\n\t\t\t\tif ( $( this ).is( \".ui-state-disabled\" ) ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t} )\n\n\t\t\t// Support: IE <9\n\t\t\t// Preventing the default action in mousedown doesn't prevent IE\n\t\t\t// from focusing the element, so if the anchor gets focused, blur.\n\t\t\t// We don't have to worry about focusing the previously focused\n\t\t\t// element since clicking on a non-focusable element should focus\n\t\t\t// the body anyway.\n\t\t\t.on( \"focus\" + this.eventNamespace, \".ui-tabs-anchor\", function() {\n\t\t\t\tif ( $( this ).closest( \"li\" ).is( \".ui-state-disabled\" ) ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t}\n\t\t\t} );\n\n\t\tthis.tabs = this.tablist.find( \"> li:has(a[href])\" )\n\t\t\t.attr( {\n\t\t\t\trole: \"tab\",\n\t\t\t\ttabIndex: -1\n\t\t\t} );\n\t\tthis._addClass( this.tabs, \"ui-tabs-tab\", \"ui-state-default\" );\n\n\t\tthis.anchors = this.tabs.map( function() {\n\t\t\treturn $( \"a\", this )[ 0 ];\n\t\t} )\n\t\t\t.attr( {\n\t\t\t\trole: \"presentation\",\n\t\t\t\ttabIndex: -1\n\t\t\t} );\n\t\tthis._addClass( this.anchors, \"ui-tabs-anchor\" );\n\n\t\tthis.panels = $();\n\n\t\tthis.anchors.each( function( i, anchor ) {\n\t\t\tvar selector, panel, panelId,\n\t\t\t\tanchorId = $( anchor ).uniqueId().attr( \"id\" ),\n\t\t\t\ttab = $( anchor ).closest( \"li\" ),\n\t\t\t\toriginalAriaControls = tab.attr( \"aria-controls\" );\n\n\t\t\t// Inline tab\n\t\t\tif ( that._isLocal( anchor ) ) {\n\t\t\t\tselector = anchor.hash;\n\t\t\t\tpanelId = selector.substring( 1 );\n\t\t\t\tpanel = that.element.find( that._sanitizeSelector( selector ) );\n\n\t\t\t// remote tab\n\t\t\t} else {\n\n\t\t\t\t// If the tab doesn't already have aria-controls,\n\t\t\t\t// generate an id by using a throw-away element\n\t\t\t\tpanelId = tab.attr( \"aria-controls\" ) || $( {} ).uniqueId()[ 0 ].id;\n\t\t\t\tselector = \"#\" + panelId;\n\t\t\t\tpanel = that.element.find( selector );\n\t\t\t\tif ( !panel.length ) {\n\t\t\t\t\tpanel = that._createPanel( panelId );\n\t\t\t\t\tpanel.insertAfter( that.panels[ i - 1 ] || that.tablist );\n\t\t\t\t}\n\t\t\t\tpanel.attr( \"aria-live\", \"polite\" );\n\t\t\t}\n\n\t\t\tif ( panel.length ) {\n\t\t\t\tthat.panels = that.panels.add( panel );\n\t\t\t}\n\t\t\tif ( originalAriaControls ) {\n\t\t\t\ttab.data( \"ui-tabs-aria-controls\", originalAriaControls );\n\t\t\t}\n\t\t\ttab.attr( {\n\t\t\t\t\"aria-controls\": panelId,\n\t\t\t\t\"aria-labelledby\": anchorId\n\t\t\t} );\n\t\t\tpanel.attr( \"aria-labelledby\", anchorId );\n\t\t} );\n\n\t\tthis.panels.attr( \"role\", \"tabpanel\" );\n\t\tthis._addClass( this.panels, \"ui-tabs-panel\", \"ui-widget-content\" );\n\n\t\t// Avoid memory leaks (#10056)\n\t\tif ( prevTabs ) {\n\t\t\tthis._off( prevTabs.not( this.tabs ) );\n\t\t\tthis._off( prevAnchors.not( this.anchors ) );\n\t\t\tthis._off( prevPanels.not( this.panels ) );\n\t\t}\n\t},\n\n\t// Allow overriding how to find the list for rare usage scenarios (#7715)\n\t_getList: function() {\n\t\treturn this.tablist || this.element.find( \"ol, ul\" ).eq( 0 );\n\t},\n\n\t_createPanel: function( id ) {\n\t\treturn $( \"<div>\" )\n\t\t\t.attr( \"id\", id )\n\t\t\t.data( \"ui-tabs-destroy\", true );\n\t},\n\n\t_setOptionDisabled: function( disabled ) {\n\t\tvar currentItem, li, i;\n\n\t\tif ( $.isArray( disabled ) ) {\n\t\t\tif ( !disabled.length ) {\n\t\t\t\tdisabled = false;\n\t\t\t} else if ( disabled.length === this.anchors.length ) {\n\t\t\t\tdisabled = true;\n\t\t\t}\n\t\t}\n\n\t\t// Disable tabs\n\t\tfor ( i = 0; ( li = this.tabs[ i ] ); i++ ) {\n\t\t\tcurrentItem = $( li );\n\t\t\tif ( disabled === true || $.inArray( i, disabled ) !== -1 ) {\n\t\t\t\tcurrentItem.attr( \"aria-disabled\", \"true\" );\n\t\t\t\tthis._addClass( currentItem, null, \"ui-state-disabled\" );\n\t\t\t} else {\n\t\t\t\tcurrentItem.removeAttr( \"aria-disabled\" );\n\t\t\t\tthis._removeClass( currentItem, null, \"ui-state-disabled\" );\n\t\t\t}\n\t\t}\n\n\t\tthis.options.disabled = disabled;\n\n\t\tthis._toggleClass( this.widget(), this.widgetFullName + \"-disabled\", null,\n\t\t\tdisabled === true );\n\t},\n\n\t_setupEvents: function( event ) {\n\t\tvar events = {};\n\t\tif ( event ) {\n\t\t\t$.each( event.split( \" \" ), function( index, eventName ) {\n\t\t\t\tevents[ eventName ] = \"_eventHandler\";\n\t\t\t} );\n\t\t}\n\n\t\tthis._off( this.anchors.add( this.tabs ).add( this.panels ) );\n\n\t\t// Always prevent the default action, even when disabled\n\t\tthis._on( true, this.anchors, {\n\t\t\tclick: function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t} );\n\t\tthis._on( this.anchors, events );\n\t\tthis._on( this.tabs, { keydown: \"_tabKeydown\" } );\n\t\tthis._on( this.panels, { keydown: \"_panelKeydown\" } );\n\n\t\tthis._focusable( this.tabs );\n\t\tthis._hoverable( this.tabs );\n\t},\n\n\t_setupHeightStyle: function( heightStyle ) {\n\t\tvar maxHeight,\n\t\t\tparent = this.element.parent();\n\n\t\tif ( heightStyle === \"fill\" ) {\n\t\t\tmaxHeight = parent.height();\n\t\t\tmaxHeight -= this.element.outerHeight() - this.element.height();\n\n\t\t\tthis.element.siblings( \":visible\" ).each( function() {\n\t\t\t\tvar elem = $( this ),\n\t\t\t\t\tposition = elem.css( \"position\" );\n\n\t\t\t\tif ( position === \"absolute\" || position === \"fixed\" ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tmaxHeight -= elem.outerHeight( true );\n\t\t\t} );\n\n\t\t\tthis.element.children().not( this.panels ).each( function() {\n\t\t\t\tmaxHeight -= $( this ).outerHeight( true );\n\t\t\t} );\n\n\t\t\tthis.panels.each( function() {\n\t\t\t\t$( this ).height( Math.max( 0, maxHeight -\n\t\t\t\t\t$( this ).innerHeight() + $( this ).height() ) );\n\t\t\t} )\n\t\t\t\t.css( \"overflow\", \"auto\" );\n\t\t} else if ( heightStyle === \"auto\" ) {\n\t\t\tmaxHeight = 0;\n\t\t\tthis.panels.each( function() {\n\t\t\t\tmaxHeight = Math.max( maxHeight, $( this ).height( \"\" ).height() );\n\t\t\t} ).height( maxHeight );\n\t\t}\n\t},\n\n\t_eventHandler: function( event ) {\n\t\tvar options = this.options,\n\t\t\tactive = this.active,\n\t\t\tanchor = $( event.currentTarget ),\n\t\t\ttab = anchor.closest( \"li\" ),\n\t\t\tclickedIsActive = tab[ 0 ] === active[ 0 ],\n\t\t\tcollapsing = clickedIsActive && options.collapsible,\n\t\t\ttoShow = collapsing ? $() : this._getPanelForTab( tab ),\n\t\t\ttoHide = !active.length ? $() : this._getPanelForTab( active ),\n\t\t\teventData = {\n\t\t\t\toldTab: active,\n\t\t\t\toldPanel: toHide,\n\t\t\t\tnewTab: collapsing ? $() : tab,\n\t\t\t\tnewPanel: toShow\n\t\t\t};\n\n\t\tevent.preventDefault();\n\n\t\tif ( tab.hasClass( \"ui-state-disabled\" ) ||\n\n\t\t\t\t// tab is already loading\n\t\t\t\ttab.hasClass( \"ui-tabs-loading\" ) ||\n\n\t\t\t\t// can't switch durning an animation\n\t\t\t\tthis.running ||\n\n\t\t\t\t// click on active header, but not collapsible\n\t\t\t\t( clickedIsActive && !options.collapsible ) ||\n\n\t\t\t\t// allow canceling activation\n\t\t\t\t( this._trigger( \"beforeActivate\", event, eventData ) === false ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\toptions.active = collapsing ? false : this.tabs.index( tab );\n\n\t\tthis.active = clickedIsActive ? $() : tab;\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tif ( !toHide.length && !toShow.length ) {\n\t\t\t$.error( \"jQuery UI Tabs: Mismatching fragment identifier.\" );\n\t\t}\n\n\t\tif ( toShow.length ) {\n\t\t\tthis.load( this.tabs.index( tab ), event );\n\t\t}\n\t\tthis._toggle( event, eventData );\n\t},\n\n\t// Handles show/hide for selecting tabs\n\t_toggle: function( event, eventData ) {\n\t\tvar that = this,\n\t\t\ttoShow = eventData.newPanel,\n\t\t\ttoHide = eventData.oldPanel;\n\n\t\tthis.running = true;\n\n\t\tfunction complete() {\n\t\t\tthat.running = false;\n\t\t\tthat._trigger( \"activate\", event, eventData );\n\t\t}\n\n\t\tfunction show() {\n\t\t\tthat._addClass( eventData.newTab.closest( \"li\" ), \"ui-tabs-active\", \"ui-state-active\" );\n\n\t\t\tif ( toShow.length && that.options.show ) {\n\t\t\t\tthat._show( toShow, that.options.show, complete );\n\t\t\t} else {\n\t\t\t\ttoShow.show();\n\t\t\t\tcomplete();\n\t\t\t}\n\t\t}\n\n\t\t// Start out by hiding, then showing, then completing\n\t\tif ( toHide.length && this.options.hide ) {\n\t\t\tthis._hide( toHide, this.options.hide, function() {\n\t\t\t\tthat._removeClass( eventData.oldTab.closest( \"li\" ),\n\t\t\t\t\t\"ui-tabs-active\", \"ui-state-active\" );\n\t\t\t\tshow();\n\t\t\t} );\n\t\t} else {\n\t\t\tthis._removeClass( eventData.oldTab.closest( \"li\" ),\n\t\t\t\t\"ui-tabs-active\", \"ui-state-active\" );\n\t\t\ttoHide.hide();\n\t\t\tshow();\n\t\t}\n\n\t\ttoHide.attr( \"aria-hidden\", \"true\" );\n\t\teventData.oldTab.attr( {\n\t\t\t\"aria-selected\": \"false\",\n\t\t\t\"aria-expanded\": \"false\"\n\t\t} );\n\n\t\t// If we're switching tabs, remove the old tab from the tab order.\n\t\t// If we're opening from collapsed state, remove the previous tab from the tab order.\n\t\t// If we're collapsing, then keep the collapsing tab in the tab order.\n\t\tif ( toShow.length && toHide.length ) {\n\t\t\teventData.oldTab.attr( \"tabIndex\", -1 );\n\t\t} else if ( toShow.length ) {\n\t\t\tthis.tabs.filter( function() {\n\t\t\t\treturn $( this ).attr( \"tabIndex\" ) === 0;\n\t\t\t} )\n\t\t\t\t.attr( \"tabIndex\", -1 );\n\t\t}\n\n\t\ttoShow.attr( \"aria-hidden\", \"false\" );\n\t\teventData.newTab.attr( {\n\t\t\t\"aria-selected\": \"true\",\n\t\t\t\"aria-expanded\": \"true\",\n\t\t\ttabIndex: 0\n\t\t} );\n\t},\n\n\t_activate: function( index ) {\n\t\tvar anchor,\n\t\t\tactive = this._findActive( index );\n\n\t\t// Trying to activate the already active panel\n\t\tif ( active[ 0 ] === this.active[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Trying to collapse, simulate a click on the current active header\n\t\tif ( !active.length ) {\n\t\t\tactive = this.active;\n\t\t}\n\n\t\tanchor = active.find( \".ui-tabs-anchor\" )[ 0 ];\n\t\tthis._eventHandler( {\n\t\t\ttarget: anchor,\n\t\t\tcurrentTarget: anchor,\n\t\t\tpreventDefault: $.noop\n\t\t} );\n\t},\n\n\t_findActive: function( index ) {\n\t\treturn index === false ? $() : this.tabs.eq( index );\n\t},\n\n\t_getIndex: function( index ) {\n\n\t\t// meta-function to give users option to provide a href string instead of a numerical index.\n\t\tif ( typeof index === \"string\" ) {\n\t\t\tindex = this.anchors.index( this.anchors.filter( \"[href$='\" +\n\t\t\t\t$.ui.escapeSelector( index ) + \"']\" ) );\n\t\t}\n\n\t\treturn index;\n\t},\n\n\t_destroy: function() {\n\t\tif ( this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\n\t\tthis.tablist\n\t\t\t.removeAttr( \"role\" )\n\t\t\t.off( this.eventNamespace );\n\n\t\tthis.anchors\n\t\t\t.removeAttr( \"role tabIndex\" )\n\t\t\t.removeUniqueId();\n\n\t\tthis.tabs.add( this.panels ).each( function() {\n\t\t\tif ( $.data( this, \"ui-tabs-destroy\" ) ) {\n\t\t\t\t$( this ).remove();\n\t\t\t} else {\n\t\t\t\t$( this ).removeAttr( \"role tabIndex \" +\n\t\t\t\t\t\"aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded\" );\n\t\t\t}\n\t\t} );\n\n\t\tthis.tabs.each( function() {\n\t\t\tvar li = $( this ),\n\t\t\t\tprev = li.data( \"ui-tabs-aria-controls\" );\n\t\t\tif ( prev ) {\n\t\t\t\tli\n\t\t\t\t\t.attr( \"aria-controls\", prev )\n\t\t\t\t\t.removeData( \"ui-tabs-aria-controls\" );\n\t\t\t} else {\n\t\t\t\tli.removeAttr( \"aria-controls\" );\n\t\t\t}\n\t\t} );\n\n\t\tthis.panels.show();\n\n\t\tif ( this.options.heightStyle !== \"content\" ) {\n\t\t\tthis.panels.css( \"height\", \"\" );\n\t\t}\n\t},\n\n\tenable: function( index ) {\n\t\tvar disabled = this.options.disabled;\n\t\tif ( disabled === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( index === undefined ) {\n\t\t\tdisabled = false;\n\t\t} else {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( $.isArray( disabled ) ) {\n\t\t\t\tdisabled = $.map( disabled, function( num ) {\n\t\t\t\t\treturn num !== index ? num : null;\n\t\t\t\t} );\n\t\t\t} else {\n\t\t\t\tdisabled = $.map( this.tabs, function( li, num ) {\n\t\t\t\t\treturn num !== index ? num : null;\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t\tthis._setOptionDisabled( disabled );\n\t},\n\n\tdisable: function( index ) {\n\t\tvar disabled = this.options.disabled;\n\t\tif ( disabled === true ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( index === undefined ) {\n\t\t\tdisabled = true;\n\t\t} else {\n\t\t\tindex = this._getIndex( index );\n\t\t\tif ( $.inArray( index, disabled ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( $.isArray( disabled ) ) {\n\t\t\t\tdisabled = $.merge( [ index ], disabled ).sort();\n\t\t\t} else {\n\t\t\t\tdisabled = [ index ];\n\t\t\t}\n\t\t}\n\t\tthis._setOptionDisabled( disabled );\n\t},\n\n\tload: function( index, event ) {\n\t\tindex = this._getIndex( index );\n\t\tvar that = this,\n\t\t\ttab = this.tabs.eq( index ),\n\t\t\tanchor = tab.find( \".ui-tabs-anchor\" ),\n\t\t\tpanel = this._getPanelForTab( tab ),\n\t\t\teventData = {\n\t\t\t\ttab: tab,\n\t\t\t\tpanel: panel\n\t\t\t},\n\t\t\tcomplete = function( jqXHR, status ) {\n\t\t\t\tif ( status === \"abort\" ) {\n\t\t\t\t\tthat.panels.stop( false, true );\n\t\t\t\t}\n\n\t\t\t\tthat._removeClass( tab, \"ui-tabs-loading\" );\n\t\t\t\tpanel.removeAttr( \"aria-busy\" );\n\n\t\t\t\tif ( jqXHR === that.xhr ) {\n\t\t\t\t\tdelete that.xhr;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Not remote\n\t\tif ( this._isLocal( anchor[ 0 ] ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );\n\n\t\t// Support: jQuery <1.8\n\t\t// jQuery <1.8 returns false if the request is canceled in beforeSend,\n\t\t// but as of 1.8, $.ajax() always returns a jqXHR object.\n\t\tif ( this.xhr && this.xhr.statusText !== \"canceled\" ) {\n\t\t\tthis._addClass( tab, \"ui-tabs-loading\" );\n\t\t\tpanel.attr( \"aria-busy\", \"true\" );\n\n\t\t\tthis.xhr\n\t\t\t\t.done( function( response, status, jqXHR ) {\n\n\t\t\t\t\t// support: jQuery <1.8\n\t\t\t\t\t// http://bugs.jquery.com/ticket/11778\n\t\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t\tpanel.html( response );\n\t\t\t\t\t\tthat._trigger( \"load\", event, eventData );\n\n\t\t\t\t\t\tcomplete( jqXHR, status );\n\t\t\t\t\t}, 1 );\n\t\t\t\t} )\n\t\t\t\t.fail( function( jqXHR, status ) {\n\n\t\t\t\t\t// support: jQuery <1.8\n\t\t\t\t\t// http://bugs.jquery.com/ticket/11778\n\t\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t\tcomplete( jqXHR, status );\n\t\t\t\t\t}, 1 );\n\t\t\t\t} );\n\t\t}\n\t},\n\n\t_ajaxSettings: function( anchor, event, eventData ) {\n\t\tvar that = this;\n\t\treturn {\n\n\t\t\t// Support: IE <11 only\n\t\t\t// Strip any hash that exists to prevent errors with the Ajax request\n\t\t\turl: anchor.attr( \"href\" ).replace( /#.*$/, \"\" ),\n\t\t\tbeforeSend: function( jqXHR, settings ) {\n\t\t\t\treturn that._trigger( \"beforeLoad\", event,\n\t\t\t\t\t$.extend( { jqXHR: jqXHR, ajaxSettings: settings }, eventData ) );\n\t\t\t}\n\t\t};\n\t},\n\n\t_getPanelForTab: function( tab ) {\n\t\tvar id = $( tab ).attr( \"aria-controls\" );\n\t\treturn this.element.find( this._sanitizeSelector( \"#\" + id ) );\n\t}\n} );\n\n// DEPRECATED\n// TODO: Switch return back to widget declaration at top of file when this is removed\nif ( $.uiBackCompat !== false ) {\n\n\t// Backcompat for ui-tab class (now ui-tabs-tab)\n\t$.widget( \"ui.tabs\", $.ui.tabs, {\n\t\t_processTabs: function() {\n\t\t\tthis._superApply( arguments );\n\t\t\tthis._addClass( this.tabs, \"ui-tab\" );\n\t\t}\n\t} );\n}\n\nreturn $.ui.tabs;\n\n} ) );\n","/*\n*\tTypeWatch 3\n*\n*\tExamples/Docs: github.com/dennyferra/TypeWatch\n* \n* Dual licensed under the MIT and GPL licenses:\n* http://www.opensource.org/licenses/mit-license.php\n* http://www.gnu.org/licenses/gpl.html\n*/\n\n!function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n factory(require('jquery'));\n } else {\n factory(root.jQuery);\n }\n}(this, function($) {\n 'use strict';\n\t$.fn.typeWatch = function(o) {\n\t\t// The default input types that are supported\n\t\tvar _supportedInputTypes =\n\t\t\t['TEXT', 'TEXTAREA', 'PASSWORD', 'TEL', 'SEARCH', 'URL', 'EMAIL', 'DATETIME', 'DATE', 'MONTH', 'WEEK', 'TIME', 'DATETIME-LOCAL', 'NUMBER', 'RANGE', 'DIV'];\n\n\t\t// Options\n\t\tvar options = $.extend({\n\t\t\twait: 750,\n\t\t\tcallback: function() { },\n\t\t\thighlight: true,\n\t\t\tcaptureLength: 2,\n\t\t\tallowSubmit: false,\n\t\t\tinputTypes: _supportedInputTypes\n\t\t}, o);\n\n\t\tfunction checkElement(timer, override) {\n\t\t\tvar value = timer.type === 'DIV' \n\t\t\t\t? jQuery(timer.el).html()\n\t\t\t\t: jQuery(timer.el).val();\n\n\t\t\t// If has capture length and has changed value\n\t\t\t// Or override and has capture length or allowSubmit option is true\n\t\t\t// Or capture length is zero and changed value\n\t\t\tif ((value.length >= options.captureLength && value != timer.text)\n\t\t\t\t|| (override && (value.length >= options.captureLength || options.allowSubmit))\n\t\t\t\t|| (value.length == 0 && timer.text))\n\t\t\t{\n\t\t\t\ttimer.text = value;\n\t\t\t\ttimer.cb.call(timer.el, value);\n\t\t\t}\n\t\t};\n\n\t\tfunction watchElement(elem) {\n\t\t\tvar elementType = (elem.type || elem.nodeName).toUpperCase();\n\t\t\tif (jQuery.inArray(elementType, options.inputTypes) >= 0) {\n\t\t\t\t\n\t\t\t\t// Allocate timer element\n\t\t\t\tvar timer = {\n\t\t\t\t\ttimer: null,\n\t\t\t\t\ttext: (elementType === 'DIV') ? jQuery(elem).html() : jQuery(elem).val(),\n\t\t\t\t\tcb: options.callback,\n\t\t\t\t\tel: elem,\n\t\t\t\t\ttype: elementType,\n\t\t\t\t\twait: options.wait\n\t\t\t\t};\n\n\t\t\t\t// Set focus action (highlight)\n\t\t\t\tif (options.highlight && elementType !== 'DIV')\n\t\t\t\t\tjQuery(elem).focus(function() { this.select(); });\n\n\t\t\t\t// Key watcher / clear and reset the timer\n\t\t\t\tvar startWatch = function(evt) {\n\t\t\t\t\tvar timerWait = timer.wait;\n\t\t\t\t\tvar overrideBool = false;\n\t\t\t\t\tvar evtElementType = elementType;\n\n\t\t\t\t\t// If enter key is pressed and not a TEXTAREA or DIV\n\t\t\t\t\tif (typeof evt.keyCode != 'undefined' && evt.keyCode == 13\n\t\t\t\t\t\t&& evtElementType !== 'TEXTAREA' && elementType !== 'DIV') {\n\t\t\t\t\t\ttimerWait = 1;\n\t\t\t\t\t\toverrideBool = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar timerCallbackFx = function() {\n\t\t\t\t\t\tcheckElement(timer, overrideBool)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Clear timer\n\t\t\t\t\tclearTimeout(timer.timer);\n\t\t\t\t\ttimer.timer = setTimeout(timerCallbackFx, timerWait);\n\t\t\t\t};\n\n\t\t\t\tjQuery(elem).on('keydown paste cut input', startWatch);\n\t\t\t}\n\t\t};\n\n\t\t// Watch each element\n\t\treturn this.each(function() {\n\t\t\twatchElement(this);\n\t\t});\n\t};\n});\n","define( [\n\t\"./core\",\n\t\"./var/document\",\n\t\"./var/isFunction\",\n\t\"./var/rnothtmlwhite\",\n\t\"./ajax/var/location\",\n\t\"./ajax/var/nonce\",\n\t\"./ajax/var/rquery\",\n\n\t\"./core/init\",\n\t\"./core/parseXML\",\n\t\"./event/trigger\",\n\t\"./deferred\",\n\t\"./serialize\" // jQuery.param\n], function( jQuery, document, isFunction, rnothtmlwhite, location, nonce, rquery ) {\n\n\"use strict\";\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\nreturn jQuery;\n} );\n","define( [\n\t\"../core\",\n\t\"../var/isFunction\",\n\t\"./var/nonce\",\n\t\"./var/rquery\",\n\t\"../ajax\"\n], function( jQuery, isFunction, nonce, rquery ) {\n\n\"use strict\";\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n} );\n","define( [\n\t\"../core\",\n\t\"../core/stripAndCollapse\",\n\t\"../var/isFunction\",\n\t\"../core/parseHTML\",\n\t\"../ajax\",\n\t\"../traversing\",\n\t\"../manipulation\",\n\t\"../selector\"\n], function( jQuery, stripAndCollapse, isFunction ) {\n\n\"use strict\";\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n} );\n","define( [\n\t\"../core\",\n\t\"../var/document\",\n\t\"../ajax\"\n], function( jQuery, document ) {\n\n\"use strict\";\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n} );\n","define( function() {\n\t\"use strict\";\n\n\treturn window.location;\n} );\n","define( function() {\n\t\"use strict\";\n\n\treturn { guid: Date.now() };\n} );\n","define( function() {\n\t\"use strict\";\n\n\treturn ( /\\?/ );\n} );\n","define( [\n\t\"../core\",\n\t\"../var/support\",\n\t\"../ajax\"\n], function( jQuery, support ) {\n\n\"use strict\";\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n} );\n","define( [\n\t\"./core\",\n\t\"./attributes/attr\",\n\t\"./attributes/prop\",\n\t\"./attributes/classes\",\n\t\"./attributes/val\"\n], function( jQuery ) {\n\n\"use strict\";\n\n// Return jQuery for attributes-only inclusion\nreturn jQuery;\n} );\n","define( [\n\t\"../core\",\n\t\"../core/access\",\n\t\"../core/nodeName\",\n\t\"./support\",\n\t\"../var/rnothtmlwhite\",\n\t\"../selector\"\n], function( jQuery, access, nodeName, support, rnothtmlwhite ) {\n\n\"use strict\";\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n} );\n","define( [\n\t\"../core\",\n\t\"../core/stripAndCollapse\",\n\t\"../var/isFunction\",\n\t\"../var/rnothtmlwhite\",\n\t\"../data/var/dataPriv\",\n\t\"../core/init\"\n], function( jQuery, stripAndCollapse, isFunction, rnothtmlwhite, dataPriv ) {\n\n\"use strict\";\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n} );\n","define( [\n\t\"../core\",\n\t\"../core/access\",\n\t\"./support\",\n\t\"../selector\"\n], function( jQuery, access, support ) {\n\n\"use strict\";\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n} );\n","define( [\n\t\"../var/document\",\n\t\"../var/support\"\n], function( document, support ) {\n\n\"use strict\";\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\nreturn support;\n\n} );\n","define( [\n\t\"../core\",\n\t\"../core/stripAndCollapse\",\n\t\"./support\",\n\t\"../core/nodeName\",\n\t\"../var/isFunction\",\n\n\t\"../core/init\"\n], function( jQuery, stripAndCollapse, support, nodeName, isFunction ) {\n\n\"use strict\";\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n} );\n","define( [\n\t\"./core\",\n\t\"./core/toType\",\n\t\"./var/isFunction\",\n\t\"./var/rnothtmlwhite\"\n], function( jQuery, toType, isFunction, rnothtmlwhite ) {\n\n\"use strict\";\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\nreturn jQuery;\n} );\n","/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\ndefine( [\n\t\"./var/arr\",\n\t\"./var/getProto\",\n\t\"./var/slice\",\n\t\"./var/flat\",\n\t\"./var/push\",\n\t\"./var/indexOf\",\n\t\"./var/class2type\",\n\t\"./var/toString\",\n\t\"./var/hasOwn\",\n\t\"./var/fnToString\",\n\t\"./var/ObjectFunctionString\",\n\t\"./var/support\",\n\t\"./var/isFunction\",\n\t\"./var/isWindow\",\n\t\"./core/DOMEval\",\n\t\"./core/toType\"\n], function( arr, getProto, slice, flat, push, indexOf,\n\tclass2type, toString, hasOwn, fnToString, ObjectFunctionString,\n\tsupport, isFunction, isWindow, DOMEval, toType ) {\n\n\"use strict\";\n\nvar version = \"3.7.1\",\n\n\trhtmlSuffix = /HTML$/i,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\n\t// Retrieve the text value of an array of DOM nodes\n\ttext: function( elem ) {\n\t\tvar node,\n\t\t\tret = \"\",\n\t\t\ti = 0,\n\t\t\tnodeType = elem.nodeType;\n\n\t\tif ( !nodeType ) {\n\n\t\t\t// If no nodeType, this is expected to be an array\n\t\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t\t// Do not traverse comment nodes\n\t\t\t\tret += jQuery.text( node );\n\t\t\t}\n\t\t}\n\t\tif ( nodeType === 1 || nodeType === 11 ) {\n\t\t\treturn elem.textContent;\n\t\t}\n\t\tif ( nodeType === 9 ) {\n\t\t\treturn elem.documentElement.textContent;\n\t\t}\n\t\tif ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\n\t\t// Do not include comment or processing instruction nodes\n\n\t\treturn ret;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tisXMLDoc: function( elem ) {\n\t\tvar namespace = elem && elem.namespaceURI,\n\t\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t\t// Assume HTML when documentElement doesn't yet exist, such as inside\n\t\t// document fragments.\n\t\treturn !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\n\nreturn jQuery;\n} );\n","define( [\n\t\"../var/document\"\n], function( document ) {\n\t\"use strict\";\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\treturn DOMEval;\n} );\n","define( [\n\t\"../core\",\n\t\"../core/toType\",\n\t\"../var/isFunction\"\n], function( jQuery, toType, isFunction ) {\n\n\"use strict\";\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\nreturn access;\n\n} );\n","define( [], function() {\n\n\"use strict\";\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\n\nreturn camelCase;\n\n} );\n","// Initialize a jQuery object\ndefine( [\n\t\"../core\",\n\t\"../var/document\",\n\t\"../var/isFunction\",\n\t\"./var/rsingleTag\",\n\n\t\"../traversing/findFilter\"\n], function( jQuery, document, isFunction, rsingleTag ) {\n\n\"use strict\";\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\nreturn init;\n\n} );\n","define( [\n\t\"../core\",\n\t\"../var/documentElement\",\n\t\"../selector/contains\" // jQuery.contains\n], function( jQuery, documentElement ) {\n\t\"use strict\";\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\n\n\treturn isAttached;\n} );\n","define( function() {\n\n\"use strict\";\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\n\nreturn nodeName;\n\n} );\n","define( [\n\t\"../core\",\n\t\"../var/document\",\n\t\"./var/rsingleTag\",\n\t\"../manipulation/buildFragment\",\n\n\t// This is the only module that needs core/support\n\t\"./support\"\n], function( jQuery, document, rsingleTag, buildFragment, support ) {\n\n\"use strict\";\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\nreturn jQuery.parseHTML;\n\n} );\n","define( [\n\t\"../core\"\n], function( jQuery ) {\n\n\"use strict\";\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\nreturn jQuery.parseXML;\n\n} );\n","define( [\n\t\"../core\",\n\t\"../var/document\",\n\t\"../core/readyException\",\n\t\"../deferred\"\n], function( jQuery, document ) {\n\n\"use strict\";\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n} );\n","define( [\n\t\"../core\"\n], function( jQuery ) {\n\n\"use strict\";\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n} );\n","define( [\n\t\"../var/rnothtmlwhite\"\n], function( rnothtmlwhite ) {\n\t\"use strict\";\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\treturn stripAndCollapse;\n} );\n","define( [\n\t\"../var/document\",\n\t\"../var/support\"\n], function( document, support ) {\n\n\"use strict\";\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\nreturn support;\n} );\n","define( [\n\t\"../var/class2type\",\n\t\"../var/toString\"\n], function( class2type, toString ) {\n\n\"use strict\";\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n\nreturn toType;\n} );\n","define( function() {\n\t\"use strict\";\n\n\t// rsingleTag matches a string consisting of a single HTML element with no attributes\n\t// and captures the element's name\n\treturn ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n} );\n","define( [\n\t\"./core\",\n\t\"./core/access\",\n\t\"./core/camelCase\",\n\t\"./core/nodeName\",\n\t\"./var/rcssNum\",\n\t\"./css/var/rnumnonpx\",\n\t\"./css/var/rcustomProp\",\n\t\"./css/var/cssExpand\",\n\t\"./css/var/getStyles\",\n\t\"./css/var/swap\",\n\t\"./css/curCSS\",\n\t\"./css/adjustCSS\",\n\t\"./css/addGetHookIf\",\n\t\"./css/support\",\n\t\"./css/finalPropName\",\n\n\t\"./core/init\",\n\t\"./core/ready\",\n\t\"./selector\" // contains\n], function( jQuery, access, camelCase, nodeName, rcssNum, rnumnonpx,\n\trcustomProp, cssExpand, getStyles, swap, curCSS, adjustCSS, addGetHookIf,\n\tsupport, finalPropName ) {\n\n\"use strict\";\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0,\n\t\tmarginDelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\t// Count margin delta separately to only add it after scroll gutter adjustment.\n\t\t// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n\t\tif ( box === \"margin\" ) {\n\t\t\tmarginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta + marginDelta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\tanimationIterationCount: true,\n\t\taspectRatio: true,\n\t\tborderImageSlice: true,\n\t\tcolumnCount: true,\n\t\tflexGrow: true,\n\t\tflexShrink: true,\n\t\tfontWeight: true,\n\t\tgridArea: true,\n\t\tgridColumn: true,\n\t\tgridColumnEnd: true,\n\t\tgridColumnStart: true,\n\t\tgridRow: true,\n\t\tgridRowEnd: true,\n\t\tgridRowStart: true,\n\t\tlineHeight: true,\n\t\topacity: true,\n\t\torder: true,\n\t\torphans: true,\n\t\tscale: true,\n\t\twidows: true,\n\t\tzIndex: true,\n\t\tzoom: true,\n\n\t\t// SVG-related\n\t\tfillOpacity: true,\n\t\tfloodOpacity: true,\n\t\tstopOpacity: true,\n\t\tstrokeMiterlimit: true,\n\t\tstrokeOpacity: true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\nreturn jQuery;\n} );\n","define( function() {\n\n\"use strict\";\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\nreturn addGetHookIf;\n\n} );\n","define( [\n\t\"../core\",\n\t\"../var/rcssNum\"\n], function( jQuery, rcssNum ) {\n\n\"use strict\";\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\nreturn adjustCSS;\n} );\n","define( [\n\t\"../core\",\n\t\"../core/isAttached\",\n\t\"./var/rboxStyle\",\n\t\"./var/rnumnonpx\",\n\t\"./var/getStyles\",\n\t\"./var/rcustomProp\",\n\t\"../var/rtrimCSS\",\n\t\"./support\"\n], function( jQuery, isAttached, rboxStyle, rnumnonpx, getStyles,\n\trcustomProp, rtrimCSS, support ) {\n\n\"use strict\";\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, trac-12537)\n\t// .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105+, Chrome <=105+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace. Chrome just collapses\n\t\t\t// both leading & trailing whitespace to a single space.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\nreturn curCSS;\n} );\n","define( [\n\t\"../var/document\",\n\t\"../core\"\n], function( document, jQuery ) {\n\n\"use strict\";\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\nreturn finalPropName;\n\n} );\n","define( [\n\t\"../core\",\n\t\"../selector\"\n], function( jQuery ) {\n\n\"use strict\";\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n} );\n","define( [\n\t\"../core\",\n\t\"../data/var/dataPriv\",\n\t\"../css/var/isHiddenWithinTree\"\n], function( jQuery, dataPriv, isHiddenWithinTree ) {\n\n\"use strict\";\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\n\nreturn showHide;\n} );\n","define( [\n\t\"../core\",\n\t\"../var/document\",\n\t\"../var/documentElement\",\n\t\"../var/support\"\n], function( jQuery, document, documentElement, support ) {\n\n\"use strict\";\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"box-sizing:content-box;border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is `display: block`\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\nreturn support;\n\n} );\n","define( function() {\n\t\"use strict\";\n\n\treturn [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n} );\n","define( function() {\n\t\"use strict\";\n\n\treturn function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n} );\n","define( [\n\t\"../../core\",\n\t\"../../core/isAttached\"\n\n\t// css is assumed\n], function( jQuery, isAttached ) {\n\t\"use strict\";\n\n\t// isHiddenWithinTree reports if an element has a non-\"none\" display style (inline and/or\n\t// through the CSS cascade), which is useful in deciding whether or not to make it visible.\n\t// It differs from the :hidden selector (jQuery.expr.pseudos.hidden) in two important ways:\n\t// * A hidden ancestor does not force an element to be classified as hidden.\n\t// * Being disconnected from the document does not force an element to be classified as hidden.\n\t// These differences improve the behavior of .toggle() et al. when applied to elements that are\n\t// detached or contained within hidden ancestors (gh-2404, gh-2863).\n\treturn function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n} );\n","define( [\n\t\"./cssExpand\"\n], function( cssExpand ) {\n\t\"use strict\";\n\n\treturn new RegExp( cssExpand.join( \"|\" ), \"i\" );\n} );\n","define( function() {\n\n\"use strict\";\n\nreturn /^--/;\n\n} );\n","define( [\n\t\"../../var/pnum\"\n], function( pnum ) {\n\t\"use strict\";\n\n\treturn new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n} );\n","define( function() {\n\n\"use strict\";\n\n// A method for quickly swapping in/out CSS properties to get correct calculations.\nreturn function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n} );\n","define( [\n\t\"./core\",\n\t\"./core/access\",\n\t\"./core/camelCase\",\n\t\"./data/var/dataPriv\",\n\t\"./data/var/dataUser\"\n], function( jQuery, access, camelCase, dataPriv, dataUser ) {\n\n\"use strict\";\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\nreturn jQuery;\n} );\n","define( [\n\t\"../core\",\n\t\"../core/camelCase\",\n\t\"../var/rnothtmlwhite\",\n\t\"./var/acceptData\"\n], function( jQuery, camelCase, rnothtmlwhite, acceptData ) {\n\n\"use strict\";\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\n\nreturn Data;\n} );\n","define( function() {\n\n\"use strict\";\n\n/**\n * Determines whether an object can have data\n */\nreturn function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n} );\n","define( [\n\t\"../Data\"\n], function( Data ) {\n\t\"use strict\";\n\n\treturn new Data();\n} );\n","define( [\n\t\"../Data\"\n], function( Data ) {\n\t\"use strict\";\n\n\treturn new Data();\n} );\n","define( [\n\t\"./core\",\n\t\"./var/isFunction\",\n\t\"./var/slice\",\n\t\"./callbacks\"\n], function( jQuery, isFunction, slice ) {\n\n\"use strict\";\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.error );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the error, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getErrorHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getErrorHook();\n\n\t\t\t\t\t\t\t\t// The deprecated alias of the above. While the name suggests\n\t\t\t\t\t\t\t\t// returning the stack, not an error instance, jQuery just passes\n\t\t\t\t\t\t\t\t// it directly to `console.warn` so both will work; an instance\n\t\t\t\t\t\t\t\t// just better cooperates with source maps.\n\t\t\t\t\t\t\t\t} else if ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\nreturn jQuery;\n} );\n","define( [\n\t\"../core\",\n\t\"../deferred\"\n], function( jQuery ) {\n\n\"use strict\";\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n// captured before the async barrier to get the original error cause\n// which may otherwise be hidden.\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message,\n\t\t\terror.stack, asyncError );\n\t}\n};\n\n} );\n","define( [\n\t\"./core\",\n\t\"./core/nodeName\",\n\t\"./core/camelCase\",\n\t\"./core/toType\",\n\t\"./var/isFunction\",\n\t\"./var/isWindow\",\n\t\"./var/slice\",\n\n\t\"./deprecated/ajax-event-alias\",\n\t\"./deprecated/event\"\n], function( jQuery, nodeName, camelCase, toType, isFunction, isWindow, slice ) {\n\n\"use strict\";\n\n// Support: Android <=4.0 only\n// Make sure we trim BOM and NBSP\n// Require that the \"whitespace run\" starts from a non-whitespace\n// to avoid O(N^2) behavior when the engine would try matching \"\\s+$\" at each space position.\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|([^\\s\\uFEFF\\xA0])[\\s\\uFEFF\\xA0]+$/g;\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"$1\" );\n};\n} );\n","define( [\n\t\"../core\",\n\t\"../ajax\",\n\t\"../event\"\n], function( jQuery ) {\n\n\"use strict\";\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n} );\n","define( [\n\t\"../core\",\n\n\t\"../event\",\n\t\"../event/trigger\"\n], function( jQuery ) {\n\n\"use strict\";\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this\n\t\t\t.on( \"mouseenter\", fnOver )\n\t\t\t.on( \"mouseleave\", fnOut || fnOver );\n\t}\n} );\n\njQuery.each(\n\t( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t}\n);\n\n} );\n","define( [\n\t\"./core\",\n\t\"./core/access\",\n\t\"./var/isWindow\",\n\t\"./css\"\n], function( jQuery, access, isWindow ) {\n\n\"use strict\";\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( {\n\t\tpadding: \"inner\" + name,\n\t\tcontent: type,\n\t\t\"\": \"outer\" + name\n\t}, function( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\nreturn jQuery;\n} );\n","define( [\n\t\"./core\",\n\t\"./core/camelCase\",\n\t\"./var/document\",\n\t\"./var/isFunction\",\n\t\"./var/rcssNum\",\n\t\"./var/rnothtmlwhite\",\n\t\"./css/var/cssExpand\",\n\t\"./css/var/isHiddenWithinTree\",\n\t\"./css/adjustCSS\",\n\t\"./data/var/dataPriv\",\n\t\"./css/showHide\",\n\n\t\"./core/init\",\n\t\"./queue\",\n\t\"./deferred\",\n\t\"./traversing\",\n\t\"./manipulation\",\n\t\"./css\",\n\t\"./effects/Tween\"\n], function( jQuery, camelCase, document, isFunction, rcssNum, rnothtmlwhite, cssExpand,\n\tisHiddenWithinTree, adjustCSS, dataPriv, showHide ) {\n\n\"use strict\";\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\nreturn jQuery;\n} );\n","define( [\n\t\"../core\",\n\t\"../css/finalPropName\",\n\n\t\"../css\"\n], function( jQuery, finalPropName ) {\n\n\"use strict\";\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n} );\n","define( [\n\t\"../core\",\n\t\"../selector\",\n\t\"../effects\"\n], function( jQuery ) {\n\n\"use strict\";\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n} );\n","define( [\n\t\"./core\",\n\t\"./var/document\",\n\t\"./var/documentElement\",\n\t\"./var/isFunction\",\n\t\"./var/rnothtmlwhite\",\n\t\"./var/rcheckableType\",\n\t\"./var/slice\",\n\t\"./data/var/acceptData\",\n\t\"./data/var/dataPriv\",\n\t\"./core/nodeName\",\n\n\t\"./core/init\",\n\t\"./selector\"\n], function( jQuery, document, documentElement, isFunction, rnothtmlwhite,\n\trcheckableType, slice, acceptData, dataPriv, nodeName ) {\n\n\"use strict\";\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", true );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, isSetup ) {\n\n\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !isSetup ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\tif ( !saved ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tdataPriv.set( this, type, false );\n\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering\n\t\t\t\t// the native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, jQuery.event.trigger(\n\t\t\t\t\tsaved[ 0 ],\n\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\tthis\n\t\t\t\t) );\n\n\t\t\t\t// Abort handling of the native event by all jQuery handlers while allowing\n\t\t\t\t// native handlers on the same element to run. On target, this is achieved\n\t\t\t\t// by stopping immediate propagation just on the jQuery event. However,\n\t\t\t\t// the native event is re-wrapped by a jQuery one on each level of the\n\t\t\t\t// propagation so the only way to stop it for jQuery is to stop it for\n\t\t\t\t// everyone via native `stopPropagation()`. This is not a problem for\n\t\t\t\t// focus/blur which don't bubble, but it does also stop click on checkboxes\n\t\t\t\t// and radios. We accept this limitation.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.isImmediatePropagationStopped = returnTrue;\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\n\tfunction focusMappedHandler( nativeEvent ) {\n\t\tif ( document.documentMode ) {\n\n\t\t\t// Support: IE 11+\n\t\t\t// Attach a single focusin/focusout handler on the document while someone wants\n\t\t\t// focus/blur. This is because the former are synchronous in IE while the latter\n\t\t\t// are async. In other browsers, all those handlers are invoked synchronously.\n\n\t\t\t// `handle` from private data would already wrap the event, but we need\n\t\t\t// to change the `type` here.\n\t\t\tvar handle = dataPriv.get( this, \"handle\" ),\n\t\t\t\tevent = jQuery.event.fix( nativeEvent );\n\t\t\tevent.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n\t\t\tevent.isSimulated = true;\n\n\t\t\t// First, handle focusin/focusout\n\t\t\thandle( nativeEvent );\n\n\t\t\t// ...then, handle focus/blur\n\t\t\t//\n\t\t\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\n\t\t\t// invoking the handler at the lower level.\n\t\t\tif ( event.target === event.currentTarget ) {\n\n\t\t\t\t// The setup part calls `leverageNative`, which, in turn, calls\n\t\t\t\t// `jQuery.event.add`, so event handle will already have been set\n\t\t\t\t// by this point.\n\t\t\t\thandle( event );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// For non-IE browsers, attach a single capturing handler on the document\n\t\t\t// while someone wants focusin/focusout.\n\t\t\tjQuery.event.simulate( delegateType, nativeEvent.target,\n\t\t\t\tjQuery.event.fix( nativeEvent ) );\n\t\t}\n\t}\n\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\tvar attaches;\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, true );\n\n\t\t\tif ( document.documentMode ) {\n\n\t\t\t\t// Support: IE 9 - 11+\n\t\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\t\tattaches = dataPriv.get( this, delegateType );\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t}\n\t\t\t\tdataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );\n\t\t\t} else {\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tvar attaches;\n\n\t\t\tif ( document.documentMode ) {\n\t\t\t\tattaches = dataPriv.get( this, delegateType ) - 1;\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t\tdataPriv.remove( this, delegateType );\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.set( this, delegateType, attaches );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Return false to indicate standard teardown should be applied\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n\n\t// Support: Firefox <=44\n\t// Firefox doesn't have focus(in | out) events\n\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t//\n\t// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n\t// focus(in | out) events fire after focus & blur events,\n\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n\t// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\t//\n\t// Support: IE 9 - 11+\n\t// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n\t// attach a single handler for both events in IE.\n\tjQuery.event.special[ delegateType ] = {\n\t\tsetup: function() {\n\n\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType );\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.addEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\tdataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );\n\t\t},\n\t\tteardown: function() {\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType ) - 1;\n\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.removeEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( dataHolder, delegateType );\n\t\t\t} else {\n\t\t\t\tdataPriv.set( dataHolder, delegateType, attaches );\n\t\t\t}\n\t\t}\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\nreturn jQuery;\n} );\n","define( [\n\t\"../core\",\n\t\"../var/document\",\n\t\"../data/var/dataPriv\",\n\t\"../data/var/acceptData\",\n\t\"../var/hasOwn\",\n\t\"../var/isFunction\",\n\t\"../var/isWindow\",\n\t\"../event\"\n], function( jQuery, document, dataPriv, acceptData, hasOwn, isFunction, isWindow ) {\n\n\"use strict\";\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\nreturn jQuery;\n} );\n","define( [\n\t\"../core\"\n], function( jQuery ) {\n\n\"use strict\";\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n} );\n","define( [\n\t\"../core\"\n], function( jQuery ) {\n\n\"use strict\";\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (trac-13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n} );\n","define( [\n\t\"./core\",\n\t\"./selector\",\n\t\"./traversing\",\n\t\"./callbacks\",\n\t\"./deferred\",\n\t\"./deferred/exceptionHook\",\n\t\"./core/ready\",\n\t\"./data\",\n\t\"./queue\",\n\t\"./queue/delay\",\n\t\"./attributes\",\n\t\"./event\",\n\t\"./manipulation\",\n\t\"./manipulation/_evalUrl\",\n\t\"./wrap\",\n\t\"./css\",\n\t\"./css/hiddenVisibleSelectors\",\n\t\"./serialize\",\n\t\"./ajax\",\n\t\"./ajax/xhr\",\n\t\"./ajax/script\",\n\t\"./ajax/jsonp\",\n\t\"./ajax/load\",\n\t\"./core/parseXML\",\n\t\"./core/parseHTML\",\n\t\"./effects\",\n\t\"./effects/animatedSelector\",\n\t\"./offset\",\n\t\"./dimensions\",\n\t\"./deprecated\",\n\t\"./exports/amd\",\n\t\"./exports/global\"\n], function( jQuery ) {\n\n\"use strict\";\n\nreturn jQuery;\n\n} );\n","define( [\n\t\"./core\",\n\t\"./core/isAttached\",\n\t\"./var/flat\",\n\t\"./var/isFunction\",\n\t\"./var/push\",\n\t\"./var/rcheckableType\",\n\t\"./core/access\",\n\t\"./manipulation/var/rtagName\",\n\t\"./manipulation/var/rscriptType\",\n\t\"./manipulation/wrapMap\",\n\t\"./manipulation/getAll\",\n\t\"./manipulation/setGlobalEval\",\n\t\"./manipulation/buildFragment\",\n\t\"./manipulation/support\",\n\n\t\"./data/var/dataPriv\",\n\t\"./data/var/dataUser\",\n\t\"./data/var/acceptData\",\n\t\"./core/DOMEval\",\n\t\"./core/nodeName\",\n\n\t\"./core/init\",\n\t\"./traversing\",\n\t\"./selector\",\n\t\"./event\"\n], function( jQuery, isAttached, flat, isFunction, push, rcheckableType,\n\taccess, rtagName, rscriptType,\n\twrapMap, getAll, setGlobalEval, buildFragment, support,\n\tdataPriv, dataUser, acceptData, DOMEval, nodeName ) {\n\n\"use strict\";\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\n\trcleanScript = /^\\s*<!\\[CDATA\\[|\\]\\]>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Re-enable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew jQuery#find here for performance reasons:\n\t\t\t// https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\n\nreturn jQuery;\n} );\n","define( [\n\t\"../ajax\"\n], function( jQuery ) {\n\n\"use strict\";\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\nreturn jQuery._evalUrl;\n\n} );\n","define( [\n\t\"../core\",\n\t\"../core/toType\",\n\t\"../core/isAttached\",\n\t\"./var/rtagName\",\n\t\"./var/rscriptType\",\n\t\"./wrapMap\",\n\t\"./getAll\",\n\t\"./setGlobalEval\"\n], function( jQuery, toType, isAttached, rtagName, rscriptType, wrapMap, getAll, setGlobalEval ) {\n\n\"use strict\";\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\nreturn buildFragment;\n} );\n","define( [\n\t\"../core\",\n\t\"../core/nodeName\"\n], function( jQuery, nodeName ) {\n\n\"use strict\";\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\nreturn getAll;\n} );\n","define( [\n\t\"../data/var/dataPriv\"\n], function( dataPriv ) {\n\n\"use strict\";\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\nreturn setGlobalEval;\n} );\n","define( [\n\t\"../var/document\",\n\t\"../var/support\"\n], function( document, support ) {\n\n\"use strict\";\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\n\tsupport.option = !!div.lastChild;\n} )();\n\nreturn support;\n\n} );\n","define( function() {\n\t\"use strict\";\n\n\treturn ( /^$|^module$|\\/(?:java|ecma)script/i );\n} );\n","define( function() {\n\t\"use strict\";\n\n\t// rtagName captures the name from the first start tag in a string of HTML\n\t// https://html.spec.whatwg.org/multipage/syntax.html#tag-open-state\n\t// https://html.spec.whatwg.org/multipage/syntax.html#tag-name-state\n\treturn ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n} );\n","define( [\n\t\"./support\"\n], function( support ) {\n\n\"use strict\";\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"<select multiple='multiple'>\", \"</select>\" ];\n}\n\nreturn wrapMap;\n} );\n","define( [\n\t\"./core\",\n\t\"./core/access\",\n\t\"./var/documentElement\",\n\t\"./var/isFunction\",\n\t\"./css/var/rnumnonpx\",\n\t\"./css/curCSS\",\n\t\"./css/addGetHookIf\",\n\t\"./css/support\",\n\t\"./var/isWindow\",\n\t\"./core/init\",\n\t\"./css\",\n\t\"./selector\" // contains\n], function( jQuery, access, documentElement, isFunction, rnumnonpx,\n\tcurCSS, addGetHookIf, support, isWindow ) {\n\n\"use strict\";\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\nreturn jQuery;\n} );\n","define( [\n\t\"./core\",\n\t\"./data/var/dataPriv\",\n\t\"./deferred\",\n\t\"./callbacks\"\n], function( jQuery, dataPriv ) {\n\n\"use strict\";\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\n\nreturn jQuery;\n} );\n","define( [\n\t\"../core\",\n\t\"../queue\",\n\t\"../effects\" // Delay is optional because of this dependency\n], function( jQuery ) {\n\n\"use strict\";\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\nreturn jQuery.fn.delay;\n} );\n","define( [\n\t\"./core\",\n\t\"./core/nodeName\",\n\t\"./var/arr\",\n\t\"./var/document\",\n\t\"./var/indexOf\",\n\t\"./var/hasOwn\",\n\t\"./var/pop\",\n\t\"./var/push\",\n\t\"./var/slice\",\n\t\"./var/sort\",\n\t\"./var/splice\",\n\t\"./var/whitespace\",\n\t\"./var/rtrimCSS\",\n\t\"./var/support\",\n\n\t// The following utils are attached directly to the jQuery object.\n\t\"./selector/contains\",\n\t\"./selector/escapeSelector\"\n], function( jQuery, nodeName, arr, document, indexOf, hasOwn, pop, push,\n\tslice, sort, splice, whitespace, rtrimCSS, support ) {\n\n\"use strict\";\n\nvar preferredDoc = document,\n\tpushNative = push;\n\n( function() {\n\nvar i,\n\tExpr,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\tpush = pushNative,\n\n\t// Local document vars\n\tdocument,\n\tdocumentElement,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\tmatches,\n\n\t// Instance-specific data\n\texpando = jQuery.expando,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\" +\n\t\t\"loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trleadingCombinator = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" +\n\t\twhitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\tID: new RegExp( \"^#(\" + identifier + \")\" ),\n\t\tCLASS: new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\tTAG: new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\tATTR: new RegExp( \"^\" + attributes ),\n\t\tPSEUDO: new RegExp( \"^\" + pseudos ),\n\t\tCHILD: new RegExp(\n\t\t\t\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\tbool: new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\tneedsContext: new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\tif ( nonHex ) {\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\treturn nonHex;\n\t\t}\n\n\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t// Support: IE <=11+\n\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t// surrogate pair\n\t\treturn high < 0 ?\n\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes; see `setDocument`.\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE/Edge.\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && nodeName( elem, \"fieldset\" );\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android <=4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = {\n\t\tapply: function( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t},\n\t\tcall: function( target ) {\n\t\t\tpushNative.apply( target, slice.call( arguments, 1 ) );\n\t\t}\n\t};\n}\n\nfunction find( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tfind.contains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( !nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when\n\t\t\t\t\t// strict-comparing two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( newContext != context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = jQuery.escapeSelector( nid );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrimCSS, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties\n\t\t// (see https://github.com/jquery/sizzle/issues/157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by jQuery selector module\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn nodeName( elem, \"input\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn ( nodeName( elem, \"input\" ) || nodeName( elem, \"button\" ) ) &&\n\t\t\telem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11+\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a jQuery selector context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nfunction setDocument( node ) {\n\tvar subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocumentElement = document.documentElement;\n\tdocumentIsHTML = !jQuery.isXMLDoc( document );\n\n\t// Support: iOS 7 only, IE 9 - 11+\n\t// Older browsers didn't support unprefixed `matches`.\n\tmatches = documentElement.matches ||\n\t\tdocumentElement.webkitMatchesSelector ||\n\t\tdocumentElement.msMatchesSelector;\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors\n\t// (see trac-13936).\n\t// Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,\n\t// all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.\n\tif ( documentElement.msMatchesSelector &&\n\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tpreferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t\tsubWindow.addEventListener( \"unload\", unloadHandler );\n\t}\n\n\t// Support: IE <10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocumentElement.appendChild( el ).id = jQuery.expando;\n\t\treturn !document.getElementsByName ||\n\t\t\t!document.getElementsByName( jQuery.expando ).length;\n\t} );\n\n\t// Support: IE 9 only\n\t// Check to see if it's possible to do matchesSelector\n\t// on a disconnected node.\n\tsupport.disconnectedMatch = assert( function( el ) {\n\t\treturn matches.call( el, \"*\" );\n\t} );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// IE/Edge don't support the :scope pseudo-class.\n\tsupport.scope = assert( function() {\n\t\treturn document.querySelectorAll( \":scope\" );\n\t} );\n\n\t// Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\n\t// Make sure the `:has()` argument is parsed unforgivingly.\n\t// We include `*` in the test to detect buggy implementations that are\n\t// _selectively_ forgiving (specifically when the list includes at least\n\t// one valid selector).\n\t// Note that we treat complete lack of support for `:has()` as if it were\n\t// spec-compliant support, which is fine because use of `:has()` in such\n\t// environments will fail in the qSA path and fall back to jQuery traversal\n\t// anyway.\n\tsupport.cssHas = assert( function() {\n\t\ttry {\n\t\t\tdocument.querySelector( \":has(*,:jqfake)\" );\n\t\t\treturn false;\n\t\t} catch ( e ) {\n\t\t\treturn true;\n\t\t}\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find.TAG = function( tag, context ) {\n\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t// DocumentFragment nodes don't have gEBTN\n\t\t} else {\n\t\t\treturn context.querySelectorAll( tag );\n\t\t}\n\t};\n\n\t// Class\n\tExpr.find.CLASS = function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\trbuggyQSA = [];\n\n\t// Build QSA regex\n\t// Regex strategy adopted from Diego Perini\n\tassert( function( el ) {\n\n\t\tvar input;\n\n\t\tdocumentElement.appendChild( el ).innerHTML =\n\t\t\t\"<a id='\" + expando + \"' href='' disabled='disabled'></a>\" +\n\t\t\t\"<select id='\" + expando + \"-\\r\\\\' disabled='disabled'>\" +\n\t\t\t\"<option selected=''></option></select>\";\n\n\t\t// Support: iOS <=7 - 8 only\n\t\t// Boolean attributes and \"value\" are not treated correctly in some XML documents\n\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t}\n\n\t\t// Support: iOS <=7 - 8 only\n\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\trbuggyQSA.push( \"~=\" );\n\t\t}\n\n\t\t// Support: iOS 8 only\n\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t}\n\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\trbuggyQSA.push( \":checked\" );\n\t\t}\n\n\t\t// Support: Windows 8 Native Apps\n\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tdocumentElement.appendChild( el ).disabled = true;\n\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t}\n\n\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t// Adding a temporary attribute to the document before the selection works\n\t\t// around the issue.\n\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"name\", \"\" );\n\t\tel.appendChild( input );\n\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t}\n\t} );\n\n\tif ( !support.cssHas ) {\n\n\t\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n\t\t// Our regular `try-catch` mechanism fails to detect natively-unsupported\n\t\t// pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n\t\t// in browsers that parse the `:has()` argument as a forgiving selector list.\n\t\t// https://drafts.csswg.org/selectors/#relational now requires the argument\n\t\t// to be parsed unforgivingly, but browsers have not yet fully adjusted.\n\t\trbuggyQSA.push( \":has\" );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = function( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a === document || a.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b === document || b.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t};\n\n\treturn document;\n}\n\nfind.matches = function( expr, elements ) {\n\treturn find( expr, null, null, elements );\n};\n\nfind.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn find( expr, document, null, [ elem ] ).length > 0;\n};\n\nfind.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn jQuery.contains( context, elem );\n};\n\n\nfind.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (see trac-13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\tif ( val !== undefined ) {\n\t\treturn val;\n\t}\n\n\treturn elem.getAttribute( name );\n};\n\nfind.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\njQuery.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\t//\n\t// Support: Android <=4.0+\n\t// Testing for detecting duplicates is unpredictable so instead assume we can't\n\t// depend on duplicate detection in all browsers without a stable sort.\n\thasDuplicate = !support.sortStable;\n\tsortInput = !support.sortStable && slice.call( results, 0 );\n\tsort.call( results, sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tsplice.call( results, duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\njQuery.fn.uniqueSort = function() {\n\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\n};\n\nExpr = jQuery.expr = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\tATTR: function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || \"\" )\n\t\t\t\t.replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\tCHILD: function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" )\n\t\t\t\t);\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr.CHILD.test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\tTAG: function( nodeNameSelector ) {\n\t\t\tvar expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn nodeName( elem, expectedNodeName );\n\t\t\t\t};\n\t\t},\n\n\t\tCLASS: function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace + \")\" + className +\n\t\t\t\t\t\"(\" + whitespace + \"|$)\" ) ) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\tATTR: function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = find.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\tif ( operator === \"=\" ) {\n\t\t\t\t\treturn result === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"!=\" ) {\n\t\t\t\t\treturn result !== check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"^=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) === 0;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"*=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"$=\" ) {\n\t\t\t\t\treturn check && result.slice( -check.length ) === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"~=\" ) {\n\t\t\t\t\treturn ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" )\n\t\t\t\t\t\t.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"|=\" ) {\n\t\t\t\t\treturn result === check || result.slice( 0, check.length + 1 ) === check + \"-\";\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tCHILD: function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || ( parent[ expando ] = {} );\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\t\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\t\t\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\tPSEUDO: function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// https://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tfind.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as jQuery does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\tnot: markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrimCSS, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element\n\t\t\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\thas: markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn find( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\tcontains: markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// https://www.w3.org/TR/selectors/#lang-pseudo\n\t\tlang: markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tfind.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\ttarget: function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\troot: function( elem ) {\n\t\t\treturn elem === documentElement;\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === safeActiveElement() &&\n\t\t\t\tdocument.hasFocus() &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\tenabled: createDisabledPseudo( false ),\n\t\tdisabled: createDisabledPseudo( true ),\n\n\t\tchecked: function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\treturn ( nodeName( elem, \"input\" ) && !!elem.checked ) ||\n\t\t\t\t( nodeName( elem, \"option\" ) && !!elem.selected );\n\t\t},\n\n\t\tselected: function( elem ) {\n\n\t\t\t// Support: IE <=11+\n\t\t\t// Accessing the selectedIndex property\n\t\t\t// forces the browser to treat the default option as\n\t\t\t// selected when in an optgroup.\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\tempty: function( elem ) {\n\n\t\t\t// https://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !Expr.pseudos.empty( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\theader: function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"button\" ||\n\t\t\t\tnodeName( elem, \"button\" );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"text\" &&\n\n\t\t\t\t// Support: IE <10 only\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear\n\t\t\t\t// with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\tfirst: createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\teven: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\todd: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i;\n\n\t\t\tif ( argument < 0 ) {\n\t\t\t\ti = argument + length;\n\t\t\t} else if ( argument > length ) {\n\t\t\t\ti = length;\n\t\t\t} else {\n\t\t\t\ti = argument;\n\t\t\t}\n\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tgt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos.nth = Expr.pseudos.eq;\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rleadingCombinator.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrimCSS, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\tif ( parseOnly ) {\n\t\treturn soFar.length;\n\t}\n\n\treturn soFar ?\n\t\tfind.error( selector ) :\n\n\t\t// Cache the tokens\n\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\tif ( skip && nodeName( elem, skip ) ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = outerCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tfind( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem, matcherOut,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed ||\n\t\t\t\tmultipleContexts( selector || \"*\",\n\t\t\t\t\tcontext.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems;\n\n\t\tif ( matcher ) {\n\n\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter\n\t\t\t// or preexisting results,\n\t\t\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t[] :\n\n\t\t\t\t// ...otherwise use results directly\n\t\t\t\tresults;\n\n\t\t\t// Find primary matches\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t} else {\n\t\t\tmatcherOut = matcherIn;\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tvar ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element\n\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 )\n\t\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrimCSS, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find.TAG( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: iOS <=7 - 9 only\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching\n\t\t\t// elements by id. (see trac-14142)\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tjQuery.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\nfunction compile( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n}\n\n/**\n * A low-level selection function that works with jQuery's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find.ID(\n\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\tcontext\n\t\t\t) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) &&\n\t\t\t\t\t\ttestContext( context.parentNode ) || context\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n}\n\n// One-time assignments\n\n// Support: Android <=4.0 - 4.1+\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Android <=4.0 - 4.1+\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\njQuery.find = find;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.unique = jQuery.uniqueSort;\n\n// These have always been private, but they used to be documented as part of\n// Sizzle so let's maintain them for now for backwards compatibility purposes.\nfind.compile = compile;\nfind.select = select;\nfind.setDocument = setDocument;\nfind.tokenize = tokenize;\n\nfind.escape = jQuery.escapeSelector;\nfind.getText = jQuery.text;\nfind.isXML = jQuery.isXMLDoc;\nfind.selectors = jQuery.expr;\nfind.support = jQuery.support;\nfind.uniqueSort = jQuery.uniqueSort;\n\n\t/* eslint-enable */\n\n} )();\n\n} );\n","define( [\n\t\"../core\"\n], function( jQuery ) {\n\n\"use strict\";\n\n// Note: an element does not contain itself\njQuery.contains = function( a, b ) {\n\tvar bup = b && b.parentNode;\n\n\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE doesn't have `contains` on SVG.\n\t\ta.contains ?\n\t\t\ta.contains( bup ) :\n\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t) );\n};\n\n} );\n","define( [\n\t\"../core\"\n], function( jQuery ) {\n\n\"use strict\";\n\n// CSS string/identifier serialization\n// https://drafts.csswg.org/cssom/#common-serializing-idioms\nvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\nfunction fcssescape( ch, asCodePoint ) {\n\tif ( asCodePoint ) {\n\n\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\tif ( ch === \"\\0\" ) {\n\t\t\treturn \"\\uFFFD\";\n\t\t}\n\n\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t}\n\n\t// Other potentially-special ASCII characters get backslash-escaped\n\treturn \"\\\\\" + ch;\n}\n\njQuery.escapeSelector = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\n} );\n","define( [\n\t\"./core\",\n\t\"./core/toType\",\n\t\"./var/rcheckableType\",\n\t\"./var/isFunction\",\n\t\"./core/init\",\n\t\"./traversing\", // filter\n\t\"./attributes/prop\"\n], function( jQuery, toType, rcheckableType, isFunction ) {\n\n\"use strict\";\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\nreturn jQuery;\n} );\n","define( [\n\t\"./core\",\n\t\"./var/getProto\",\n\t\"./var/indexOf\",\n\t\"./traversing/var/dir\",\n\t\"./traversing/var/siblings\",\n\t\"./traversing/var/rneedsContext\",\n\t\"./core/nodeName\",\n\n\t\"./core/init\",\n\t\"./traversing/findFilter\",\n\t\"./selector\"\n], function( jQuery, getProto, indexOf, dir, siblings, rneedsContext, nodeName ) {\n\n\"use strict\";\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to jQuery#find\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// <object> elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\n\nreturn jQuery;\n} );\n","define( [\n\t\"../core\",\n\t\"../var/indexOf\",\n\t\"../var/isFunction\",\n\t\"./var/rneedsContext\",\n\t\"../selector\"\n], function( jQuery, indexOf, isFunction, rneedsContext ) {\n\n\"use strict\";\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n} );\n","define( [\n\t\"../../core\"\n], function( jQuery ) {\n\n\"use strict\";\n\nreturn function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n} );\n","define( [\n\t\"../../core\",\n\t\"../../selector\"\n], function( jQuery ) {\n\t\"use strict\";\n\n\treturn jQuery.expr.match.needsContext;\n} );\n","define( function() {\n\n\"use strict\";\n\nreturn function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n} );\n","define( [\n\t\"./fnToString\"\n], function( fnToString ) {\n\t\"use strict\";\n\n\treturn fnToString.call( Object );\n} );\n","define( function() {\n\t\"use strict\";\n\n\treturn [];\n} );\n","define( function() {\n\t\"use strict\";\n\n\t// [[Class]] -> type pairs\n\treturn {};\n} );\n","define( function() {\n\t\"use strict\";\n\n\treturn window.document;\n} );\n","define( [\n\t\"./document\"\n], function( document ) {\n\t\"use strict\";\n\n\treturn document.documentElement;\n} );\n","define( [\n\t\"./arr\"\n], function( arr ) {\n\n\"use strict\";\n\n// Support: IE 9 - 11+, Edge 18+, Android Browser 4.0 - 4.3 only, iOS 7 - 11 only, Safari 11 only,\n// Firefox <= 61 only\n// Provide fallback for browsers without Array#flat.\nreturn arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n} );\n","define( [\n\t\"./hasOwn\"\n], function( hasOwn ) {\n\t\"use strict\";\n\n\treturn hasOwn.toString;\n} );\n","define( function() {\n\t\"use strict\";\n\n\treturn Object.getPrototypeOf;\n} );\n","define( [\n\t\"./class2type\"\n], function( class2type ) {\n\t\"use strict\";\n\n\treturn class2type.hasOwnProperty;\n} );\n","define( [\n\t\"./arr\"\n], function( arr ) {\n\t\"use strict\";\n\n\treturn arr.indexOf;\n} );\n","define( function() {\n\t\"use strict\";\n\n\treturn function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML <object> elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n} );\n","define( function() {\n\t\"use strict\";\n\n\treturn function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n} );\n","define( function() {\n\t\"use strict\";\n\n\treturn ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n} );\n","define( [\n\t\"./arr\"\n], function( arr ) {\n\n\"use strict\";\n\nreturn arr.pop;\n\n} );\n","define( [\n\t\"./arr\"\n], function( arr ) {\n\t\"use strict\";\n\n\treturn arr.push;\n} );\n","define( function() {\n\t\"use strict\";\n\n\treturn ( /^(?:checkbox|radio)$/i );\n} );\n","define( [\n\t\"../var/pnum\"\n], function( pnum ) {\n\n\"use strict\";\n\nreturn new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n} );\n","define( function() {\n\t\"use strict\";\n\n\t// Only count HTML whitespace\n\t// Other whitespace should count in values\n\t// https://infra.spec.whatwg.org/#ascii-whitespace\n\treturn ( /[^\\x20\\t\\r\\n\\f]+/g );\n} );\n","define( [\n\t\"./whitespace\"\n], function( whitespace ) {\n\n\"use strict\";\n\nreturn new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n} );\n","define( [\n\t\"./arr\"\n], function( arr ) {\n\t\"use strict\";\n\n\treturn arr.slice;\n} );\n","define( [\n\t\"./arr\"\n], function( arr ) {\n\n\"use strict\";\n\nreturn arr.sort;\n\n} );\n","define( [\n\t\"./arr\"\n], function( arr ) {\n\n\"use strict\";\n\nreturn arr.splice;\n\n} );\n","define( function() {\n\t\"use strict\";\n\n\t// All support tests are defined in their respective modules.\n\treturn {};\n} );\n","define( [\n\t\"./class2type\"\n], function( class2type ) {\n\t\"use strict\";\n\n\treturn class2type.toString;\n} );\n","define( function() {\n\n\"use strict\";\n\n// https://www.w3.org/TR/css3-selectors/#whitespace\nreturn \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n} );\n","define( [\n\t\"./core\",\n\t\"./var/isFunction\",\n\t\"./core/init\",\n\t\"./manipulation\", // clone\n\t\"./traversing\" // parent, contents\n], function( jQuery, isFunction ) {\n\n\"use strict\";\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\nreturn jQuery;\n} );\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = {\n standalone:\n 'leden_únor_bÅ™ezen_duben_kvÄ›ten_Äerven_Äervenec_srpen_zářÃ_Å™Ãjen_listopad_prosinec'.split(\n '_'\n ),\n format: 'ledna_února_bÅ™ezna_dubna_kvÄ›tna_Äervna_Äervence_srpna_zářÃ_Å™Ãjna_listopadu_prosince'.split(\n '_'\n ),\n isFormat: /DD?[o.]?(\\[[^\\[\\]]*\\]|\\s)+MMMM/,\n },\n monthsShort = 'led_úno_bÅ™e_dub_kvÄ›_Ävn_Ävc_srp_zář_Å™Ãj_lis_pro'.split('_'),\n monthsParse = [\n /^led/i,\n /^úno/i,\n /^bÅ™e/i,\n /^dub/i,\n /^kvÄ›/i,\n /^(Ävn|Äerven$|Äervna)/i,\n /^(Ävc|Äervenec|Äervence)/i,\n /^srp/i,\n /^zář/i,\n /^Å™Ãj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'Äerven' is substring of 'Äervenec'; therefore 'Äervenec' must precede 'Äerven' in the regex to be fully matched.\n // Otherwise parser matches '1. Äervenec' as '1. Äerven' + 'ec'.\n monthsRegex =\n /^(leden|únor|bÅ™ezen|duben|kvÄ›ten|Äervenec|Äervence|Äerven|Äervna|srpen|zářÃ|Å™Ãjen|listopad|prosinec|led|úno|bÅ™e|dub|kvÄ›|Ävn|Ävc|srp|zář|Å™Ãj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dnÃ');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mÄ›sÃc' : 'mÄ›sÃcem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mÄ›sÃce' : 'mÄ›sÃců');\n } else {\n return result + 'mÄ›sÃci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'Äerven' is substring of 'Äervenec'; therefore 'Äervenec' must precede 'Äerven' in the regex to be fully matched.\n // Otherwise parser matches '1. Äervenec' as '1. Äerven' + 'ec'.\n monthsStrictRegex:\n /^(leden|ledna|února|únor|bÅ™ezen|bÅ™ezna|duben|dubna|kvÄ›ten|kvÄ›tna|Äervenec|Äervence|Äerven|Äervna|srpen|srpna|zářÃ|Å™Ãjen|Å™Ãjna|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex:\n /^(led|úno|bÅ™e|dub|kvÄ›|Ävn|Ävc|srp|zář|Å™Ãj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'nedÄ›le_pondÄ›lÃ_úterý_stÅ™eda_Ätvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_Ät_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_Ät_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zÃtra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedÄ›li v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve stÅ™edu v] LT';\n case 4:\n return '[ve Ätvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[vÄera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou nedÄ›li v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou stÅ™edu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pÅ™ed %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurà : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(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;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un dÃa',\n dd: '%d dÃas',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsStrictRegex =\n /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [\n /^janv/i,\n /^févr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^août/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^déc/i,\n ];\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à ] LT',\n nextDay: '[Demain à ] LT',\n nextWeek: 'dddd [à ] LT',\n lastDay: '[Hier à ] LT',\n lastWeek: 'dddd [dernier à ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'Ñ…ÑдхÑн Ñекунд' : 'Ñ…ÑдхÑн Ñекундын';\n case 'ss':\n return number + (withoutSuffix ? ' Ñекунд' : ' Ñекундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' Ñар' : ' Ñарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'ÐÑгдүгÑÑÑ€ Ñар_Хоёрдугаар Ñар_Гуравдугаар Ñар_ДөрөвдүгÑÑÑ€ Ñар_Тавдугаар Ñар_Зургадугаар Ñар_Долдугаар Ñар_Ðаймдугаар Ñар_ЕÑдүгÑÑÑ€ Ñар_Ðравдугаар Ñар_Ðрван нÑгдүгÑÑÑ€ Ñар_Ðрван хоёрдугаар Ñар'.split(\n '_'\n ),\n monthsShort:\n '1 Ñар_2 Ñар_3 Ñар_4 Ñар_5 Ñар_6 Ñар_7 Ñар_8 Ñар_9 Ñар_10 Ñар_11 Ñар_12 Ñар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ÐÑм_Даваа_ÐœÑгмар_Лхагва_ПүрÑв_БааÑан_БÑмба'.split('_'),\n weekdaysShort: 'ÐÑм_Дав_ÐœÑг_Лха_Пүр_Баа_БÑм'.split('_'),\n weekdaysMin: 'ÐÑ_Да_ÐœÑ_Лх_Пү_Ба_БÑ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /Ò®Ó¨|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'Ò®Ó¨';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[ИрÑÑ…] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[ӨнгөрÑөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsNominative =\n 'styczeÅ„_luty_marzec_kwiecieÅ„_maj_czerwiec_lipiec_sierpieÅ„_wrzesieÅ„_październik_listopad_grudzieÅ„'.split(\n '_'\n ),\n monthsSubjective =\n 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrzeÅ›nia_października_listopada_grudnia'.split(\n '_'\n ),\n monthsParse = [\n /^sty/i,\n /^lut/i,\n /^mar/i,\n /^kwi/i,\n /^maj/i,\n /^cze/i,\n /^lip/i,\n /^sie/i,\n /^wrz/i,\n /^paź/i,\n /^lis/i,\n /^gru/i,\n ];\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutÄ™';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinÄ™';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'ww':\n return result + (plural(number) ? 'tygodnie' : 'tygodni');\n case 'MM':\n return result + (plural(number) ? 'miesiÄ…ce' : 'miesiÄ™cy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays:\n 'niedziela_poniedziaÅ‚ek_wtorek_Å›roda_czwartek_piÄ…tek_sobota'.split('_'),\n weekdaysShort: 'ndz_pon_wt_Å›r_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Åšr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DziÅ› o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielÄ™ o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W Å›rodÄ™ o] LT';\n\n case 6:\n return '[W sobotÄ™ o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszÅ‚Ä… niedzielÄ™ o] LT';\n case 3:\n return '[W zeszÅ‚Ä… Å›rodÄ™ o] LT';\n case 6:\n return '[W zeszÅ‚Ä… sobotÄ™ o] LT';\n default:\n return '[W zeszÅ‚y] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzieÅ„',\n dd: '%d dni',\n w: 'tydzieÅ„',\n ww: translate,\n M: 'miesiÄ…c',\n MM: translate,\n y: 'rok',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [à s] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [à s] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje à s] LT',\n nextDay: '[Amanhã à s] LT',\n nextWeek: 'dddd [à s] LT',\n lastDay: '[Ontem à s] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [à s] LT' // Saturday + Sunday\n : '[Última] dddd [à s] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida',\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak YiÄŸit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Åžubat_Mart_Nisan_Mayıs_Haziran_Temmuz_AÄŸustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Åžub_Mar_Nis_May_Haz_Tem_AÄŸu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_ÇarÅŸamba_PerÅŸembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'Ñекунда_Ñекунди_Ñекунд' : 'Ñекунду_Ñекунди_Ñекунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'міÑÑць_міÑÑці_міÑÑців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative:\n 'неділÑ_понеділок_вівторок_Ñереда_четвер_п’ÑтницÑ_Ñубота'.split(\n '_'\n ),\n accusative:\n 'неділю_понеділок_вівторок_Ñереду_четвер_п’Ñтницю_Ñуботу'.split(\n '_'\n ),\n genitive:\n 'неділі_понеділка_вівторка_Ñереди_четверга_п’Ñтниці_Ñуботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наÑтупної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'ÑічнÑ_лютого_березнÑ_квітнÑ_травнÑ_червнÑ_липнÑ_ÑерпнÑ_вереÑнÑ_жовтнÑ_лиÑтопада_груднÑ'.split(\n '_'\n ),\n standalone:\n 'Ñічень_лютий_березень_квітень_травень_червень_липень_Ñерпень_вереÑень_жовтень_лиÑтопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'Ñіч_лют_бер_квіт_трав_черв_лип_Ñерп_вер_жовт_лиÑÑ‚_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ÑÑ€_чт_пт_Ñб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ÑÑ€_чт_пт_Ñб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY Ñ€.',\n LLL: 'D MMMM YYYY Ñ€., HH:mm',\n LLLL: 'dddd, D MMMM YYYY Ñ€., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька Ñекунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'міÑÑць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|днÑ|вечора/,\n isPM: function (input) {\n return /^(днÑ|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'днÑ';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_å…月_七月_八月_ä¹æœˆ_å月_å一月_å二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期å…'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周å…'.split('_'),\n weekdaysMin: 'æ—¥_一_二_三_å››_五_å…'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYYå¹´M月Dæ—¥',\n LLL: 'YYYYå¹´M月Dæ—¥Ah点mm分',\n LLLL: 'YYYYå¹´M月Dæ—¥ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYYå¹´M月Dæ—¥',\n lll: 'YYYYå¹´M月Dæ—¥ HH:mm',\n llll: 'YYYYå¹´M月Dæ—¥dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上åˆ|ä¸åˆ|下åˆ|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上åˆ') {\n return hour;\n } else if (meridiem === '下åˆ' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // 'ä¸åˆ'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上åˆ';\n } else if (hm < 1230) {\n return 'ä¸åˆ';\n } else if (hm < 1800) {\n return '下åˆ';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(æ—¥|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + 'æ—¥';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%såŽ',\n past: '%så‰',\n s: 'å‡ ç§’',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 å°æ—¶',\n hh: '%d å°æ—¶',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 å¹´',\n yy: '%d å¹´',\n },\n week: {\n // GB/T 7408-1994《数æ®å…ƒå’Œäº¤æ¢æ ¼å¼Â·ä¿¡æ¯äº¤æ¢Â·æ—¥æœŸå’Œæ—¶é—´è¡¨ç¤ºæ³•ã€‹ä¸ŽISO 8601:1988ç‰æ•ˆ\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return zhCn;\n\n})));\n","/*\n * qTip2 - Pretty powerful tooltips - v3.0.3-7-g\n * http://qtip2.com\n *\n * Copyright (c) 2019 \n * Released under the MIT licenses\n * http://jquery.org/license\n *\n * Date: Thu Mar 21 2019 10:58 GMT+0100+0100\n * Plugins: tips modal viewport svg imagemap ie6\n * Styles: core basic css3\n */\n/*global window: false, jQuery: false, console: false, define: false */\n\n/* Cache window, document, undefined */\n(function( window, document, undefined ) {\n\n// Uses AMD or browser globals to create a jQuery plugin.\n(function( factory ) {\n\t\"use strict\";\n\tif(typeof define === 'function' && define.amd) {\n\t\tdefine(['jquery'], factory);\n\t}\n\telse if(jQuery && !jQuery.fn.qtip) {\n\t\tfactory(jQuery);\n\t}\n}\n(function($) {\n\t\"use strict\"; // Enable ECMAScript \"strict\" operation for this function. See more: http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/\n;// Munge the primitives - Paul Irish tip\nvar TRUE = true,\nFALSE = false,\nNULL = null,\n\n// Common variables\nX = 'x', Y = 'y',\nWIDTH = 'width',\nHEIGHT = 'height',\n\n// Positioning sides\nTOP = 'top',\nLEFT = 'left',\nBOTTOM = 'bottom',\nRIGHT = 'right',\nCENTER = 'center',\n\n// Position adjustment types\nFLIP = 'flip',\nFLIPINVERT = 'flipinvert',\nSHIFT = 'shift',\n\n// Shortcut vars\nQTIP, PROTOTYPE, CORNER, CHECKS,\nPLUGINS = {},\nNAMESPACE = 'qtip',\nATTR_HAS = 'data-hasqtip',\nATTR_ID = 'data-qtip-id',\nWIDGET = ['ui-widget', 'ui-tooltip'],\nSELECTOR = '.'+NAMESPACE,\nINACTIVE_EVENTS = 'click dblclick mousedown mouseup mousemove mouseleave mouseenter'.split(' '),\n\nCLASS_FIXED = NAMESPACE+'-fixed',\nCLASS_DEFAULT = NAMESPACE + '-default',\nCLASS_FOCUS = NAMESPACE + '-focus',\nCLASS_HOVER = NAMESPACE + '-hover',\nCLASS_DISABLED = NAMESPACE+'-disabled',\n\nreplaceSuffix = '_replacedByqTip',\noldtitle = 'oldtitle',\ntrackingBound,\n\n// Browser detection\nBROWSER = {\n\t/*\n\t * IE version detection\n\t *\n\t * Adapted from: http://ajaxian.com/archives/attack-of-the-ie-conditional-comment\n\t * Credit to James Padolsey for the original implemntation!\n\t */\n\tie: (function() {\n\t\t/* eslint-disable no-empty */\n\t\tvar v, i;\n\t\tfor (\n\t\t\tv = 4, i = document.createElement('div');\n\t\t\t(i.innerHTML = '<!--[if gt IE ' + v + ']><i></i><![endif]-->') && i.getElementsByTagName('i')[0];\n\t\t\tv+=1\n\t\t) {}\n\t\treturn v > 4 ? v : NaN;\n\t\t/* eslint-enable no-empty */\n\t})(),\n\n\t/*\n\t * iOS version detection\n\t */\n\tiOS: parseFloat(\n\t\t('' + (/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent) || [0,''])[1])\n\t\t.replace('undefined', '3_2').replace('_', '.').replace('_', '')\n\t) || FALSE\n};\n;function QTip(target, options, id, attr) {\n\t// Elements and ID\n\tthis.id = id;\n\tthis.target = target;\n\tthis.tooltip = NULL;\n\tthis.elements = { target: target };\n\n\t// Internal constructs\n\tthis._id = NAMESPACE + '-' + id;\n\tthis.timers = { img: {} };\n\tthis.options = options;\n\tthis.plugins = {};\n\n\t// Cache object\n\tthis.cache = {\n\t\tevent: {},\n\t\ttarget: $(),\n\t\tdisabled: FALSE,\n\t\tattr: attr,\n\t\tonTooltip: FALSE,\n\t\tlastClass: ''\n\t};\n\n\t// Set the initial flags\n\tthis.rendered = this.destroyed = this.disabled = this.waiting =\n\t\tthis.hiddenDuringWait = this.positioning = this.triggering = FALSE;\n}\nPROTOTYPE = QTip.prototype;\n\nPROTOTYPE._when = function(deferreds) {\n\treturn $.when.apply($, deferreds);\n};\n\nPROTOTYPE.render = function(show) {\n\tif(this.rendered || this.destroyed) { return this; } // If tooltip has already been rendered, exit\n\n\tvar self = this,\n\t\toptions = this.options,\n\t\tcache = this.cache,\n\t\telements = this.elements,\n\t\ttext = options.content.text,\n\t\ttitle = options.content.title,\n\t\tbutton = options.content.button,\n\t\tposOptions = options.position,\n\t\tdeferreds = [];\n\n\t// Add ARIA attributes to target\n\t$.attr(this.target[0], 'aria-describedby', this._id);\n\n\t// Create public position object that tracks current position corners\n\tcache.posClass = this._createPosClass(\n\t\t(this.position = { my: posOptions.my, at: posOptions.at }).my\n\t);\n\n\t// Create tooltip element\n\tthis.tooltip = elements.tooltip = $('<div/>', {\n\t\t'id': this._id,\n\t\t'class': [ NAMESPACE, CLASS_DEFAULT, options.style.classes, cache.posClass ].join(' '),\n\t\t'width': options.style.width || '',\n\t\t'height': options.style.height || '',\n\t\t'tracking': posOptions.target === 'mouse' && posOptions.adjust.mouse,\n\n\t\t/* ARIA specific attributes */\n\t\t'role': 'alert',\n\t\t'aria-live': 'polite',\n\t\t'aria-atomic': FALSE,\n\t\t'aria-describedby': this._id + '-content',\n\t\t'aria-hidden': TRUE\n\t})\n\t.toggleClass(CLASS_DISABLED, this.disabled)\n\t.attr(ATTR_ID, this.id)\n\t.data(NAMESPACE, this)\n\t.appendTo(posOptions.container)\n\t.append(\n\t\t// Create content element\n\t\telements.content = $('<div />', {\n\t\t\t'class': NAMESPACE + '-content',\n\t\t\t'id': this._id + '-content',\n\t\t\t'aria-atomic': TRUE\n\t\t})\n\t);\n\n\t// Set rendered flag and prevent redundant reposition calls for now\n\tthis.rendered = -1;\n\tthis.positioning = TRUE;\n\n\t// Create title...\n\tif(title) {\n\t\tthis._createTitle();\n\n\t\t// Update title only if its not a callback (called in toggle if so)\n\t\tif(!$.isFunction(title)) {\n\t\t\tdeferreds.push( this._updateTitle(title, FALSE) );\n\t\t}\n\t}\n\n\t// Create button\n\tif(button) { this._createButton(); }\n\n\t// Set proper rendered flag and update content if not a callback function (called in toggle)\n\tif(!$.isFunction(text)) {\n\t\tdeferreds.push( this._updateContent(text, FALSE) );\n\t}\n\tthis.rendered = TRUE;\n\n\t// Setup widget classes\n\tthis._setWidget();\n\n\t// Initialize 'render' plugins\n\t$.each(PLUGINS, function(name) {\n\t\tvar instance;\n\t\tif(this.initialize === 'render' && (instance = this(self))) {\n\t\t\tself.plugins[name] = instance;\n\t\t}\n\t});\n\n\t// Unassign initial events and assign proper events\n\tthis._unassignEvents();\n\tthis._assignEvents();\n\n\t// When deferreds have completed\n\tthis._when(deferreds).then(function() {\n\t\t// tooltiprender event\n\t\tself._trigger('render');\n\n\t\t// Reset flags\n\t\tself.positioning = FALSE;\n\n\t\t// Show tooltip if not hidden during wait period\n\t\tif(!self.hiddenDuringWait && (options.show.ready || show)) {\n\t\t\tself.toggle(TRUE, cache.event, FALSE);\n\t\t}\n\t\tself.hiddenDuringWait = FALSE;\n\t});\n\n\t// Expose API\n\tQTIP.api[this.id] = this;\n\n\treturn this;\n};\n\nPROTOTYPE.destroy = function(immediate) {\n\t// Set flag the signify destroy is taking place to plugins\n\t// and ensure it only gets destroyed once!\n\tif(this.destroyed) { return this.target; }\n\n\tfunction process() {\n\t\tif(this.destroyed) { return; }\n\t\tthis.destroyed = TRUE;\n\n\t\tvar target = this.target,\n\t\t\ttitle = target.attr(oldtitle),\n\t\t\ttimer;\n\n\t\t// Destroy tooltip if rendered\n\t\tif(this.rendered) {\n\t\t\tthis.tooltip.stop(1,0).find('*').remove().end().remove();\n\t\t}\n\n\t\t// Destroy all plugins\n\t\t$.each(this.plugins, function() {\n\t\t\tthis.destroy && this.destroy();\n\t\t});\n\n\t\t// Clear timers\n\t\tfor (timer in this.timers) {\n\t\t\tif (this.timers.hasOwnProperty(timer)) {\n\t\t\t\tclearTimeout(this.timers[timer]);\n\t\t\t}\n\t\t}\n\n\t\t// Remove api object and ARIA attributes\n\t\ttarget.removeData(NAMESPACE)\n\t\t\t.removeAttr(ATTR_ID)\n\t\t\t.removeAttr(ATTR_HAS)\n\t\t\t.removeAttr('aria-describedby');\n\n\t\t// Reset old title attribute if removed\n\t\tif(this.options.suppress && title) {\n\t\t\ttarget.attr('title', title).removeAttr(oldtitle);\n\t\t}\n\n\t\t// Remove qTip events associated with this API\n\t\tthis._unassignEvents();\n\n\t\t// Remove ID from used id objects, and delete object references\n\t\t// for better garbage collection and leak protection\n\t\tthis.options = this.elements = this.cache = this.timers =\n\t\t\tthis.plugins = this.mouse = NULL;\n\n\t\t// Delete epoxsed API object\n\t\tdelete QTIP.api[this.id];\n\t}\n\n\t// If an immediate destroy is needed\n\tif((immediate !== TRUE || this.triggering === 'hide') && this.rendered) {\n\t\tthis.tooltip.one('tooltiphidden', $.proxy(process, this));\n\t\t!this.triggering && this.hide();\n\t}\n\n\t// If we're not in the process of hiding... process\n\telse { process.call(this); }\n\n\treturn this.target;\n};\n;function invalidOpt(a) {\n\treturn a === NULL || $.type(a) !== 'object';\n}\n\nfunction invalidContent(c) {\n\treturn !($.isFunction(c) || \n c && c.attr || \n c.length || \n $.type(c) === 'object' && (c.jquery || c.then));\n}\n\n// Option object sanitizer\nfunction sanitizeOptions(opts) {\n\tvar content, text, ajax, once;\n\n\tif(invalidOpt(opts)) { return FALSE; }\n\n\tif(invalidOpt(opts.metadata)) {\n\t\topts.metadata = { type: opts.metadata };\n\t}\n\n\tif('content' in opts) {\n\t\tcontent = opts.content;\n\n\t\tif(invalidOpt(content) || content.jquery || content.done) {\n\t\t\ttext = invalidContent(content) ? FALSE : content;\n\t\t\tcontent = opts.content = {\n\t\t\t\ttext: text\n\t\t\t};\n\t\t}\n\t\telse { text = content.text; }\n\n\t\t// DEPRECATED - Old content.ajax plugin functionality\n\t\t// Converts it into the proper Deferred syntax\n\t\tif('ajax' in content) {\n\t\t\tajax = content.ajax;\n\t\t\tonce = ajax && ajax.once !== FALSE;\n\t\t\tdelete content.ajax;\n\n\t\t\tcontent.text = function(event, api) {\n\t\t\t\tvar loading = text || $(this).attr(api.options.content.attr) || 'Loading...',\n\n\t\t\t\tdeferred = $.ajax(\n\t\t\t\t\t$.extend({}, ajax, { context: api })\n\t\t\t\t)\n\t\t\t\t.then(ajax.success, NULL, ajax.error)\n\t\t\t\t.then(function(newContent) {\n\t\t\t\t\tif(newContent && once) { api.set('content.text', newContent); }\n\t\t\t\t\treturn newContent;\n\t\t\t\t},\n\t\t\t\tfunction(xhr, status, error) {\n\t\t\t\t\tif(api.destroyed || xhr.status === 0) { return; }\n\t\t\t\t\tapi.set('content.text', status + ': ' + error);\n\t\t\t\t});\n\n\t\t\t\treturn !once ? (api.set('content.text', loading), deferred) : loading;\n\t\t\t};\n\t\t}\n\n\t\tif('title' in content) {\n\t\t\tif($.isPlainObject(content.title)) {\n\t\t\t\tcontent.button = content.title.button;\n\t\t\t\tcontent.title = content.title.text;\n\t\t\t}\n\n\t\t\tif(invalidContent(content.title || FALSE)) {\n\t\t\t\tcontent.title = FALSE;\n\t\t\t}\n\t\t}\n\t}\n\n\tif('position' in opts && invalidOpt(opts.position)) {\n\t\topts.position = { my: opts.position, at: opts.position };\n\t}\n\n\tif('show' in opts && invalidOpt(opts.show)) {\n\t\topts.show = opts.show.jquery ? { target: opts.show } :\n\t\t\topts.show === TRUE ? { ready: TRUE } : { event: opts.show };\n\t}\n\n\tif('hide' in opts && invalidOpt(opts.hide)) {\n\t\topts.hide = opts.hide.jquery ? { target: opts.hide } : { event: opts.hide };\n\t}\n\n\tif('style' in opts && invalidOpt(opts.style)) {\n\t\topts.style = { classes: opts.style };\n\t}\n\n\t// Sanitize plugin options\n\t$.each(PLUGINS, function() {\n\t\tthis.sanitize && this.sanitize(opts);\n\t});\n\n\treturn opts;\n}\n\n// Setup builtin .set() option checks\nCHECKS = PROTOTYPE.checks = {\n\tbuiltin: {\n\t\t// Core checks\n\t\t'^id$': function(obj, o, v, prev) {\n\t\t\tvar id = v === TRUE ? QTIP.nextid : v,\n\t\t\t\tnewId = NAMESPACE + '-' + id;\n\n\t\t\tif(id !== FALSE && id.length > 0 && !$('#'+newId).length) {\n\t\t\t\tthis._id = newId;\n\n\t\t\t\tif(this.rendered) {\n\t\t\t\t\tthis.tooltip[0].id = this._id;\n\t\t\t\t\tthis.elements.content[0].id = this._id + '-content';\n\t\t\t\t\tthis.elements.title[0].id = this._id + '-title';\n\t\t\t\t}\n\t\t\t}\n\t\t\telse { obj[o] = prev; }\n\t\t},\n\t\t'^prerender': function(obj, o, v) {\n\t\t\tv && !this.rendered && this.render(this.options.show.ready);\n\t\t},\n\n\t\t// Content checks\n\t\t'^content.text$': function(obj, o, v) {\n\t\t\tthis._updateContent(v);\n\t\t},\n\t\t'^content.attr$': function(obj, o, v, prev) {\n\t\t\tif(this.options.content.text === this.target.attr(prev)) {\n\t\t\t\tthis._updateContent( this.target.attr(v) );\n\t\t\t}\n\t\t},\n\t\t'^content.title$': function(obj, o, v) {\n\t\t\t// Remove title if content is null\n\t\t\tif(!v) { return this._removeTitle(); }\n\n\t\t\t// If title isn't already created, create it now and update\n\t\t\tv && !this.elements.title && this._createTitle();\n\t\t\tthis._updateTitle(v);\n\t\t},\n\t\t'^content.button$': function(obj, o, v) {\n\t\t\tthis._updateButton(v);\n\t\t},\n\t\t'^content.title.(text|button)$': function(obj, o, v) {\n\t\t\tthis.set('content.'+o, v); // Backwards title.text/button compat\n\t\t},\n\n\t\t// Position checks\n\t\t'^position.(my|at)$': function(obj, o, v){\n\t\t\tif('string' === typeof v) {\n\t\t\t\tthis.position[o] = obj[o] = new CORNER(v, o === 'at');\n\t\t\t}\n\t\t},\n\t\t'^position.container$': function(obj, o, v){\n\t\t\tthis.rendered && this.tooltip.appendTo(v);\n\t\t},\n\n\t\t// Show checks\n\t\t'^show.ready$': function(obj, o, v) {\n\t\t\tv && (!this.rendered && this.render(TRUE) || this.toggle(TRUE));\n\t\t},\n\n\t\t// Style checks\n\t\t'^style.classes$': function(obj, o, v, p) {\n\t\t\tthis.rendered && this.tooltip.removeClass(p).addClass(v);\n\t\t},\n\t\t'^style.(width|height)': function(obj, o, v) {\n\t\t\tthis.rendered && this.tooltip.css(o, v);\n\t\t},\n\t\t'^style.widget|content.title': function() {\n\t\t\tthis.rendered && this._setWidget();\n\t\t},\n\t\t'^style.def': function(obj, o, v) {\n\t\t\tthis.rendered && this.tooltip.toggleClass(CLASS_DEFAULT, !!v);\n\t\t},\n\n\t\t// Events check\n\t\t'^events.(render|show|move|hide|focus|blur)$': function(obj, o, v) {\n\t\t\tthis.rendered && this.tooltip[($.isFunction(v) ? '' : 'un') + 'bind']('tooltip'+o, v);\n\t\t},\n\n\t\t// Properties which require event reassignment\n\t\t'^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)': function() {\n\t\t\tif(!this.rendered) { return; }\n\n\t\t\t// Set tracking flag\n\t\t\tvar posOptions = this.options.position;\n\t\t\tthis.tooltip.attr('tracking', posOptions.target === 'mouse' && posOptions.adjust.mouse);\n\n\t\t\t// Reassign events\n\t\t\tthis._unassignEvents();\n\t\t\tthis._assignEvents();\n\t\t}\n\t}\n};\n\n// Dot notation converter\nfunction convertNotation(options, notation) {\n\tvar i = 0, obj, option = options,\n\n\t// Split notation into array\n\tlevels = notation.split('.');\n\n\t// Loop through\n\twhile(option = option[ levels[i++] ]) {\n\t\tif(i < levels.length) { obj = option; }\n\t}\n\n\treturn [obj || options, levels.pop()];\n}\n\nPROTOTYPE.get = function(notation) {\n\tif(this.destroyed) { return this; }\n\n\tvar o = convertNotation(this.options, notation.toLowerCase()),\n\t\tresult = o[0][ o[1] ];\n\n\treturn result.precedance ? result.string() : result;\n};\n\nfunction setCallback(notation, args) {\n\tvar category, rule, match;\n\n\tfor(category in this.checks) {\n\t\tif (!this.checks.hasOwnProperty(category)) { continue; }\n\n\t\tfor(rule in this.checks[category]) {\n\t\t\tif (!this.checks[category].hasOwnProperty(rule)) { continue; }\n\n\t\t\tif(match = (new RegExp(rule, 'i')).exec(notation)) {\n\t\t\t\targs.push(match);\n\n\t\t\t\tif(category === 'builtin' || this.plugins[category]) {\n\t\t\t\t\tthis.checks[category][rule].apply(\n\t\t\t\t\t\tthis.plugins[category] || this, args\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nvar rmove = /^position\\.(my|at|adjust|target|container|viewport)|style|content|show\\.ready/i,\n\trrender = /^prerender|show\\.ready/i;\n\nPROTOTYPE.set = function(option, value) {\n\tif(this.destroyed) { return this; }\n\n\tvar rendered = this.rendered,\n\t\treposition = FALSE,\n\t\toptions = this.options,\n\t\tname;\n\n\t// Convert singular option/value pair into object form\n\tif('string' === typeof option) {\n\t\tname = option; option = {}; option[name] = value;\n\t}\n\telse { option = $.extend({}, option); }\n\n\t// Set all of the defined options to their new values\n\t$.each(option, function(notation, val) {\n\t\tif(rendered && rrender.test(notation)) {\n\t\t\tdelete option[notation]; return;\n\t\t}\n\n\t\t// Set new obj value\n\t\tvar obj = convertNotation(options, notation.toLowerCase()), previous;\n\t\tprevious = obj[0][ obj[1] ];\n\t\tobj[0][ obj[1] ] = val && val.nodeType ? $(val) : val;\n\n\t\t// Also check if we need to reposition\n\t\treposition = rmove.test(notation) || reposition;\n\n\t\t// Set the new params for the callback\n\t\toption[notation] = [obj[0], obj[1], val, previous];\n\t});\n\n\t// Re-sanitize options\n\tsanitizeOptions(options);\n\n\t/*\n\t * Execute any valid callbacks for the set options\n\t * Also set positioning flag so we don't get loads of redundant repositioning calls.\n\t */\n\tthis.positioning = TRUE;\n\t$.each(option, $.proxy(setCallback, this));\n\tthis.positioning = FALSE;\n\n\t// Update position if needed\n\tif(this.rendered && this.tooltip[0].offsetWidth > 0 && reposition) {\n\t\tthis.reposition( options.position.target === 'mouse' ? NULL : this.cache.event );\n\t}\n\n\treturn this;\n};\n;PROTOTYPE._update = function(content, element) {\n\tvar self = this,\n\t\tcache = this.cache;\n\n\t// Make sure tooltip is rendered and content is defined. If not return\n\tif(!this.rendered || !content) { return FALSE; }\n\n\t// Use function to parse content\n\tif($.isFunction(content)) {\n\t\tcontent = content.call(this.elements.target, cache.event, this) || '';\n\t}\n\n\t// Handle deferred content\n\tif($.isFunction(content.then)) {\n\t\tcache.waiting = TRUE;\n\t\treturn content.then(function(c) {\n\t\t\tcache.waiting = FALSE;\n\t\t\treturn self._update(c, element);\n\t\t}, NULL, function(e) {\n\t\t\treturn self._update(e, element);\n\t\t});\n\t}\n\n\t// If content is null... return false\n\tif(content === FALSE || !content && content !== '') { return FALSE; }\n\n\t// Append new content if its a DOM array and show it if hidden\n\tif(content.jquery && content.length > 0) {\n\t\telement.empty().append(\n\t\t\tcontent.css({ display: 'block', visibility: 'visible' })\n\t\t);\n\t}\n\n\t// Content is a regular string, insert the new content\n\telse { element.html(content); }\n\n\t// Wait for content to be loaded, and reposition\n\treturn this._waitForContent(element).then(function(images) {\n\t\tif(self.rendered && self.tooltip[0].offsetWidth > 0) {\n\t\t\tself.reposition(cache.event, !images.length);\n\t\t}\n\t});\n};\n\nPROTOTYPE._waitForContent = function(element) {\n\tvar cache = this.cache;\n\n\t// Set flag\n\tcache.waiting = TRUE;\n\n\t// If imagesLoaded is included, ensure images have loaded and return promise\n\treturn ( $.fn.imagesLoaded ? element.imagesLoaded() : new $.Deferred().resolve([]) )\n\t\t.done(function() { cache.waiting = FALSE; })\n\t\t.promise();\n};\n\nPROTOTYPE._updateContent = function(content, reposition) {\n\tthis._update(content, this.elements.content, reposition);\n};\n\nPROTOTYPE._updateTitle = function(content, reposition) {\n\tif(this._update(content, this.elements.title, reposition) === FALSE) {\n\t\tthis._removeTitle(FALSE);\n\t}\n};\n\nPROTOTYPE._createTitle = function()\n{\n\tvar elements = this.elements,\n\t\tid = this._id+'-title';\n\n\t// Destroy previous title element, if present\n\tif(elements.titlebar) { this._removeTitle(); }\n\n\t// Create title bar and title elements\n\telements.titlebar = $('<div />', {\n\t\t'class': NAMESPACE + '-titlebar ' + (this.options.style.widget ? createWidgetClass('header') : '')\n\t})\n\t.append(\n\t\telements.title = $('<div />', {\n\t\t\t'id': id,\n\t\t\t'class': NAMESPACE + '-title',\n\t\t\t'aria-atomic': TRUE\n\t\t})\n\t)\n\t.insertBefore(elements.content)\n\n\t// Button-specific events\n\t.delegate('.qtip-close', 'mousedown keydown mouseup keyup mouseout', function(event) {\n\t\t$(this).toggleClass('ui-state-active ui-state-focus', event.type.substr(-4) === 'down');\n\t})\n\t.delegate('.qtip-close', 'mouseover mouseout', function(event){\n\t\t$(this).toggleClass('ui-state-hover', event.type === 'mouseover');\n\t});\n\n\t// Create button if enabled\n\tif(this.options.content.button) { this._createButton(); }\n};\n\nPROTOTYPE._removeTitle = function(reposition)\n{\n\tvar elements = this.elements;\n\n\tif(elements.title) {\n\t\telements.titlebar.remove();\n\t\telements.titlebar = elements.title = elements.button = NULL;\n\n\t\t// Reposition if enabled\n\t\tif(reposition !== FALSE) { this.reposition(); }\n\t}\n};\n;PROTOTYPE._createPosClass = function(my) {\n\treturn NAMESPACE + '-pos-' + (my || this.options.position.my).abbrev();\n};\n\nPROTOTYPE.reposition = function(event, effect) {\n\tif(!this.rendered || this.positioning || this.destroyed) { return this; }\n\n\t// Set positioning flag\n\tthis.positioning = TRUE;\n\n\tvar cache = this.cache,\n\t\ttooltip = this.tooltip,\n\t\tposOptions = this.options.position,\n\t\ttarget = posOptions.target,\n\t\tmy = posOptions.my,\n\t\tat = posOptions.at,\n\t\tviewport = posOptions.viewport,\n\t\tcontainer = posOptions.container,\n\t\tadjust = posOptions.adjust,\n\t\tmethod = adjust.method.split(' '),\n\t\ttooltipWidth = tooltip.outerWidth(FALSE),\n\t\ttooltipHeight = tooltip.outerHeight(FALSE),\n\t\ttargetWidth = 0,\n\t\ttargetHeight = 0,\n\t\ttype = tooltip.css('position'),\n\t\tposition = { left: 0, top: 0 },\n\t\tvisible = tooltip[0].offsetWidth > 0,\n\t\tisScroll = event && event.type === 'scroll',\n\t\twin = $(window),\n\t\tdoc = container[0].ownerDocument,\n\t\tmouse = this.mouse,\n\t\tpluginCalculations, offset, adjusted, newClass;\n\n\t// Check if absolute position was passed\n\tif($.isArray(target) && target.length === 2) {\n\t\t// Force left top and set position\n\t\tat = { x: LEFT, y: TOP };\n\t\tposition = { left: target[0], top: target[1] };\n\t}\n\n\t// Check if mouse was the target\n\telse if(target === 'mouse') {\n\t\t// Force left top to allow flipping\n\t\tat = { x: LEFT, y: TOP };\n\n\t\t// Use the mouse origin that caused the show event, if distance hiding is enabled\n\t\tif((!adjust.mouse || this.options.hide.distance) && cache.origin && cache.origin.pageX) {\n\t\t\tevent = cache.origin;\n\t\t}\n\n\t\t// Use cached event for resize/scroll events\n\t\telse if(!event || event && (event.type === 'resize' || event.type === 'scroll')) {\n\t\t\tevent = cache.event;\n\t\t}\n\n\t\t// Otherwise, use the cached mouse coordinates if available\n\t\telse if(mouse && mouse.pageX) {\n\t\t\tevent = mouse;\n\t\t}\n\n\t\t// Calculate body and container offset and take them into account below\n\t\tif(type !== 'static') { position = container.offset(); }\n\t\tif(doc.body.offsetWidth !== (window.innerWidth || doc.documentElement.clientWidth)) {\n\t\t\toffset = $(document.body).offset();\n\t\t}\n\n\t\t// Use event coordinates for position\n\t\tposition = {\n\t\t\tleft: event.pageX - position.left + (offset && offset.left || 0),\n\t\t\ttop: event.pageY - position.top + (offset && offset.top || 0)\n\t\t};\n\n\t\t// Scroll events are a pain, some browsers\n\t\tif(adjust.mouse && isScroll && mouse) {\n\t\t\tposition.left -= (mouse.scrollX || 0) - win.scrollLeft();\n\t\t\tposition.top -= (mouse.scrollY || 0) - win.scrollTop();\n\t\t}\n\t}\n\n\t// Target wasn't mouse or absolute...\n\telse {\n\t\t// Check if event targetting is being used\n\t\tif(target === 'event') {\n\t\t\tif(event && event.target && event.type !== 'scroll' && event.type !== 'resize') {\n\t\t\t\tcache.target = $(event.target);\n\t\t\t}\n\t\t\telse if(!event.target) {\n\t\t\t\tcache.target = this.elements.target;\n\t\t\t}\n\t\t}\n\t\telse if(target !== 'event'){\n\t\t\tcache.target = $(target.jquery ? target : this.elements.target);\n\t\t}\n\t\ttarget = cache.target;\n\n\t\t// Parse the target into a jQuery object and make sure there's an element present\n\t\ttarget = $(target).eq(0);\n\t\tif(target.length === 0) { return this; }\n\n\t\t// Check if window or document is the target\n\t\telse if(target[0] === document || target[0] === window) {\n\t\t\ttargetWidth = BROWSER.iOS ? window.innerWidth : target.width();\n\t\t\ttargetHeight = BROWSER.iOS ? window.innerHeight : target.height();\n\n\t\t\tif(target[0] === window) {\n\t\t\t\tposition = {\n\t\t\t\t\ttop: (viewport || target).scrollTop(),\n\t\t\t\t\tleft: (viewport || target).scrollLeft()\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// Check if the target is an <AREA> element\n\t\telse if(PLUGINS.imagemap && target.is('area')) {\n\t\t\tpluginCalculations = PLUGINS.imagemap(this, target, at, PLUGINS.viewport ? method : FALSE);\n\t\t}\n\n\t\t// Check if the target is an SVG element\n\t\telse if(PLUGINS.svg && target && target[0].ownerSVGElement) {\n\t\t\tpluginCalculations = PLUGINS.svg(this, target, at, PLUGINS.viewport ? method : FALSE);\n\t\t}\n\n\t\t// Otherwise use regular jQuery methods\n\t\telse {\n\t\t\ttargetWidth = target.outerWidth(FALSE);\n\t\t\ttargetHeight = target.outerHeight(FALSE);\n\t\t\tposition = target.offset();\n\t\t}\n\n\t\t// Parse returned plugin values into proper variables\n\t\tif(pluginCalculations) {\n\t\t\ttargetWidth = pluginCalculations.width;\n\t\t\ttargetHeight = pluginCalculations.height;\n\t\t\toffset = pluginCalculations.offset;\n\t\t\tposition = pluginCalculations.position;\n\t\t}\n\n\t\t// Adjust position to take into account offset parents\n\t\tposition = this.reposition.offset(target, position, container);\n\n\t\t// Adjust for position.fixed tooltips (and also iOS scroll bug in v3.2-4.0 & v4.3-4.3.2)\n\t\tif(BROWSER.iOS > 3.1 && BROWSER.iOS < 4.1 ||\n\t\t\tBROWSER.iOS >= 4.3 && BROWSER.iOS < 4.33 ||\n\t\t\t!BROWSER.iOS && type === 'fixed'\n\t\t){\n\t\t\tposition.left -= win.scrollLeft();\n\t\t\tposition.top -= win.scrollTop();\n\t\t}\n\n\t\t// Adjust position relative to target\n\t\tif(!pluginCalculations || pluginCalculations && pluginCalculations.adjustable !== FALSE) {\n\t\t\tposition.left += at.x === RIGHT ? targetWidth : at.x === CENTER ? targetWidth / 2 : 0;\n\t\t\tposition.top += at.y === BOTTOM ? targetHeight : at.y === CENTER ? targetHeight / 2 : 0;\n\t\t}\n\t}\n\n\t// Adjust position relative to tooltip\n\tposition.left += adjust.x + (my.x === RIGHT ? -tooltipWidth : my.x === CENTER ? -tooltipWidth / 2 : 0);\n\tposition.top += adjust.y + (my.y === BOTTOM ? -tooltipHeight : my.y === CENTER ? -tooltipHeight / 2 : 0);\n\n\t// Use viewport adjustment plugin if enabled\n\tif(PLUGINS.viewport) {\n\t\tadjusted = position.adjusted = PLUGINS.viewport(\n\t\t\tthis, position, posOptions, targetWidth, targetHeight, tooltipWidth, tooltipHeight\n\t\t);\n\n\t\t// Apply offsets supplied by positioning plugin (if used)\n\t\tif(offset && adjusted.left) { position.left += offset.left; }\n\t\tif(offset && adjusted.top) { position.top += offset.top; }\n\n\t\t// Apply any new 'my' position\n\t\tif(adjusted.my) { this.position.my = adjusted.my; }\n\t}\n\n\t// Viewport adjustment is disabled, set values to zero\n\telse { position.adjusted = { left: 0, top: 0 }; }\n\n\t// Set tooltip position class if it's changed\n\tif(cache.posClass !== (newClass = this._createPosClass(this.position.my))) {\n\t\tcache.posClass = newClass;\n\t\ttooltip.removeClass(cache.posClass).addClass(newClass);\n\t}\n\n\t// tooltipmove event\n\tif(!this._trigger('move', [position, viewport.elem || viewport], event)) { return this; }\n\tdelete position.adjusted;\n\n\t// If effect is disabled, target it mouse, no animation is defined or positioning gives NaN out, set CSS directly\n\tif(effect === FALSE || !visible || isNaN(position.left) || isNaN(position.top) || target === 'mouse' || !$.isFunction(posOptions.effect)) {\n\t\ttooltip.css(position);\n\t}\n\n\t// Use custom function if provided\n\telse if($.isFunction(posOptions.effect)) {\n\t\tposOptions.effect.call(tooltip, this, $.extend({}, position));\n\t\ttooltip.queue(function(next) {\n\t\t\t// Reset attributes to avoid cross-browser rendering bugs\n\t\t\t$(this).css({ opacity: '', height: '' });\n\t\t\tif(BROWSER.ie) { this.style.removeAttribute('filter'); }\n\n\t\t\tnext();\n\t\t});\n\t}\n\n\t// Set positioning flag\n\tthis.positioning = FALSE;\n\n\treturn this;\n};\n\n// Custom (more correct for qTip!) offset calculator\nPROTOTYPE.reposition.offset = function(elem, pos, container) {\n\tif(!container[0]) { return pos; }\n\n\tvar ownerDocument = $(elem[0].ownerDocument),\n\t\tquirks = !!BROWSER.ie && document.compatMode !== 'CSS1Compat',\n\t\tparent = container[0],\n\t\tscrolled, position, parentOffset, overflow;\n\n\tfunction scroll(e, i) {\n\t\tpos.left += i * e.scrollLeft();\n\t\tpos.top += i * e.scrollTop();\n\t}\n\n\t// Compensate for non-static containers offset\n\tdo {\n\t\tif((position = $.css(parent, 'position')) !== 'static') {\n\t\t\tif(position === 'fixed') {\n\t\t\t\tparentOffset = parent.getBoundingClientRect();\n\t\t\t\tscroll(ownerDocument, -1);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tparentOffset = $(parent).position();\n\t\t\t\tparentOffset.left += parseFloat($.css(parent, 'borderLeftWidth')) || 0;\n\t\t\t\tparentOffset.top += parseFloat($.css(parent, 'borderTopWidth')) || 0;\n\t\t\t}\n\n\t\t\tpos.left -= parentOffset.left + (parseFloat($.css(parent, 'marginLeft')) || 0);\n\t\t\tpos.top -= parentOffset.top + (parseFloat($.css(parent, 'marginTop')) || 0);\n\n\t\t\t// If this is the first parent element with an overflow of \"scroll\" or \"auto\", store it\n\t\t\tif(!scrolled && (overflow = $.css(parent, 'overflow')) !== 'hidden' && overflow !== 'visible') { scrolled = $(parent); }\n\t\t}\n\t}\n\twhile(parent = parent.offsetParent);\n\n\t// Compensate for containers scroll if it also has an offsetParent (or in IE quirks mode)\n\tif(scrolled && (scrolled[0] !== ownerDocument[0] || quirks)) {\n\t\tscroll(scrolled, 1);\n\t}\n\n\treturn pos;\n};\n\n// Corner class\nvar C = (CORNER = PROTOTYPE.reposition.Corner = function(corner, forceY) {\n\tcorner = ('' + corner).replace(/([A-Z])/, ' $1').replace(/middle/gi, CENTER).toLowerCase();\n\tthis.x = (corner.match(/left|right/i) || corner.match(/center/) || ['inherit'])[0].toLowerCase();\n\tthis.y = (corner.match(/top|bottom|center/i) || ['inherit'])[0].toLowerCase();\n\tthis.forceY = !!forceY;\n\n\tvar f = corner.charAt(0);\n\tthis.precedance = f === 't' || f === 'b' ? Y : X;\n}).prototype;\n\nC.invert = function(z, center) {\n\tthis[z] = this[z] === LEFT ? RIGHT : this[z] === RIGHT ? LEFT : center || this[z];\n};\n\nC.string = function(join) {\n\tvar x = this.x, y = this.y;\n\n\tvar result = x !== y ?\n\t\tx === 'center' || y !== 'center' && (this.precedance === Y || this.forceY) ? \n\t\t\t[y,x] : \n\t\t\t[x,y] :\n\t\t[x];\n\n\treturn join !== false ? result.join(' ') : result;\n};\n\nC.abbrev = function() {\n\tvar result = this.string(false);\n\treturn result[0].charAt(0) + (result[1] && result[1].charAt(0) || '');\n};\n\nC.clone = function() {\n\treturn new CORNER( this.string(), this.forceY );\n};\n\n;\nPROTOTYPE.toggle = function(state, event) {\n\tvar cache = this.cache,\n\t\toptions = this.options,\n\t\ttooltip = this.tooltip;\n\n\t// Try to prevent flickering when tooltip overlaps show element\n\tif(event) {\n\t\tif((/over|enter/).test(event.type) && cache.event && (/out|leave/).test(cache.event.type) &&\n\t\t\toptions.show.target.add(event.target).length === options.show.target.length &&\n\t\t\ttooltip.has(event.relatedTarget).length) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Cache event\n\t\tcache.event = $.event.fix(event);\n\t}\n\n\t// If we're currently waiting and we've just hidden... stop it\n\tthis.waiting && !state && (this.hiddenDuringWait = TRUE);\n\n\t// Render the tooltip if showing and it isn't already\n\tif(!this.rendered) { return state ? this.render(1) : this; }\n\telse if(this.destroyed || this.disabled) { return this; }\n\n\tvar type = state ? 'show' : 'hide',\n\t\topts = this.options[type],\n\t\tposOptions = this.options.position,\n\t\tcontentOptions = this.options.content,\n\t\twidth = this.tooltip.css('width'),\n\t\tvisible = this.tooltip.is(':visible'),\n\t\tanimate = state || opts.target.length === 1,\n\t\tsameTarget = !event || opts.target.length < 2 || cache.target[0] === event.target,\n\t\tidenticalState, allow, after;\n\n\t// Detect state if valid one isn't provided\n\tif((typeof state).search('boolean|number')) { state = !visible; }\n\n\t// Check if the tooltip is in an identical state to the new would-be state\n\tidenticalState = !tooltip.is(':animated') && visible === state && sameTarget;\n\n\t// Fire tooltip(show/hide) event and check if destroyed\n\tallow = !identicalState ? !!this._trigger(type, [90]) : NULL;\n\n\t// Check to make sure the tooltip wasn't destroyed in the callback\n\tif(this.destroyed) { return this; }\n\n\t// If the user didn't stop the method prematurely and we're showing the tooltip, focus it\n\tif(allow !== FALSE && state) { this.focus(event); }\n\n\t// If the state hasn't changed or the user stopped it, return early\n\tif(!allow || identicalState) { return this; }\n\n\t// Set ARIA hidden attribute\n\t$.attr(tooltip[0], 'aria-hidden', !!!state);\n\n\t// Execute state specific properties\n\tif(state) {\n\t\t// Store show origin coordinates\n\t\tthis.mouse && (cache.origin = $.event.fix(this.mouse));\n\n\t\t// Update tooltip content & title if it's a dynamic function\n\t\tif($.isFunction(contentOptions.text)) { this._updateContent(contentOptions.text, FALSE); }\n\t\tif($.isFunction(contentOptions.title)) { this._updateTitle(contentOptions.title, FALSE); }\n\n\t\t// Cache mousemove events for positioning purposes (if not already tracking)\n\t\tif(!trackingBound && posOptions.target === 'mouse' && posOptions.adjust.mouse) {\n\t\t\t$(document).bind('mousemove.'+NAMESPACE, this._storeMouse);\n\t\t\ttrackingBound = TRUE;\n\t\t}\n\n\t\t// Update the tooltip position (set width first to prevent viewport/max-width issues)\n\t\tif(!width) { tooltip.css('width', tooltip.outerWidth(FALSE)); }\n\t\tthis.reposition(event, arguments[2]);\n\t\tif(!width) { tooltip.css('width', ''); }\n\n\t\t// Hide other tooltips if tooltip is solo\n\t\tif(!!opts.solo) {\n\t\t\t(typeof opts.solo === 'string' ? $(opts.solo) : $(SELECTOR, opts.solo))\n\t\t\t\t.not(tooltip).not(opts.target).qtip('hide', new $.Event('tooltipsolo'));\n\t\t}\n\t}\n\telse {\n\t\t// Clear show timer if we're hiding\n\t\tclearTimeout(this.timers.show);\n\n\t\t// Remove cached origin on hide\n\t\tdelete cache.origin;\n\n\t\t// Remove mouse tracking event if not needed (all tracking qTips are hidden)\n\t\tif(trackingBound && !$(SELECTOR+'[tracking=\"true\"]:visible', opts.solo).not(tooltip).length) {\n\t\t\t$(document).unbind('mousemove.'+NAMESPACE);\n\t\t\ttrackingBound = FALSE;\n\t\t}\n\n\t\t// Blur the tooltip\n\t\tthis.blur(event);\n\t}\n\n\t// Define post-animation, state specific properties\n\tafter = $.proxy(function() {\n\t\tif(state) {\n\t\t\t// Prevent antialias from disappearing in IE by removing filter\n\t\t\tif(BROWSER.ie) { tooltip[0].style.removeAttribute('filter'); }\n\n\t\t\t// Remove overflow setting to prevent tip bugs\n\t\t\ttooltip.css('overflow', '');\n\n\t\t\t// Autofocus elements if enabled\n\t\t\tif('string' === typeof opts.autofocus) {\n\t\t\t\t$(this.options.show.autofocus, tooltip).focus();\n\t\t\t}\n\n\t\t\t// If set, hide tooltip when inactive for delay period\n\t\t\tthis.options.show.target.trigger('qtip-'+this.id+'-inactive');\n\t\t}\n\t\telse {\n\t\t\t// Reset CSS states\n\t\t\ttooltip.css({\n\t\t\t\tdisplay: '',\n\t\t\t\tvisibility: '',\n\t\t\t\topacity: '',\n\t\t\t\tleft: '',\n\t\t\t\ttop: ''\n\t\t\t});\n\t\t}\n\n\t\t// tooltipvisible/tooltiphidden events\n\t\tthis._trigger(state ? 'visible' : 'hidden');\n\t}, this);\n\n\t// If no effect type is supplied, use a simple toggle\n\tif(opts.effect === FALSE || animate === FALSE) {\n\t\ttooltip[ type ]();\n\t\tafter();\n\t}\n\n\t// Use custom function if provided\n\telse if($.isFunction(opts.effect)) {\n\t\ttooltip.stop(1, 1);\n\t\topts.effect.call(tooltip, this);\n\t\ttooltip.queue('fx', function(n) {\n\t\t\tafter(); n();\n\t\t});\n\t}\n\n\t// Use basic fade function by default\n\telse { tooltip.fadeTo(90, state ? 1 : 0, after); }\n\n\t// If inactive hide method is set, active it\n\tif(state) { opts.target.trigger('qtip-'+this.id+'-inactive'); }\n\n\treturn this;\n};\n\nPROTOTYPE.show = function(event) { return this.toggle(TRUE, event); };\n\nPROTOTYPE.hide = function(event) { return this.toggle(FALSE, event); };\n;PROTOTYPE.focus = function(event) {\n\tif(!this.rendered || this.destroyed) { return this; }\n\n\tvar qtips = $(SELECTOR),\n\t\ttooltip = this.tooltip,\n\t\tcurIndex = parseInt(tooltip[0].style.zIndex, 10),\n\t\tnewIndex = QTIP.zindex + qtips.length;\n\n\t// Only update the z-index if it has changed and tooltip is not already focused\n\tif(!tooltip.hasClass(CLASS_FOCUS)) {\n\t\t// tooltipfocus event\n\t\tif(this._trigger('focus', [newIndex], event)) {\n\t\t\t// Only update z-index's if they've changed\n\t\t\tif(curIndex !== newIndex) {\n\t\t\t\t// Reduce our z-index's and keep them properly ordered\n\t\t\t\tqtips.each(function() {\n\t\t\t\t\tif(this.style.zIndex > curIndex) {\n\t\t\t\t\t\tthis.style.zIndex = this.style.zIndex - 1;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t// Fire blur event for focused tooltip\n\t\t\t\tqtips.filter('.' + CLASS_FOCUS).qtip('blur', event);\n\t\t\t}\n\n\t\t\t// Set the new z-index\n\t\t\ttooltip.addClass(CLASS_FOCUS)[0].style.zIndex = newIndex;\n\t\t}\n\t}\n\n\treturn this;\n};\n\nPROTOTYPE.blur = function(event) {\n\tif(!this.rendered || this.destroyed) { return this; }\n\n\t// Set focused status to FALSE\n\tthis.tooltip.removeClass(CLASS_FOCUS);\n\n\t// tooltipblur event\n\tthis._trigger('blur', [ this.tooltip.css('zIndex') ], event);\n\n\treturn this;\n};\n;PROTOTYPE.disable = function(state) {\n\tif(this.destroyed) { return this; }\n\n\t// If 'toggle' is passed, toggle the current state\n\tif(state === 'toggle') {\n\t\tstate = !(this.rendered ? this.tooltip.hasClass(CLASS_DISABLED) : this.disabled);\n\t}\n\n\t// Disable if no state passed\n\telse if('boolean' !== typeof state) {\n\t\tstate = TRUE;\n\t}\n\n\tif(this.rendered) {\n\t\tthis.tooltip.toggleClass(CLASS_DISABLED, state)\n\t\t\t.attr('aria-disabled', state);\n\t}\n\n\tthis.disabled = !!state;\n\n\treturn this;\n};\n\nPROTOTYPE.enable = function() { return this.disable(FALSE); };\n;PROTOTYPE._createButton = function()\n{\n\tvar self = this,\n\t\telements = this.elements,\n\t\ttooltip = elements.tooltip,\n\t\tbutton = this.options.content.button,\n\t\tisString = typeof button === 'string',\n\t\tclose = isString ? button : 'Close tooltip';\n\n\tif(elements.button) { elements.button.remove(); }\n\n\t// Use custom button if one was supplied by user, else use default\n\tif(button.jquery) {\n\t\telements.button = button;\n\t}\n\telse {\n\t\telements.button = $('<a />', {\n\t\t\t'class': 'qtip-close ' + (this.options.style.widget ? '' : NAMESPACE+'-icon'),\n\t\t\t'title': close,\n\t\t\t'aria-label': close\n\t\t})\n\t\t.prepend(\n\t\t\t$('<span />', {\n\t\t\t\t'class': 'ui-icon ui-icon-close',\n\t\t\t\t'html': '×'\n\t\t\t})\n\t\t);\n\t}\n\n\t// Create button and setup attributes\n\telements.button.appendTo(elements.titlebar || tooltip)\n\t\t.attr('role', 'button')\n\t\t.click(function(event) {\n\t\t\tif(!tooltip.hasClass(CLASS_DISABLED)) { self.hide(event); }\n\t\t\treturn FALSE;\n\t\t});\n};\n\nPROTOTYPE._updateButton = function(button)\n{\n\t// Make sure tooltip is rendered and if not, return\n\tif(!this.rendered) { return FALSE; }\n\n\tvar elem = this.elements.button;\n\tif(button) { this._createButton(); }\n\telse { elem.remove(); }\n};\n;// Widget class creator\nfunction createWidgetClass(cls) {\n\treturn WIDGET.concat('').join(cls ? '-'+cls+' ' : ' ');\n}\n\n// Widget class setter method\nPROTOTYPE._setWidget = function()\n{\n\tvar on = this.options.style.widget,\n\t\telements = this.elements,\n\t\ttooltip = elements.tooltip,\n\t\tdisabled = tooltip.hasClass(CLASS_DISABLED);\n\n\ttooltip.removeClass(CLASS_DISABLED);\n\tCLASS_DISABLED = on ? 'ui-state-disabled' : 'qtip-disabled';\n\ttooltip.toggleClass(CLASS_DISABLED, disabled);\n\n\ttooltip.toggleClass('ui-helper-reset '+createWidgetClass(), on).toggleClass(CLASS_DEFAULT, this.options.style.def && !on);\n\n\tif(elements.content) {\n\t\telements.content.toggleClass( createWidgetClass('content'), on);\n\t}\n\tif(elements.titlebar) {\n\t\telements.titlebar.toggleClass( createWidgetClass('header'), on);\n\t}\n\tif(elements.button) {\n\t\telements.button.toggleClass(NAMESPACE+'-icon', !on);\n\t}\n};\n;function delay(callback, duration) {\n\t// If tooltip has displayed, start hide timer\n\tif(duration > 0) {\n\t\treturn setTimeout(\n\t\t\t$.proxy(callback, this), duration\n\t\t);\n\t}\n\telse{ callback.call(this); }\n}\n\nfunction showMethod(event) {\n\tif(this.tooltip.hasClass(CLASS_DISABLED)) { return; }\n\n\t// Clear hide timers\n\tclearTimeout(this.timers.show);\n\tclearTimeout(this.timers.hide);\n\n\t// Start show timer\n\tthis.timers.show = delay.call(this,\n\t\tfunction() { this.toggle(TRUE, event); },\n\t\tthis.options.show.delay\n\t);\n}\n\nfunction hideMethod(event) {\n\tif(this.tooltip.hasClass(CLASS_DISABLED) || this.destroyed) { return; }\n\n\t// Check if new target was actually the tooltip element\n\tvar relatedTarget = $(event.relatedTarget),\n\t\tontoTooltip = relatedTarget.closest(SELECTOR)[0] === this.tooltip[0],\n\t\tontoTarget = relatedTarget[0] === this.options.show.target[0];\n\n\t// Clear timers and stop animation queue\n\tclearTimeout(this.timers.show);\n\tclearTimeout(this.timers.hide);\n\n\t// Prevent hiding if tooltip is fixed and event target is the tooltip.\n\t// Or if mouse positioning is enabled and cursor momentarily overlaps\n\tif(this !== relatedTarget[0] &&\n\t\t(this.options.position.target === 'mouse' && ontoTooltip) ||\n\t\tthis.options.hide.fixed && (\n\t\t\t(/mouse(out|leave|move)/).test(event.type) && (ontoTooltip || ontoTarget))\n\t\t)\n\t{\n\t\t/* eslint-disable no-empty */\n\t\ttry {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopImmediatePropagation();\n\t\t} catch(e) {}\n\t\t/* eslint-enable no-empty */\n\n\t\treturn;\n\t}\n\n\t// If tooltip has displayed, start hide timer\n\tthis.timers.hide = delay.call(this,\n\t\tfunction() { this.toggle(FALSE, event); },\n\t\tthis.options.hide.delay,\n\t\tthis\n\t);\n}\n\nfunction inactiveMethod(event) {\n\tif(this.tooltip.hasClass(CLASS_DISABLED) || !this.options.hide.inactive) { return; }\n\n\t// Clear timer\n\tclearTimeout(this.timers.inactive);\n\n\tthis.timers.inactive = delay.call(this,\n\t\tfunction(){ this.hide(event); },\n\t\tthis.options.hide.inactive\n\t);\n}\n\nfunction repositionMethod(event) {\n\tif(this.rendered && this.tooltip[0].offsetWidth > 0) { this.reposition(event); }\n}\n\n// Store mouse coordinates\nPROTOTYPE._storeMouse = function(event) {\n\t(this.mouse = $.event.fix(event)).type = 'mousemove';\n\treturn this;\n};\n\n// Bind events\nPROTOTYPE._bind = function(targets, events, method, suffix, context) {\n\tif(!targets || !method || !events.length) { return; }\n\tvar ns = '.' + this._id + (suffix ? '-'+suffix : '');\n\t$(targets).bind(\n\t\t(events.split ? events : events.join(ns + ' ')) + ns,\n\t\t$.proxy(method, context || this)\n\t);\n\treturn this;\n};\nPROTOTYPE._unbind = function(targets, suffix) {\n\ttargets && $(targets).unbind('.' + this._id + (suffix ? '-'+suffix : ''));\n\treturn this;\n};\n\n// Global delegation helper\nfunction delegate(selector, events, method) {\n\t$(document.body).delegate(selector,\n\t\t(events.split ? events : events.join('.'+NAMESPACE + ' ')) + '.'+NAMESPACE,\n\t\tfunction() {\n\t\t\tvar api = QTIP.api[ $.attr(this, ATTR_ID) ];\n\t\t\tapi && !api.disabled && method.apply(api, arguments);\n\t\t}\n\t);\n}\n// Event trigger\nPROTOTYPE._trigger = function(type, args, event) {\n\tvar callback = new $.Event('tooltip'+type);\n\tcallback.originalEvent = event && $.extend({}, event) || this.cache.event || NULL;\n\n\tthis.triggering = type;\n\tthis.tooltip.trigger(callback, [this].concat(args || []));\n\tthis.triggering = FALSE;\n\n\treturn !callback.isDefaultPrevented();\n};\n\nPROTOTYPE._bindEvents = function(showEvents, hideEvents, showTargets, hideTargets, showCallback, hideCallback) {\n\t// Get tasrgets that lye within both\n\tvar similarTargets = showTargets.filter(hideTargets).add(hideTargets.filter(showTargets)),\n\t\t\ttoggleEvents = [];\n\n\t// If hide and show targets are the same...\n\tif (similarTargets.length) {\n\t\t// Filter identical show/hide events\n\t\tvar allEvents = Array.from(new Set([hideEvents].concat(showEvents)));\n\t\ttoggleEvents = allEvents.filter(function(eventName) {\n\t\t\tvar indexInShowEvents = showEvents.indexOf(eventName);\n\t\t\tvar indexInHideEvents = hideEvents.indexOf(eventName);\n\n\t\t\tif (indexInHideEvents !== -1 && indexInShowEvents !== -1) {\n\t\t\t\tshowEvents.splice(indexInShowEvents, 1);\n\t\t\t\thideEvents.splice(indexInHideEvents, 1);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t});\n\n\t\t// Toggle events are special case of identical show/hide events, which happen in sequence\n\t\tif (toggleEvents.length) {\n\t\t\t// Bind toggle events to the similar targets\n\t\t\tthis._bind(similarTargets, toggleEvents, function(event) {\n\t\t\t\tvar state = this.rendered ? this.tooltip[0].offsetWidth > 0 : false;\n\t\t\t\t(state ? hideCallback : showCallback).call(this, event);\n\t\t\t});\n\n\t\t\t// Remove the similar targets from the regular show/hide bindings\n\t\t\tshowTargets = showTargets.not(similarTargets);\n\t\t\thideTargets = hideTargets.not(similarTargets);\n\t\t}\n\t}\n\n\t// Apply show/hide/toggle events\n\tthis._bind(showTargets, showEvents, showCallback);\n\tthis._bind(hideTargets, hideEvents, hideCallback);\n};\n\nPROTOTYPE._assignInitialEvents = function(event) {\n\tvar options = this.options,\n\t\tshowTarget = options.show.target,\n\t\thideTarget = options.hide.target,\n\t\tshowEvents = options.show.event ? $.trim('' + options.show.event).split(' ') : [],\n\t\thideEvents = options.hide.event ? $.trim('' + options.hide.event).split(' ') : [];\n\n\t// Catch remove/removeqtip events on target element to destroy redundant tooltips\n\tthis._bind(this.elements.target, ['remove', 'removeqtip'], function() {\n\t\tthis.destroy(true);\n\t}, 'destroy');\n\n\t/*\n\t * Make sure hoverIntent functions properly by using mouseleave as a hide event if\n\t * mouseenter/mouseout is used for show.event, even if it isn't in the users options.\n\t */\n\tif(/mouse(over|enter)/i.test(options.show.event) && !/mouse(out|leave)/i.test(options.hide.event)) {\n\t\thideEvents.push('mouseleave');\n\t}\n\n\t/*\n\t * Also make sure initial mouse targetting works correctly by caching mousemove coords\n\t * on show targets before the tooltip has rendered. Also set onTarget when triggered to\n\t * keep mouse tracking working.\n\t */\n\tthis._bind(showTarget, 'mousemove', function(moveEvent) {\n\t\tthis._storeMouse(moveEvent);\n\t\tthis.cache.onTarget = TRUE;\n\t});\n\n\t// Define hoverIntent function\n\tfunction hoverIntent(hoverEvent) {\n\t\t// Only continue if tooltip isn't disabled\n\t\tif(this.disabled || this.destroyed) { return FALSE; }\n\n\t\t// Cache the event data\n\t\tthis.cache.event = hoverEvent && $.event.fix(hoverEvent);\n\t\tthis.cache.target = hoverEvent && $(hoverEvent.target);\n\n\t\t// Start the event sequence\n\t\tclearTimeout(this.timers.show);\n\t\tthis.timers.show = delay.call(this,\n\t\t\tfunction() { this.render(typeof hoverEvent === 'object' || options.show.ready); },\n\t\t\toptions.prerender ? 0 : options.show.delay\n\t\t);\n\t}\n\n\t// Filter and bind events\n\tthis._bindEvents(showEvents, hideEvents, showTarget, hideTarget, hoverIntent, function() {\n\t\tif(!this.timers) { return FALSE; }\n\t\tclearTimeout(this.timers.show);\n\t});\n\n\t// Prerendering is enabled, create tooltip now\n\tif(options.show.ready || options.prerender) { hoverIntent.call(this, event); }\n};\n\n// Event assignment method\nPROTOTYPE._assignEvents = function() {\n\tvar self = this,\n\t\toptions = this.options,\n\t\tposOptions = options.position,\n\n\t\ttooltip = this.tooltip,\n\t\tshowTarget = options.show.target,\n\t\thideTarget = options.hide.target,\n\t\tcontainerTarget = posOptions.container,\n\t\tviewportTarget = posOptions.viewport,\n\t\tdocumentTarget = $(document),\n\t\twindowTarget = $(window),\n\n\t\tshowEvents = options.show.event ? $.trim('' + options.show.event).split(' ') : [],\n\t\thideEvents = options.hide.event ? $.trim('' + options.hide.event).split(' ') : [];\n\n\n\t// Assign passed event callbacks\n\t$.each(options.events, function(name, callback) {\n\t\tself._bind(tooltip, name === 'toggle' ? ['tooltipshow','tooltiphide'] : ['tooltip'+name], callback, null, tooltip);\n\t});\n\n\t// Hide tooltips when leaving current window/frame (but not select/option elements)\n\tif(/mouse(out|leave)/i.test(options.hide.event) && options.hide.leave === 'window') {\n\t\tthis._bind(documentTarget, ['mouseout', 'blur'], function(event) {\n\t\t\tif(!/select|option/.test(event.target.nodeName) && !event.relatedTarget) {\n\t\t\t\tthis.hide(event);\n\t\t\t}\n\t\t});\n\t}\n\n\t// Enable hide.fixed by adding appropriate class\n\tif(options.hide.fixed) {\n\t\thideTarget = hideTarget.add( tooltip.addClass(CLASS_FIXED) );\n\t}\n\n\t/*\n\t * Make sure hoverIntent functions properly by using mouseleave to clear show timer if\n\t * mouseenter/mouseout is used for show.event, even if it isn't in the users options.\n\t */\n\telse if(/mouse(over|enter)/i.test(options.show.event)) {\n\t\tthis._bind(hideTarget, 'mouseleave', function() {\n\t\t\tclearTimeout(this.timers.show);\n\t\t});\n\t}\n\n\t// Hide tooltip on document mousedown if unfocus events are enabled\n\tif(('' + options.hide.event).indexOf('unfocus') > -1) {\n\t\tthis._bind(containerTarget.closest('html'), ['mousedown', 'touchstart'], function(event) {\n\t\t\tvar elem = $(event.target),\n\t\t\t\tenabled = this.rendered && !this.tooltip.hasClass(CLASS_DISABLED) && this.tooltip[0].offsetWidth > 0,\n\t\t\t\tisAncestor = elem.parents(SELECTOR).filter(this.tooltip[0]).length > 0;\n\n\t\t\tif(elem[0] !== this.target[0] && elem[0] !== this.tooltip[0] && !isAncestor &&\n\t\t\t\t!this.target.has(elem[0]).length && enabled\n\t\t\t) {\n\t\t\t\tthis.hide(event);\n\t\t\t}\n\t\t});\n\t}\n\n\t// Check if the tooltip hides when inactive\n\tif('number' === typeof options.hide.inactive) {\n\t\t// Bind inactive method to show target(s) as a custom event\n\t\tthis._bind(showTarget, 'qtip-'+this.id+'-inactive', inactiveMethod, 'inactive');\n\n\t\t// Define events which reset the 'inactive' event handler\n\t\tthis._bind(hideTarget.add(tooltip), QTIP.inactiveEvents, inactiveMethod);\n\t}\n\n\t// Filter and bind events\n\tthis._bindEvents(showEvents, hideEvents, showTarget, hideTarget, showMethod, hideMethod);\n\n\t// Mouse movement bindings\n\tthis._bind(showTarget.add(tooltip), 'mousemove', function(event) {\n\t\t// Check if the tooltip hides when mouse is moved a certain distance\n\t\tif('number' === typeof options.hide.distance) {\n\t\t\tvar origin = this.cache.origin || {},\n\t\t\t\tlimit = this.options.hide.distance,\n\t\t\t\tabs = Math.abs;\n\n\t\t\t// Check if the movement has gone beyond the limit, and hide it if so\n\t\t\tif(abs(event.pageX - origin.pageX) >= limit || abs(event.pageY - origin.pageY) >= limit) {\n\t\t\t\tthis.hide(event);\n\t\t\t}\n\t\t}\n\n\t\t// Cache mousemove coords on show targets\n\t\tthis._storeMouse(event);\n\t});\n\n\t// Mouse positioning events\n\tif(posOptions.target === 'mouse') {\n\t\t// If mouse adjustment is on...\n\t\tif(posOptions.adjust.mouse) {\n\t\t\t// Apply a mouseleave event so we don't get problems with overlapping\n\t\t\tif(options.hide.event) {\n\t\t\t\t// Track if we're on the target or not\n\t\t\t\tthis._bind(showTarget, ['mouseenter', 'mouseleave'], function(event) {\n\t\t\t\t\tif(!this.cache) {return FALSE; }\n\t\t\t\t\tthis.cache.onTarget = event.type === 'mouseenter';\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Update tooltip position on mousemove\n\t\t\tthis._bind(documentTarget, 'mousemove', function(event) {\n\t\t\t\t// Update the tooltip position only if the tooltip is visible and adjustment is enabled\n\t\t\t\tif(this.rendered && this.cache.onTarget && !this.tooltip.hasClass(CLASS_DISABLED) && this.tooltip[0].offsetWidth > 0) {\n\t\t\t\t\tthis.reposition(event);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\t// Adjust positions of the tooltip on window resize if enabled\n\tif(posOptions.adjust.resize || viewportTarget.length) {\n\t\tthis._bind( $.event.special.resize ? viewportTarget : windowTarget, 'resize', repositionMethod );\n\t}\n\n\t// Adjust tooltip position on scroll of the window or viewport element if present\n\tif(posOptions.adjust.scroll) {\n\t\tthis._bind( windowTarget.add(posOptions.container), 'scroll', repositionMethod );\n\t}\n};\n\n// Un-assignment method\nPROTOTYPE._unassignEvents = function() {\n\tvar options = this.options,\n\t\tshowTargets = options.show.target,\n\t\thideTargets = options.hide.target,\n\t\ttargets = $.grep([\n\t\t\tthis.elements.target[0],\n\t\t\tthis.rendered && this.tooltip[0],\n\t\t\toptions.position.container[0],\n\t\t\toptions.position.viewport[0],\n\t\t\toptions.position.container.closest('html')[0], // unfocus\n\t\t\twindow,\n\t\t\tdocument\n\t\t], function(i) {\n\t\t\treturn typeof i === 'object';\n\t\t});\n\n\t// Add show and hide targets if they're valid\n\tif(showTargets && showTargets.toArray) {\n\t\ttargets = targets.concat(showTargets.toArray());\n\t}\n\tif(hideTargets && hideTargets.toArray) {\n\t\ttargets = targets.concat(hideTargets.toArray());\n\t}\n\n\t// Unbind the events\n\tthis._unbind(targets)\n\t\t._unbind(targets, 'destroy')\n\t\t._unbind(targets, 'inactive');\n};\n\n// Apply common event handlers using delegate (avoids excessive .bind calls!)\n$(function() {\n\tdelegate(SELECTOR, ['mouseenter', 'mouseleave'], function(event) {\n\t\tvar state = event.type === 'mouseenter',\n\t\t\ttooltip = $(event.currentTarget),\n\t\t\ttarget = $(event.relatedTarget || event.target),\n\t\t\toptions = this.options;\n\n\t\t// On mouseenter...\n\t\tif(state) {\n\t\t\t// Focus the tooltip on mouseenter (z-index stacking)\n\t\t\tthis.focus(event);\n\n\t\t\t// Clear hide timer on tooltip hover to prevent it from closing\n\t\t\ttooltip.hasClass(CLASS_FIXED) && !tooltip.hasClass(CLASS_DISABLED) && clearTimeout(this.timers.hide);\n\t\t}\n\n\t\t// On mouseleave...\n\t\telse {\n\t\t\t// When mouse tracking is enabled, hide when we leave the tooltip and not onto the show target (if a hide event is set)\n\t\t\tif(options.position.target === 'mouse' && options.position.adjust.mouse &&\n\t\t\t\toptions.hide.event && options.show.target && !target.closest(options.show.target[0]).length) {\n\t\t\t\tthis.hide(event);\n\t\t\t}\n\t\t}\n\n\t\t// Add hover class\n\t\ttooltip.toggleClass(CLASS_HOVER, state);\n\t});\n\n\t// Define events which reset the 'inactive' event handler\n\tdelegate('['+ATTR_ID+']', INACTIVE_EVENTS, inactiveMethod);\n});\n;// Initialization method\nfunction init(elem, id, opts) {\n\tvar obj, posOptions, attr, config, title,\n\n\t// Setup element references\n\tdocBody = $(document.body),\n\n\t// Use document body instead of document element if needed\n\tnewTarget = elem[0] === document ? docBody : elem,\n\n\t// Grab metadata from element if plugin is present\n\tmetadata = elem.metadata ? elem.metadata(opts.metadata) : NULL,\n\n\t// If metadata type if HTML5, grab 'name' from the object instead, or use the regular data object otherwise\n\tmetadata5 = opts.metadata.type === 'html5' && metadata ? metadata[opts.metadata.name] : NULL,\n\n\t// Grab data from metadata.name (or data-qtipopts as fallback) using .data() method,\n\thtml5 = elem.data(opts.metadata.name || 'qtipopts');\n\n\t// If we don't get an object returned attempt to parse it manualyl without parseJSON\n\t/* eslint-disable no-empty */\n\ttry { html5 = typeof html5 === 'string' ? $.parseJSON(html5) : html5; }\n\tcatch(e) {}\n\t/* eslint-enable no-empty */\n\n\t// Merge in and sanitize metadata\n\tconfig = $.extend(TRUE, {}, QTIP.defaults, opts,\n\t\ttypeof html5 === 'object' ? sanitizeOptions(html5) : NULL,\n\t\tsanitizeOptions(metadata5 || metadata));\n\n\t// Re-grab our positioning options now we've merged our metadata and set id to passed value\n\tposOptions = config.position;\n\tconfig.id = id;\n\n\t// Setup missing content if none is detected\n\tif('boolean' === typeof config.content.text) {\n\t\tattr = elem.attr(config.content.attr);\n\n\t\t// Grab from supplied attribute if available\n\t\tif(config.content.attr !== FALSE && attr) { config.content.text = attr; }\n\n\t\t// No valid content was found, abort render\n\t\telse { return FALSE; }\n\t}\n\n\t// Setup target options\n\tif(!posOptions.container.length) { posOptions.container = docBody; }\n\tif(posOptions.target === FALSE) { posOptions.target = newTarget; }\n\tif(config.show.target === FALSE) { config.show.target = newTarget; }\n\tif(config.show.solo === TRUE) { config.show.solo = posOptions.container.closest('body'); }\n\tif(config.hide.target === FALSE) { config.hide.target = newTarget; }\n\tif(config.position.viewport === TRUE) { config.position.viewport = posOptions.container; }\n\n\t// Ensure we only use a single container\n\tposOptions.container = posOptions.container.eq(0);\n\n\t// Convert position corner values into x and y strings\n\tposOptions.at = new CORNER(posOptions.at, TRUE);\n\tposOptions.my = new CORNER(posOptions.my);\n\n\t// Destroy previous tooltip if overwrite is enabled, or skip element if not\n\tif(elem.data(NAMESPACE)) {\n\t\tif(config.overwrite) {\n\t\t\telem.qtip('destroy', true);\n\t\t}\n\t\telse if(config.overwrite === FALSE) {\n\t\t\treturn FALSE;\n\t\t}\n\t}\n\n\t// Add has-qtip attribute\n\telem.attr(ATTR_HAS, id);\n\n\t// Remove title attribute and store it if present\n\tif(config.suppress && (title = elem.attr('title'))) {\n\t\t// Final attr call fixes event delegation and IE default tooltip showing problem\n\t\telem.removeAttr('title').attr(oldtitle, title).attr('title', '');\n\t}\n\n\t// Initialize the tooltip and add API reference\n\tobj = new QTip(elem, config, id, !!attr);\n\telem.data(NAMESPACE, obj);\n\n\treturn obj;\n}\n\n// jQuery $.fn extension method\nQTIP = $.fn.qtip = function(options, notation, newValue)\n{\n\tvar command = ('' + options).toLowerCase(), // Parse command\n\t\treturned = NULL,\n\t\targs = $.makeArray(arguments).slice(1),\n\t\tevent = args[args.length - 1],\n\t\topts = this[0] ? $.data(this[0], NAMESPACE) : NULL;\n\n\t// Check for API request\n\tif(!arguments.length && opts || command === 'api') {\n\t\treturn opts;\n\t}\n\n\t// Execute API command if present\n\telse if('string' === typeof options) {\n\t\tthis.each(function() {\n\t\t\tvar api = $.data(this, NAMESPACE);\n\t\t\tif(!api) { return TRUE; }\n\n\t\t\t// Cache the event if possible\n\t\t\tif(event && event.timeStamp) { api.cache.event = event; }\n\n\t\t\t// Check for specific API commands\n\t\t\tif(notation && (command === 'option' || command === 'options')) {\n\t\t\t\tif(newValue !== undefined || $.isPlainObject(notation)) {\n\t\t\t\t\tapi.set(notation, newValue);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturned = api.get(notation);\n\t\t\t\t\treturn FALSE;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Execute API command\n\t\t\telse if(api[command]) {\n\t\t\t\tapi[command].apply(api, args);\n\t\t\t}\n\t\t});\n\n\t\treturn returned !== NULL ? returned : this;\n\t}\n\n\t// No API commands. validate provided options and setup qTips\n\telse if('object' === typeof options || !arguments.length) {\n\t\t// Sanitize options first\n\t\topts = sanitizeOptions($.extend(TRUE, {}, options));\n\n\t\treturn this.each(function(i) {\n\t\t\tvar api, id;\n\n\t\t\t// Find next available ID, or use custom ID if provided\n\t\t\tid = $.isArray(opts.id) ? opts.id[i] : opts.id;\n\t\t\tid = !id || id === FALSE || id.length < 1 || QTIP.api[id] ? QTIP.nextid++ : id;\n\n\t\t\t// Initialize the qTip and re-grab newly sanitized options\n\t\t\tapi = init($(this), id, opts);\n\t\t\tif(api === FALSE) { return TRUE; }\n\t\t\telse { QTIP.api[id] = api; }\n\n\t\t\t// Initialize plugins\n\t\t\t$.each(PLUGINS, function() {\n\t\t\t\tif(this.initialize === 'initialize') { this(api); }\n\t\t\t});\n\n\t\t\t// Assign initial pre-render events\n\t\t\tapi._assignInitialEvents(event);\n\t\t});\n\t}\n};\n\n// Expose class\n$.qtip = QTip;\n\n// Populated in render method\nQTIP.api = {};\n;$.each({\n\t/* Allow other plugins to successfully retrieve the title of an element with a qTip applied */\n\tattr: function(attr, val) {\n\t\tif(this.length) {\n\t\t\tvar self = this[0],\n\t\t\t\ttitle = 'title',\n\t\t\t\tapi = $.data(self, 'qtip');\n\n\t\t\tif(attr === title && api && api.options && 'object' === typeof api && 'object' === typeof api.options && api.options.suppress) {\n\t\t\t\tif(arguments.length < 2) {\n\t\t\t\t\treturn $.attr(self, oldtitle);\n\t\t\t\t}\n\n\t\t\t\t// If qTip is rendered and title was originally used as content, update it\n\t\t\t\tif(api && api.options.content.attr === title && api.cache.attr) {\n\t\t\t\t\tapi.set('content.text', val);\n\t\t\t\t}\n\n\t\t\t\t// Use the regular attr method to set, then cache the result\n\t\t\t\treturn this.attr(oldtitle, val);\n\t\t\t}\n\t\t}\n\n\t\treturn $.fn['attr'+replaceSuffix].apply(this, arguments);\n\t},\n\n\t/* Allow clone to correctly retrieve cached title attributes */\n\tclone: function(keepData) {\n\t\t// Clone our element using the real clone method\n\t\tvar elems = $.fn['clone'+replaceSuffix].apply(this, arguments);\n\n\t\t// Grab all elements with an oldtitle set, and change it to regular title attribute, if keepData is false\n\t\tif(!keepData) {\n\t\t\telems.filter('['+oldtitle+']').attr('title', function() {\n\t\t\t\treturn $.attr(this, oldtitle);\n\t\t\t})\n\t\t\t.removeAttr(oldtitle);\n\t\t}\n\n\t\treturn elems;\n\t}\n}, function(name, func) {\n\tif(!func || $.fn[name+replaceSuffix]) { return TRUE; }\n\n\tvar old = $.fn[name+replaceSuffix] = $.fn[name];\n\t$.fn[name] = function() {\n\t\treturn func.apply(this, arguments) || old.apply(this, arguments);\n\t};\n});\n\n/* Fire off 'removeqtip' handler in $.cleanData if jQuery UI not present (it already does similar).\n * This snippet is taken directly from jQuery UI source code found here:\n * http://code.jquery.com/ui/jquery-ui-git.js\n */\nif(!$.ui) {\n\t$['cleanData'+replaceSuffix] = $.cleanData;\n\t$.cleanData = function( elems ) {\n\t\tfor(var i = 0, elem; (elem = $( elems[i] )).length; i++) {\n\t\t\tif(elem.attr(ATTR_HAS)) {\n\t\t\t\t/* eslint-disable no-empty */\n\t\t\t\ttry { elem.triggerHandler('removeqtip'); }\n\t\t\t\tcatch( e ) {}\n\t\t\t\t/* eslint-enable no-empty */\n\t\t\t}\n\t\t}\n\t\t$['cleanData'+replaceSuffix].apply(this, arguments);\n\t};\n}\n;// qTip version\nQTIP.version = '3.0.3-7-g';\n\n// Base ID for all qTips\nQTIP.nextid = 0;\n\n// Inactive events array\nQTIP.inactiveEvents = INACTIVE_EVENTS;\n\n// Base z-index for all qTips\nQTIP.zindex = 15000;\n\n// Define configuration defaults\nQTIP.defaults = {\n\tprerender: FALSE,\n\tid: FALSE,\n\toverwrite: TRUE,\n\tsuppress: TRUE,\n\tcontent: {\n\t\ttext: TRUE,\n\t\tattr: 'title',\n\t\ttitle: FALSE,\n\t\tbutton: FALSE\n\t},\n\tposition: {\n\t\tmy: 'top left',\n\t\tat: 'bottom right',\n\t\ttarget: FALSE,\n\t\tcontainer: FALSE,\n\t\tviewport: FALSE,\n\t\tadjust: {\n\t\t\tx: 0, y: 0,\n\t\t\tmouse: TRUE,\n\t\t\tscroll: TRUE,\n\t\t\tresize: TRUE,\n\t\t\tmethod: 'flipinvert flipinvert'\n\t\t},\n\t\teffect: function(api, pos) {\n\t\t\t$(this).animate(pos, {\n\t\t\t\tduration: 200,\n\t\t\t\tqueue: FALSE\n\t\t\t});\n\t\t}\n\t},\n\tshow: {\n\t\ttarget: FALSE,\n\t\tevent: 'mouseenter',\n\t\teffect: TRUE,\n\t\tdelay: 90,\n\t\tsolo: FALSE,\n\t\tready: FALSE,\n\t\tautofocus: FALSE\n\t},\n\thide: {\n\t\ttarget: FALSE,\n\t\tevent: 'mouseleave',\n\t\teffect: TRUE,\n\t\tdelay: 0,\n\t\tfixed: FALSE,\n\t\tinactive: FALSE,\n\t\tleave: 'window',\n\t\tdistance: FALSE\n\t},\n\tstyle: {\n\t\tclasses: '',\n\t\twidget: FALSE,\n\t\twidth: FALSE,\n\t\theight: FALSE,\n\t\tdef: TRUE\n\t},\n\tevents: {\n\t\trender: NULL,\n\t\tmove: NULL,\n\t\tshow: NULL,\n\t\thide: NULL,\n\t\ttoggle: NULL,\n\t\tvisible: NULL,\n\t\thidden: NULL,\n\t\tfocus: NULL,\n\t\tblur: NULL\n\t}\n};\n;var TIP,\ncreateVML,\nSCALE,\nPIXEL_RATIO,\nBACKING_STORE_RATIO,\n\n// Common CSS strings\nMARGIN = 'margin',\nBORDER = 'border',\nCOLOR = 'color',\nBG_COLOR = 'background-color',\nTRANSPARENT = 'transparent',\nIMPORTANT = ' !important',\n\n// Check if the browser supports <canvas/> elements\nHASCANVAS = !!document.createElement('canvas').getContext,\n\n// Invalid colour values used in parseColours()\nINVALID = /rgba?\\(0, 0, 0(, 0)?\\)|transparent|#123456/i;\n\n// Camel-case method, taken from jQuery source\n// http://code.jquery.com/jquery-1.8.0.js\nfunction camel(s) { return s.charAt(0).toUpperCase() + s.slice(1); }\n\n/*\n * Modified from Modernizr's testPropsAll()\n * http://modernizr.com/downloads/modernizr-latest.js\n */\nvar cssProps = {}, cssPrefixes = ['Webkit', 'O', 'Moz', 'ms'];\nfunction vendorCss(elem, prop) {\n\tvar ucProp = prop.charAt(0).toUpperCase() + prop.slice(1),\n\t\tprops = (prop + ' ' + cssPrefixes.join(ucProp + ' ') + ucProp).split(' '),\n\t\tcur, val, i = 0;\n\n\t// If the property has already been mapped...\n\tif(cssProps[prop]) { return elem.css(cssProps[prop]); }\n\n\twhile(cur = props[i++]) {\n\t\tif((val = elem.css(cur)) !== undefined) {\n\t\t\tcssProps[prop] = cur;\n\t\t\treturn val;\n\t\t}\n\t}\n}\n\n// Parse a given elements CSS property into an int\nfunction intCss(elem, prop) {\n\treturn Math.ceil(parseFloat(vendorCss(elem, prop)));\n}\n\n\n// VML creation (for IE only)\nif(!HASCANVAS) {\n\tcreateVML = function(tag, props, style) {\n\t\treturn '<qtipvml:'+tag+' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"qtip-vml\" '+(props||'')+\n\t\t\t' style=\"behavior: url(#default#VML); '+(style||'')+ '\" />';\n\t};\n}\n\n// Canvas only definitions\nelse {\n\tPIXEL_RATIO = window.devicePixelRatio || 1;\n\tBACKING_STORE_RATIO = (function() {\n\t\tvar context = document.createElement('canvas').getContext('2d');\n\t\treturn context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio ||\n\t\t\t\tcontext.msBackingStorePixelRatio || context.oBackingStorePixelRatio || 1;\n\t})();\n\tSCALE = PIXEL_RATIO / BACKING_STORE_RATIO;\n}\n\n\nfunction Tip(qtip, options) {\n\tthis._ns = 'tip';\n\tthis.options = options;\n\tthis.offset = options.offset;\n\tthis.size = [ options.width, options.height ];\n\n\t// Initialize\n\tthis.qtip = qtip;\n\tthis.init(qtip);\n}\n\n$.extend(Tip.prototype, {\n\tinit: function(qtip) {\n\t\tvar context, tip;\n\n\t\t// Create tip element and prepend to the tooltip\n\t\ttip = this.element = qtip.elements.tip = $('<div />', { 'class': NAMESPACE+'-tip' }).prependTo(qtip.tooltip);\n\n\t\t// Create tip drawing element(s)\n\t\tif(HASCANVAS) {\n\t\t\t// save() as soon as we create the canvas element so FF2 doesn't bork on our first restore()!\n\t\t\tcontext = $('<canvas />').appendTo(this.element)[0].getContext('2d');\n\n\t\t\t// Setup constant parameters\n\t\t\tcontext.lineJoin = 'miter';\n\t\t\tcontext.miterLimit = 100000;\n\t\t\tcontext.save();\n\t\t}\n\t\telse {\n\t\t\tcontext = createVML('shape', 'coordorigin=\"0,0\"', 'position:absolute;');\n\t\t\tthis.element.html(context + context);\n\n\t\t\t// Prevent mousing down on the tip since it causes problems with .live() handling in IE due to VML\n\t\t\tqtip._bind( $('*', tip).add(tip), ['click', 'mousedown'], function(event) { event.stopPropagation(); }, this._ns);\n\t\t}\n\n\t\t// Bind update events\n\t\tqtip._bind(qtip.tooltip, 'tooltipmove', this.reposition, this._ns, this);\n\n\t\t// Create it\n\t\tthis.create();\n\t},\n\n\t_swapDimensions: function() {\n\t\tthis.size[0] = this.options.height;\n\t\tthis.size[1] = this.options.width;\n\t},\n\t_resetDimensions: function() {\n\t\tthis.size[0] = this.options.width;\n\t\tthis.size[1] = this.options.height;\n\t},\n\n\t_useTitle: function(corner) {\n\t\tvar titlebar = this.qtip.elements.titlebar;\n\t\treturn titlebar && (\n\t\t\tcorner.y === TOP || corner.y === CENTER && this.element.position().top + this.size[1] / 2 + this.options.offset < titlebar.outerHeight(TRUE)\n\t\t);\n\t},\n\n\t_parseCorner: function(corner) {\n\t\tvar my = this.qtip.options.position.my;\n\n\t\t// Detect corner and mimic properties\n\t\tif(corner === FALSE || my === FALSE) {\n\t\t\tcorner = FALSE;\n\t\t}\n\t\telse if(corner === TRUE) {\n\t\t\tcorner = new CORNER( my.string() );\n\t\t}\n\t\telse if(!corner.string) {\n\t\t\tcorner = new CORNER(corner);\n\t\t\tcorner.fixed = TRUE;\n\t\t}\n\n\t\treturn corner;\n\t},\n\n\t_parseWidth: function(corner, side, use) {\n\t\tvar elements = this.qtip.elements,\n\t\t\tprop = BORDER + camel(side) + 'Width';\n\n\t\treturn (use ? intCss(use, prop) : \n\t\t\tintCss(elements.content, prop) ||\n\t\t\tintCss(this._useTitle(corner) && elements.titlebar || elements.content, prop) ||\n\t\t\tintCss(elements.tooltip, prop)\n\t\t) || 0;\n\t},\n\n\t_parseRadius: function(corner) {\n\t\tvar elements = this.qtip.elements,\n\t\t\tprop = BORDER + camel(corner.y) + camel(corner.x) + 'Radius';\n\n\t\treturn BROWSER.ie < 9 ? 0 :\n\t\t\tintCss(this._useTitle(corner) && elements.titlebar || elements.content, prop) ||\n\t\t\tintCss(elements.tooltip, prop) || 0;\n\t},\n\n\t_invalidColour: function(elem, prop, compare) {\n\t\tvar val = elem.css(prop);\n\t\treturn !val || compare && val === elem.css(compare) || INVALID.test(val) ? FALSE : val;\n\t},\n\n\t_parseColours: function(corner) {\n\t\tvar elements = this.qtip.elements,\n\t\t\ttip = this.element.css('cssText', ''),\n\t\t\tborderSide = BORDER + camel(corner[ corner.precedance ]) + camel(COLOR),\n\t\t\tcolorElem = this._useTitle(corner) && elements.titlebar || elements.content,\n\t\t\tcss = this._invalidColour, color = [];\n\n\t\t// Attempt to detect the background colour from various elements, left-to-right precedance\n\t\tcolor[0] = css(tip, BG_COLOR) || css(colorElem, BG_COLOR) || css(elements.content, BG_COLOR) ||\n\t\t\tcss(elements.tooltip, BG_COLOR) || tip.css(BG_COLOR);\n\n\t\t// Attempt to detect the correct border side colour from various elements, left-to-right precedance\n\t\tcolor[1] = css(tip, borderSide, COLOR) || css(colorElem, borderSide, COLOR) ||\n\t\t\tcss(elements.content, borderSide, COLOR) || css(elements.tooltip, borderSide, COLOR) || elements.tooltip.css(borderSide);\n\n\t\t// Reset background and border colours\n\t\t$('*', tip).add(tip).css('cssText', BG_COLOR+':'+TRANSPARENT+IMPORTANT+';'+BORDER+':0'+IMPORTANT+';');\n\n\t\treturn color;\n\t},\n\n\t_calculateSize: function(corner) {\n\t\tvar y = corner.precedance === Y,\n\t\t\twidth = this.options.width,\n\t\t\theight = this.options.height,\n\t\t\tisCenter = corner.abbrev() === 'c',\n\t\t\tbase = (y ? width: height) * (isCenter ? 0.5 : 1),\n\t\t\tpow = Math.pow,\n\t\t\tround = Math.round,\n\t\t\tbigHyp, ratio, result,\n\n\t\tsmallHyp = Math.sqrt( pow(base, 2) + pow(height, 2) ),\n\t\thyp = [\n\t\t\tthis.border / base * smallHyp,\n\t\t\tthis.border / height * smallHyp\n\t\t];\n\n\t\thyp[2] = Math.sqrt( pow(hyp[0], 2) - pow(this.border, 2) );\n\t\thyp[3] = Math.sqrt( pow(hyp[1], 2) - pow(this.border, 2) );\n\n\t\tbigHyp = smallHyp + hyp[2] + hyp[3] + (isCenter ? 0 : hyp[0]);\n\t\tratio = bigHyp / smallHyp;\n\n\t\tresult = [ round(ratio * width), round(ratio * height) ];\n\t\treturn y ? result : result.reverse();\n\t},\n\n\t// Tip coordinates calculator\n\t_calculateTip: function(corner, size, scale) {\n\t\tscale = scale || 1;\n\t\tsize = size || this.size;\n\n\t\tvar width = size[0] * scale,\n\t\t\theight = size[1] * scale,\n\t\t\twidth2 = Math.ceil(width / 2), height2 = Math.ceil(height / 2),\n\n\t\t// Define tip coordinates in terms of height and width values\n\t\ttips = {\n\t\t\tbr:\t[0,0,\t\twidth,height,\twidth,0],\n\t\t\tbl:\t[0,0,\t\twidth,0,\t\t0,height],\n\t\t\ttr:\t[0,height,\twidth,0,\t\twidth,height],\n\t\t\ttl:\t[0,0,\t\t0,height,\t\twidth,height],\n\t\t\ttc:\t[0,height,\twidth2,0,\t\twidth,height],\n\t\t\tbc:\t[0,0,\t\twidth,0,\t\twidth2,height],\n\t\t\trc:\t[0,0,\t\twidth,height2,\t0,height],\n\t\t\tlc:\t[width,0,\twidth,height,\t0,height2]\n\t\t};\n\n\t\t// Set common side shapes\n\t\ttips.lt = tips.br; tips.rt = tips.bl;\n\t\ttips.lb = tips.tr; tips.rb = tips.tl;\n\n\t\treturn tips[ corner.abbrev() ];\n\t},\n\n\t// Tip coordinates drawer (canvas)\n\t_drawCoords: function(context, coords) {\n\t\tcontext.beginPath();\n\t\tcontext.moveTo(coords[0], coords[1]);\n\t\tcontext.lineTo(coords[2], coords[3]);\n\t\tcontext.lineTo(coords[4], coords[5]);\n\t\tcontext.closePath();\n\t},\n\n\tcreate: function() {\n\t\t// Determine tip corner\n\t\tvar c = this.corner = (HASCANVAS || BROWSER.ie) && this._parseCorner(this.options.corner);\n\n\t\t// If we have a tip corner...\n\t\tthis.enabled = !!this.corner && this.corner.abbrev() !== 'c';\n\t\tif(this.enabled) {\n\t\t\t// Cache it\n\t\t\tthis.qtip.cache.corner = c.clone();\n\n\t\t\t// Create it\n\t\t\tthis.update();\n\t\t}\n\n\t\t// Toggle tip element\n\t\tthis.element.toggle(this.enabled);\n\n\t\treturn this.corner;\n\t},\n\n\tupdate: function(corner, position) {\n\t\tif(!this.enabled) { return this; }\n\n\t\tvar elements = this.qtip.elements,\n\t\t\ttip = this.element,\n\t\t\tinner = tip.children(),\n\t\t\toptions = this.options,\n\t\t\tcurSize = this.size,\n\t\t\tmimic = options.mimic,\n\t\t\tround = Math.round,\n\t\t\tcolor, precedance, context,\n\t\t\tcoords, bigCoords, translate, newSize, border;\n\n\t\t// Re-determine tip if not already set\n\t\tif(!corner) { corner = this.qtip.cache.corner || this.corner; }\n\n\t\t// Use corner property if we detect an invalid mimic value\n\t\tif(mimic === FALSE) { mimic = corner; }\n\n\t\t// Otherwise inherit mimic properties from the corner object as necessary\n\t\telse {\n\t\t\tmimic = new CORNER(mimic);\n\t\t\tmimic.precedance = corner.precedance;\n\n\t\t\tif(mimic.x === 'inherit') { mimic.x = corner.x; }\n\t\t\telse if(mimic.y === 'inherit') { mimic.y = corner.y; }\n\t\t\telse if(mimic.x === mimic.y) {\n\t\t\t\tmimic[ corner.precedance ] = corner[ corner.precedance ];\n\t\t\t}\n\t\t}\n\t\tprecedance = mimic.precedance;\n\n\t\t// Ensure the tip width.height are relative to the tip position\n\t\tif(corner.precedance === X) { this._swapDimensions(); }\n\t\telse { this._resetDimensions(); }\n\n\t\t// Update our colours\n\t\tcolor = this.color = this._parseColours(corner);\n\n\t\t// Detect border width, taking into account colours\n\t\tif(color[1] !== TRANSPARENT) {\n\t\t\t// Grab border width\n\t\t\tborder = this.border = this._parseWidth(corner, corner[corner.precedance]);\n\n\t\t\t// If border width isn't zero, use border color as fill if it's not invalid (1.0 style tips)\n\t\t\tif(options.border && border < 1 && !INVALID.test(color[1])) { color[0] = color[1]; }\n\n\t\t\t// Set border width (use detected border width if options.border is true)\n\t\t\tthis.border = border = options.border !== TRUE ? options.border : border;\n\t\t}\n\n\t\t// Border colour was invalid, set border to zero\n\t\telse { this.border = border = 0; }\n\n\t\t// Determine tip size\n\t\tnewSize = this.size = this._calculateSize(corner);\n\t\ttip.css({\n\t\t\twidth: newSize[0],\n\t\t\theight: newSize[1],\n\t\t\tlineHeight: newSize[1]+'px'\n\t\t});\n\n\t\t// Calculate tip translation\n\t\tif(corner.precedance === Y) {\n\t\t\ttranslate = [\n\t\t\t\tround(mimic.x === LEFT ? border : mimic.x === RIGHT ? newSize[0] - curSize[0] - border : (newSize[0] - curSize[0]) / 2),\n\t\t\t\tround(mimic.y === TOP ? newSize[1] - curSize[1] : 0)\n\t\t\t];\n\t\t}\n\t\telse {\n\t\t\ttranslate = [\n\t\t\t\tround(mimic.x === LEFT ? newSize[0] - curSize[0] : 0),\n\t\t\t\tround(mimic.y === TOP ? border : mimic.y === BOTTOM ? newSize[1] - curSize[1] - border : (newSize[1] - curSize[1]) / 2)\n\t\t\t];\n\t\t}\n\n\t\t// Canvas drawing implementation\n\t\tif(HASCANVAS) {\n\t\t\t// Grab canvas context and clear/save it\n\t\t\tcontext = inner[0].getContext('2d');\n\t\t\tcontext.restore(); context.save();\n\t\t\tcontext.clearRect(0,0,6000,6000);\n\n\t\t\t// Calculate coordinates\n\t\t\tcoords = this._calculateTip(mimic, curSize, SCALE);\n\t\t\tbigCoords = this._calculateTip(mimic, this.size, SCALE);\n\n\t\t\t// Set the canvas size using calculated size\n\t\t\tinner.attr(WIDTH, newSize[0] * SCALE).attr(HEIGHT, newSize[1] * SCALE);\n\t\t\tinner.css(WIDTH, newSize[0]).css(HEIGHT, newSize[1]);\n\n\t\t\t// Draw the outer-stroke tip\n\t\t\tthis._drawCoords(context, bigCoords);\n\t\t\tcontext.fillStyle = color[1];\n\t\t\tcontext.fill();\n\n\t\t\t// Draw the actual tip\n\t\t\tcontext.translate(translate[0] * SCALE, translate[1] * SCALE);\n\t\t\tthis._drawCoords(context, coords);\n\t\t\tcontext.fillStyle = color[0];\n\t\t\tcontext.fill();\n\t\t}\n\n\t\t// VML (IE Proprietary implementation)\n\t\telse {\n\t\t\t// Calculate coordinates\n\t\t\tcoords = this._calculateTip(mimic);\n\n\t\t\t// Setup coordinates string\n\t\t\tcoords = 'm' + coords[0] + ',' + coords[1] + ' l' + coords[2] +\n\t\t\t\t',' + coords[3] + ' ' + coords[4] + ',' + coords[5] + ' xe';\n\n\t\t\t// Setup VML-specific offset for pixel-perfection\n\t\t\ttranslate[2] = border && /^(r|b)/i.test(corner.string()) ?\n\t\t\t\tBROWSER.ie === 8 ? 2 : 1 : 0;\n\n\t\t\t// Set initial CSS\n\t\t\tinner.css({\n\t\t\t\tcoordsize: newSize[0]+border + ' ' + newSize[1]+border,\n\t\t\t\tantialias: ''+(mimic.string().indexOf(CENTER) > -1),\n\t\t\t\tleft: translate[0] - translate[2] * Number(precedance === X),\n\t\t\t\ttop: translate[1] - translate[2] * Number(precedance === Y),\n\t\t\t\twidth: newSize[0] + border,\n\t\t\t\theight: newSize[1] + border\n\t\t\t})\n\t\t\t.each(function(i) {\n\t\t\t\tvar $this = $(this);\n\n\t\t\t\t// Set shape specific attributes\n\t\t\t\t$this[ $this.prop ? 'prop' : 'attr' ]({\n\t\t\t\t\tcoordsize: newSize[0]+border + ' ' + newSize[1]+border,\n\t\t\t\t\tpath: coords,\n\t\t\t\t\tfillcolor: color[0],\n\t\t\t\t\tfilled: !!i,\n\t\t\t\t\tstroked: !i\n\t\t\t\t})\n\t\t\t\t.toggle(!!(border || i));\n\n\t\t\t\t// Check if border is enabled and add stroke element\n\t\t\t\t!i && $this.html( createVML(\n\t\t\t\t\t'stroke', 'weight=\"'+border*2+'px\" color=\"'+color[1]+'\" miterlimit=\"1000\" joinstyle=\"miter\"'\n\t\t\t\t) );\n\t\t\t});\n\t\t}\n\n\t\t// Opera bug #357 - Incorrect tip position\n\t\t// https://github.com/Craga89/qTip2/issues/367\n\t\twindow.opera && setTimeout(function() {\n\t\t\telements.tip.css({\n\t\t\t\tdisplay: 'inline-block',\n\t\t\t\tvisibility: 'visible'\n\t\t\t});\n\t\t}, 1);\n\n\t\t// Position if needed\n\t\tif(position !== FALSE) { this.calculate(corner, newSize); }\n\t},\n\n\tcalculate: function(corner, size) {\n\t\tif(!this.enabled) { return FALSE; }\n\n\t\tvar self = this,\n\t\t\telements = this.qtip.elements,\n\t\t\ttip = this.element,\n\t\t\tuserOffset = this.options.offset,\n\t\t\tposition = {},\n\t\t\tprecedance, corners;\n\n\t\t// Inherit corner if not provided\n\t\tcorner = corner || this.corner;\n\t\tprecedance = corner.precedance;\n\n\t\t// Determine which tip dimension to use for adjustment\n\t\tsize = size || this._calculateSize(corner);\n\n\t\t// Setup corners and offset array\n\t\tcorners = [ corner.x, corner.y ];\n\t\tif(precedance === X) { corners.reverse(); }\n\n\t\t// Calculate tip position\n\t\t$.each(corners, function(i, side) {\n\t\t\tvar b, bc, br;\n\n\t\t\tif(side === CENTER) {\n\t\t\t\tb = precedance === Y ? LEFT : TOP;\n\t\t\t\tposition[ b ] = '50%';\n\t\t\t\tposition[MARGIN+'-' + b] = -Math.round(size[ precedance === Y ? 0 : 1 ] / 2) + userOffset;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tb = self._parseWidth(corner, side, elements.tooltip);\n\t\t\t\tbc = self._parseWidth(corner, side, elements.content);\n\t\t\t\tbr = self._parseRadius(corner);\n\n\t\t\t\tposition[ side ] = Math.max(-self.border, i ? bc : userOffset + (br > b ? br : -b));\n\t\t\t}\n\t\t});\n\n\t\t// Adjust for tip size\n\t\tposition[ corner[precedance] ] -= size[ precedance === X ? 0 : 1 ];\n\n\t\t// Set and return new position\n\t\ttip.css({ margin: '', top: '', bottom: '', left: '', right: '' }).css(position);\n\t\treturn position;\n\t},\n\n\treposition: function(event, api, pos) {\n\t\tif(!this.enabled) { return; }\n\n\t\tvar cache = api.cache,\n\t\t\tnewCorner = this.corner.clone(),\n\t\t\tadjust = pos.adjusted,\n\t\t\tmethod = api.options.position.adjust.method.split(' '),\n\t\t\thorizontal = method[0],\n\t\t\tvertical = method[1] || method[0],\n\t\t\tshift = { left: FALSE, top: FALSE, x: 0, y: 0 },\n\t\t\toffset, css = {}, props;\n\n\t\tfunction shiftflip(direction, precedance, popposite, side, opposite) {\n\t\t\t// Horizontal - Shift or flip method\n\t\t\tif(direction === SHIFT && newCorner.precedance === precedance && adjust[side] && newCorner[popposite] !== CENTER) {\n\t\t\t\tnewCorner.precedance = newCorner.precedance === X ? Y : X;\n\t\t\t}\n\t\t\telse if(direction !== SHIFT && adjust[side]){\n\t\t\t\tnewCorner[precedance] = newCorner[precedance] === CENTER ?\n\t\t\t\t\tadjust[side] > 0 ? side : opposite :\n\t\t\t\t\tnewCorner[precedance] === side ? opposite : side;\n\t\t\t}\n\t\t}\n\n\t\tfunction shiftonly(xy, side, opposite) {\n\t\t\tif(newCorner[xy] === CENTER) {\n\t\t\t\tcss[MARGIN+'-'+side] = shift[xy] = offset[MARGIN+'-'+side] - adjust[side];\n\t\t\t}\n\t\t\telse {\n\t\t\t\tprops = offset[opposite] !== undefined ?\n\t\t\t\t\t[ adjust[side], -offset[side] ] : [ -adjust[side], offset[side] ];\n\n\t\t\t\tif( (shift[xy] = Math.max(props[0], props[1])) > props[0] ) {\n\t\t\t\t\tpos[side] -= adjust[side];\n\t\t\t\t\tshift[side] = FALSE;\n\t\t\t\t}\n\n\t\t\t\tcss[ offset[opposite] !== undefined ? opposite : side ] = shift[xy];\n\t\t\t}\n\t\t}\n\n\t\t// If our tip position isn't fixed e.g. doesn't adjust with viewport...\n\t\tif(this.corner.fixed !== TRUE) {\n\t\t\t// Perform shift/flip adjustments\n\t\t\tshiftflip(horizontal, X, Y, LEFT, RIGHT);\n\t\t\tshiftflip(vertical, Y, X, TOP, BOTTOM);\n\n\t\t\t// Update and redraw the tip if needed (check cached details of last drawn tip)\n\t\t\tif(newCorner.string() !== cache.corner.string() || cache.cornerTop !== adjust.top || cache.cornerLeft !== adjust.left) {\n\t\t\t\tthis.update(newCorner, FALSE);\n\t\t\t}\n\t\t}\n\n\t\t// Setup tip offset properties\n\t\toffset = this.calculate(newCorner);\n\n\t\t// Readjust offset object to make it left/top\n\t\tif(offset.right !== undefined) { offset.left = -offset.right; }\n\t\tif(offset.bottom !== undefined) { offset.top = -offset.bottom; }\n\t\toffset.user = this.offset;\n\n\t\t// Perform shift adjustments\n\t\tshift.left = horizontal === SHIFT && !!adjust.left;\n\t\tif(shift.left) {\n\t\t\tshiftonly(X, LEFT, RIGHT);\n\t\t}\n\t\tshift.top = vertical === SHIFT && !!adjust.top;\n\t\tif(shift.top) {\n\t\t\tshiftonly(Y, TOP, BOTTOM);\n\t\t}\n\n\t\t/*\n\t\t* If the tip is adjusted in both dimensions, or in a\n\t\t* direction that would cause it to be anywhere but the\n\t\t* outer border, hide it!\n\t\t*/\n\t\tthis.element.css(css).toggle(\n\t\t\t!(shift.x && shift.y || newCorner.x === CENTER && shift.y || newCorner.y === CENTER && shift.x)\n\t\t);\n\n\t\t// Adjust position to accomodate tip dimensions\n\t\tpos.left -= offset.left.charAt ? offset.user :\n\t\t\thorizontal !== SHIFT || shift.top || !shift.left && !shift.top ? offset.left + this.border : 0;\n\t\tpos.top -= offset.top.charAt ? offset.user :\n\t\t\tvertical !== SHIFT || shift.left || !shift.left && !shift.top ? offset.top + this.border : 0;\n\n\t\t// Cache details\n\t\tcache.cornerLeft = adjust.left; cache.cornerTop = adjust.top;\n\t\tcache.corner = newCorner.clone();\n\t},\n\n\tdestroy: function() {\n\t\t// Unbind events\n\t\tthis.qtip._unbind(this.qtip.tooltip, this._ns);\n\n\t\t// Remove the tip element(s)\n\t\tif(this.qtip.elements.tip) {\n\t\t\tthis.qtip.elements.tip.find('*')\n\t\t\t\t.remove().end().remove();\n\t\t}\n\t}\n});\n\nTIP = PLUGINS.tip = function(api) {\n\treturn new Tip(api, api.options.style.tip);\n};\n\n// Initialize tip on render\nTIP.initialize = 'render';\n\n// Setup plugin sanitization options\nTIP.sanitize = function(options) {\n\tif(options.style && 'tip' in options.style) {\n\t\tvar opts = options.style.tip;\n\t\tif(typeof opts !== 'object') { opts = options.style.tip = { corner: opts }; }\n\t\tif(!(/string|boolean/i).test(typeof opts.corner)) { opts.corner = TRUE; }\n\t}\n};\n\n// Add new option checks for the plugin\nCHECKS.tip = {\n\t'^position.my|style.tip.(corner|mimic|border)$': function() {\n\t\t// Make sure a tip can be drawn\n\t\tthis.create();\n\n\t\t// Reposition the tooltip\n\t\tthis.qtip.reposition();\n\t},\n\t'^style.tip.(height|width)$': function(obj) {\n\t\t// Re-set dimensions and redraw the tip\n\t\tthis.size = [ obj.width, obj.height ];\n\t\tthis.update();\n\n\t\t// Reposition the tooltip\n\t\tthis.qtip.reposition();\n\t},\n\t'^content.title|style.(classes|widget)$': function() {\n\t\tthis.update();\n\t}\n};\n\n// Extend original qTip defaults\n$.extend(TRUE, QTIP.defaults, {\n\tstyle: {\n\t\ttip: {\n\t\t\tcorner: TRUE,\n\t\t\tmimic: FALSE,\n\t\t\twidth: 6,\n\t\t\theight: 6,\n\t\t\tborder: TRUE,\n\t\t\toffset: 0\n\t\t}\n\t}\n});\n;var MODAL, OVERLAY,\n\tMODALCLASS = 'qtip-modal',\n\tMODALSELECTOR = '.'+MODALCLASS;\n\nOVERLAY = function()\n{\n\tvar self = this,\n\t\tfocusableElems = {},\n\t\tcurrent,\n\t\tprevState,\n\t\telem;\n\n\t// Modified code from jQuery UI 1.10.0 source\n\t// http://code.jquery.com/ui/1.10.0/jquery-ui.js\n\tfunction focusable(element) {\n\t\t// Use the defined focusable checker when possible\n\t\tif($.expr[':'].focusable) { return $.expr[':'].focusable; }\n\n\t\tvar isTabIndexNotNaN = !isNaN($.attr(element, 'tabindex')),\n\t\t\tnodeName = element.nodeName && element.nodeName.toLowerCase(),\n\t\t\tmap, mapName, img;\n\n\t\tif('area' === nodeName) {\n\t\t\tmap = element.parentNode;\n\t\t\tmapName = map.name;\n\t\t\tif(!element.href || !mapName || map.nodeName.toLowerCase() !== 'map') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\timg = $('img[usemap=#' + mapName + ']')[0];\n\t\t\treturn !!img && img.is(':visible');\n\t\t}\n\n\t\treturn /input|select|textarea|button|object/.test( nodeName ) ?\n\t\t\t!element.disabled :\n\t\t\t'a' === nodeName ?\n\t\t\t\telement.href || isTabIndexNotNaN :\n\t\t\t\tisTabIndexNotNaN\n\t\t;\n\t}\n\n\t// Focus inputs using cached focusable elements (see update())\n\tfunction focusInputs(blurElems) {\n\t\t// Blurring body element in IE causes window.open windows to unfocus!\n\t\tif(focusableElems.length < 1 && blurElems.length) { blurElems.not('body').blur(); }\n\n\t\t// Focus the inputs\n\t\telse { focusableElems.first().focus(); }\n\t}\n\n\t// Steal focus from elements outside tooltip\n\tfunction stealFocus(event) {\n\t\tif(!elem.is(':visible')) { return; }\n\n\t\tvar target = $(event.target),\n\t\t\ttooltip = current.tooltip,\n\t\t\tcontainer = target.closest(SELECTOR),\n\t\t\ttargetOnTop;\n\n\t\t// Determine if input container target is above this\n\t\ttargetOnTop = container.length < 1 ? FALSE :\n\t\t\tparseInt(container[0].style.zIndex, 10) > parseInt(tooltip[0].style.zIndex, 10);\n\n\t\t// If we're showing a modal, but focus has landed on an input below\n\t\t// this modal, divert focus to the first visible input in this modal\n\t\t// or if we can't find one... the tooltip itself\n\t\tif(!targetOnTop && target.closest(SELECTOR)[0] !== tooltip[0]) {\n\t\t\tfocusInputs(target);\n\t\t}\n\t}\n\n\t$.extend(self, {\n\t\tinit: function() {\n\t\t\t// Create document overlay\n\t\t\telem = self.elem = $('<div />', {\n\t\t\t\tid: 'qtip-overlay',\n\t\t\t\thtml: '<div></div>',\n\t\t\t\tmousedown: function() { return FALSE; }\n\t\t\t})\n\t\t\t.hide();\n\n\t\t\t// Make sure we can't focus anything outside the tooltip\n\t\t\t$(document.body).bind('focusin'+MODALSELECTOR, stealFocus);\n\n\t\t\t// Apply keyboard \"Escape key\" close handler\n\t\t\t$(document).bind('keydown'+MODALSELECTOR, function(event) {\n\t\t\t\tif(current && current.options.show.modal.escape && event.keyCode === 27) {\n\t\t\t\t\tcurrent.hide(event);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Apply click handler for blur option\n\t\t\telem.bind('click'+MODALSELECTOR, function(event) {\n\t\t\t\tif(current && current.options.show.modal.blur) {\n\t\t\t\t\tcurrent.hide(event);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn self;\n\t\t},\n\n\t\tupdate: function(api) {\n\t\t\t// Update current API reference\n\t\t\tcurrent = api;\n\n\t\t\t// Update focusable elements if enabled\n\t\t\tif(api.options.show.modal.stealfocus !== FALSE) {\n\t\t\t\tfocusableElems = api.tooltip.find('*').filter(function() {\n\t\t\t\t\treturn focusable(this);\n\t\t\t\t});\n\t\t\t}\n\t\t\telse { focusableElems = []; }\n\t\t},\n\n\t\ttoggle: function(api, state, duration) {\n\t\t\tvar tooltip = api.tooltip,\n\t\t\t\toptions = api.options.show.modal,\n\t\t\t\teffect = options.effect,\n\t\t\t\ttype = state ? 'show': 'hide',\n\t\t\t\tvisible = elem.is(':visible'),\n\t\t\t\tvisibleModals = $(MODALSELECTOR).filter(':visible:not(:animated)').not(tooltip);\n\n\t\t\t// Set active tooltip API reference\n\t\t\tself.update(api);\n\n\t\t\t// If the modal can steal the focus...\n\t\t\t// Blur the current item and focus anything in the modal we an\n\t\t\tif(state && options.stealfocus !== FALSE) {\n\t\t\t\tfocusInputs( $(':focus') );\n\t\t\t}\n\n\t\t\t// Toggle backdrop cursor style on show\n\t\t\telem.toggleClass('blurs', options.blur);\n\n\t\t\t// Append to body on show\n\t\t\tif(state) {\n\t\t\t\telem.appendTo(document.body);\n\t\t\t}\n\n\t\t\t// Prevent modal from conflicting with show.solo, and don't hide backdrop is other modals are visible\n\t\t\tif(elem.is(':animated') && visible === state && prevState !== FALSE || !state && visibleModals.length) {\n\t\t\t\treturn self;\n\t\t\t}\n\n\t\t\t// Stop all animations\n\t\t\telem.stop(TRUE, FALSE);\n\n\t\t\t// Use custom function if provided\n\t\t\tif($.isFunction(effect)) {\n\t\t\t\teffect.call(elem, state);\n\t\t\t}\n\n\t\t\t// If no effect type is supplied, use a simple toggle\n\t\t\telse if(effect === FALSE) {\n\t\t\t\telem[ type ]();\n\t\t\t}\n\n\t\t\t// Use basic fade function\n\t\t\telse {\n\t\t\t\telem.fadeTo( parseInt(duration, 10) || 90, state ? 1 : 0, function() {\n\t\t\t\t\tif(!state) { elem.hide(); }\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Reset position and detach from body on hide\n\t\t\tif(!state) {\n\t\t\t\telem.queue(function(next) {\n\t\t\t\t\telem.css({ left: '', top: '' });\n\t\t\t\t\tif(!$(MODALSELECTOR).length) { elem.detach(); }\n\t\t\t\t\tnext();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Cache the state\n\t\t\tprevState = state;\n\n\t\t\t// If the tooltip is destroyed, set reference to null\n\t\t\tif(current.destroyed) { current = NULL; }\n\n\t\t\treturn self;\n\t\t}\n\t});\n\n\tself.init();\n};\nOVERLAY = new OVERLAY();\n\nfunction Modal(api, options) {\n\tthis.options = options;\n\tthis._ns = '-modal';\n\n\tthis.qtip = api;\n\tthis.init(api);\n}\n\n$.extend(Modal.prototype, {\n\tinit: function(qtip) {\n\t\tvar tooltip = qtip.tooltip;\n\n\t\t// If modal is disabled... return\n\t\tif(!this.options.on) { return this; }\n\n\t\t// Set overlay reference\n\t\tqtip.elements.overlay = OVERLAY.elem;\n\n\t\t// Add unique attribute so we can grab modal tooltips easily via a SELECTOR, and set z-index\n\t\ttooltip.addClass(MODALCLASS).css('z-index', QTIP.modal_zindex + $(MODALSELECTOR).length);\n\n\t\t// Apply our show/hide/focus modal events\n\t\tqtip._bind(tooltip, ['tooltipshow', 'tooltiphide'], function(event, api, duration) {\n\t\t\tvar oEvent = event.originalEvent;\n\n\t\t\t// Make sure mouseout doesn't trigger a hide when showing the modal and mousing onto backdrop\n\t\t\tif(event.target === tooltip[0]) {\n\t\t\t\tif(oEvent && event.type === 'tooltiphide' && /mouse(leave|enter)/.test(oEvent.type) && $(oEvent.relatedTarget).closest(OVERLAY.elem[0]).length) {\n\t\t\t\t\t/* eslint-disable no-empty */\n\t\t\t\t\ttry { event.preventDefault(); }\n\t\t\t\t\tcatch(e) {}\n\t\t\t\t\t/* eslint-enable no-empty */\n\t\t\t\t}\n\t\t\t\telse if(!oEvent || oEvent && oEvent.type !== 'tooltipsolo') {\n\t\t\t\t\tthis.toggle(event, event.type === 'tooltipshow', duration);\n\t\t\t\t}\n\t\t\t}\n\t\t}, this._ns, this);\n\n\t\t// Adjust modal z-index on tooltip focus\n\t\tqtip._bind(tooltip, 'tooltipfocus', function(event, api) {\n\t\t\t// If focus was cancelled before it reached us, don't do anything\n\t\t\tif(event.isDefaultPrevented() || event.target !== tooltip[0]) { return; }\n\n\t\t\tvar qtips = $(MODALSELECTOR),\n\n\t\t\t// Keep the modal's lower than other, regular qtips\n\t\t\tnewIndex = QTIP.modal_zindex + qtips.length,\n\t\t\tcurIndex = parseInt(tooltip[0].style.zIndex, 10);\n\n\t\t\t// Set overlay z-index\n\t\t\tOVERLAY.elem[0].style.zIndex = newIndex - 1;\n\n\t\t\t// Reduce modal z-index's and keep them properly ordered\n\t\t\tqtips.each(function() {\n\t\t\t\tif(this.style.zIndex > curIndex) {\n\t\t\t\t\tthis.style.zIndex -= 1;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Fire blur event for focused tooltip\n\t\t\tqtips.filter('.' + CLASS_FOCUS).qtip('blur', event.originalEvent);\n\n\t\t\t// Set the new z-index\n\t\t\ttooltip.addClass(CLASS_FOCUS)[0].style.zIndex = newIndex;\n\n\t\t\t// Set current\n\t\t\tOVERLAY.update(api);\n\n\t\t\t// Prevent default handling\n\t\t\t/* eslint-disable no-empty */\n\t\t\ttry { event.preventDefault(); }\n\t\t\tcatch(e) {}\n\t\t\t/* eslint-enable no-empty */\n\t\t}, this._ns, this);\n\n\t\t// Focus any other visible modals when this one hides\n\t\tqtip._bind(tooltip, 'tooltiphide', function(event) {\n\t\t\tif(event.target === tooltip[0]) {\n\t\t\t\t$(MODALSELECTOR).filter(':visible').not(tooltip).last().qtip('focus', event);\n\t\t\t}\n\t\t}, this._ns, this);\n\t},\n\n\ttoggle: function(event, state, duration) {\n\t\t// Make sure default event hasn't been prevented\n\t\tif(event && event.isDefaultPrevented()) { return this; }\n\n\t\t// Toggle it\n\t\tOVERLAY.toggle(this.qtip, !!state, duration);\n\t},\n\n\tdestroy: function() {\n\t\t// Remove modal class\n\t\tthis.qtip.tooltip.removeClass(MODALCLASS);\n\n\t\t// Remove bound events\n\t\tthis.qtip._unbind(this.qtip.tooltip, this._ns);\n\n\t\t// Delete element reference\n\t\tOVERLAY.toggle(this.qtip, FALSE);\n\t\tdelete this.qtip.elements.overlay;\n\t}\n});\n\n\nMODAL = PLUGINS.modal = function(api) {\n\treturn new Modal(api, api.options.show.modal);\n};\n\n// Setup sanitiztion rules\nMODAL.sanitize = function(opts) {\n\tif(opts.show) {\n\t\tif(typeof opts.show.modal !== 'object') { opts.show.modal = { on: !!opts.show.modal }; }\n\t\telse if(typeof opts.show.modal.on === 'undefined') { opts.show.modal.on = TRUE; }\n\t}\n};\n\n// Base z-index for all modal tooltips (use qTip core z-index as a base)\n/* eslint-disable camelcase */\nQTIP.modal_zindex = QTIP.zindex - 200;\n/* eslint-enable camelcase */\n\n// Plugin needs to be initialized on render\nMODAL.initialize = 'render';\n\n// Setup option set checks\nCHECKS.modal = {\n\t'^show.modal.(on|blur)$': function() {\n\t\t// Initialise\n\t\tthis.destroy();\n\t\tthis.init();\n\n\t\t// Show the modal if not visible already and tooltip is visible\n\t\tthis.qtip.elems.overlay.toggle(\n\t\t\tthis.qtip.tooltip[0].offsetWidth > 0\n\t\t);\n\t}\n};\n\n// Extend original api defaults\n$.extend(TRUE, QTIP.defaults, {\n\tshow: {\n\t\tmodal: {\n\t\t\ton: FALSE,\n\t\t\teffect: TRUE,\n\t\t\tblur: TRUE,\n\t\t\tstealfocus: TRUE,\n\t\t\tescape: TRUE\n\t\t}\n\t}\n});\n;PLUGINS.viewport = function(api, position, posOptions, targetWidth, targetHeight, elemWidth, elemHeight)\n{\n\tvar target = posOptions.target,\n\t\ttooltip = api.elements.tooltip,\n\t\tmy = posOptions.my,\n\t\tat = posOptions.at,\n\t\tadjust = posOptions.adjust,\n\t\tmethod = adjust.method.split(' '),\n\t\tmethodX = method[0],\n\t\tmethodY = method[1] || method[0],\n\t\tviewport = posOptions.viewport,\n\t\tcontainer = posOptions.container,\n\t\tadjusted = { left: 0, top: 0 },\n\t\tfixed, newMy, containerOffset, containerStatic,\n\t\tviewportWidth, viewportHeight, viewportScroll, viewportOffset;\n\n\t// If viewport is not a jQuery element, or it's the window/document, or no adjustment method is used... return\n\tif(!viewport.jquery || target[0] === window || target[0] === document.body || adjust.method === 'none') {\n\t\treturn adjusted;\n\t}\n\n\t// Cach container details\n\tcontainerOffset = container.offset() || adjusted;\n\tcontainerStatic = container.css('position') === 'static';\n\n\t// Cache our viewport details\n\tfixed = tooltip.css('position') === 'fixed';\n\tviewportWidth = viewport[0] === window ? viewport.width() : viewport.outerWidth(FALSE);\n\tviewportHeight = viewport[0] === window ? viewport.height() : viewport.outerHeight(FALSE);\n\tviewportScroll = { left: fixed ? 0 : viewport.scrollLeft(), top: fixed ? 0 : viewport.scrollTop() };\n\tviewportOffset = viewport.offset() || adjusted;\n\n\t// Generic calculation method\n\tfunction calculate(side, otherSide, type, adjustment, side1, side2, lengthName, targetLength, elemLength) {\n\t\tvar initialPos = position[side1],\n\t\t\tmySide = my[side],\n\t\t\tatSide = at[side],\n\t\t\tisShift = type === SHIFT,\n\t\t\tmyLength = mySide === side1 ? elemLength : mySide === side2 ? -elemLength : -elemLength / 2,\n\t\t\tatLength = atSide === side1 ? targetLength : atSide === side2 ? -targetLength : -targetLength / 2,\n\t\t\tsideOffset = viewportScroll[side1] + viewportOffset[side1] - (containerStatic ? 0 : containerOffset[side1]),\n\t\t\toverflow1 = sideOffset - initialPos,\n\t\t\toverflow2 = initialPos + elemLength - (lengthName === WIDTH ? viewportWidth : viewportHeight) - sideOffset,\n\t\t\toffset = myLength - (my.precedance === side || mySide === my[otherSide] ? atLength : 0) - (atSide === CENTER ? targetLength / 2 : 0);\n\n\t\t// shift\n\t\tif(isShift) {\n\t\t\toffset = (mySide === side1 ? 1 : -1) * myLength;\n\n\t\t\t// Adjust position but keep it within viewport dimensions\n\t\t\tposition[side1] += overflow1 > 0 ? overflow1 : overflow2 > 0 ? -overflow2 : 0;\n\t\t\tposition[side1] = Math.max(\n\t\t\t\t-containerOffset[side1] + viewportOffset[side1],\n\t\t\t\tinitialPos - offset,\n\t\t\t\tMath.min(\n\t\t\t\t\tMath.max(\n\t\t\t\t\t\t-containerOffset[side1] + viewportOffset[side1] + (lengthName === WIDTH ? viewportWidth : viewportHeight),\n\t\t\t\t\t\tinitialPos + offset\n\t\t\t\t\t),\n\t\t\t\t\tposition[side1],\n\n\t\t\t\t\t// Make sure we don't adjust complete off the element when using 'center'\n\t\t\t\t\tmySide === 'center' ? initialPos - myLength : 1E9\n\t\t\t\t)\n\t\t\t);\n\n\t\t}\n\n\t\t// flip/flipinvert\n\t\telse {\n\t\t\t// Update adjustment amount depending on if using flipinvert or flip\n\t\t\tadjustment *= type === FLIPINVERT ? 2 : 0;\n\n\t\t\t// Check for overflow on the left/top\n\t\t\tif(overflow1 > 0 && (mySide !== side1 || overflow2 > 0)) {\n\t\t\t\tposition[side1] -= offset + adjustment;\n\t\t\t\tnewMy.invert(side, side1);\n\t\t\t}\n\n\t\t\t// Check for overflow on the bottom/right\n\t\t\telse if(overflow2 > 0 && (mySide !== side2 || overflow1 > 0) ) {\n\t\t\t\tposition[side1] -= (mySide === CENTER ? -offset : offset) + adjustment;\n\t\t\t\tnewMy.invert(side, side2);\n\t\t\t}\n\n\t\t\t// Make sure we haven't made things worse with the adjustment and reset if so\n\t\t\tif(position[side1] < viewportScroll[side1] && -position[side1] > overflow2) {\n\t\t\t\tposition[side1] = initialPos; newMy = my.clone();\n\t\t\t}\n\t\t}\n\n\t\treturn position[side1] - initialPos;\n\t}\n\n\t// Set newMy if using flip or flipinvert methods\n\tif(methodX !== 'shift' || methodY !== 'shift') { newMy = my.clone(); }\n\n\t// Adjust position based onviewport and adjustment options\n\tadjusted = {\n\t\tleft: methodX !== 'none' ? calculate( X, Y, methodX, adjust.x, LEFT, RIGHT, WIDTH, targetWidth, elemWidth ) : 0,\n\t\ttop: methodY !== 'none' ? calculate( Y, X, methodY, adjust.y, TOP, BOTTOM, HEIGHT, targetHeight, elemHeight ) : 0,\n\t\tmy: newMy\n\t};\n\n\treturn adjusted;\n};\n;PLUGINS.polys = {\n\t// POLY area coordinate calculator\n\t//\tSpecial thanks to Ed Cradock for helping out with this.\n\t//\tUses a binary search algorithm to find suitable coordinates.\n\tpolygon: function(baseCoords, corner) {\n\t\tvar result = {\n\t\t\twidth: 0, height: 0,\n\t\t\tposition: {\n\t\t\t\ttop: 1e10, right: 0,\n\t\t\t\tbottom: 0, left: 1e10\n\t\t\t},\n\t\t\tadjustable: FALSE\n\t\t},\n\t\ti = 0, next,\n\t\tcoords = [],\n\t\tcompareX = 1, compareY = 1,\n\t\trealX = 0, realY = 0,\n\t\tnewWidth, newHeight;\n\n\t\t// First pass, sanitize coords and determine outer edges\n\t\ti = baseCoords.length; \n\t\twhile(i--) {\n\t\t\tnext = [ parseInt(baseCoords[--i], 10), parseInt(baseCoords[i+1], 10) ];\n\n\t\t\tif(next[0] > result.position.right){ result.position.right = next[0]; }\n\t\t\tif(next[0] < result.position.left){ result.position.left = next[0]; }\n\t\t\tif(next[1] > result.position.bottom){ result.position.bottom = next[1]; }\n\t\t\tif(next[1] < result.position.top){ result.position.top = next[1]; }\n\n\t\t\tcoords.push(next);\n\t\t}\n\n\t\t// Calculate height and width from outer edges\n\t\tnewWidth = result.width = Math.abs(result.position.right - result.position.left);\n\t\tnewHeight = result.height = Math.abs(result.position.bottom - result.position.top);\n\n\t\t// If it's the center corner...\n\t\tif(corner.abbrev() === 'c') {\n\t\t\tresult.position = {\n\t\t\t\tleft: result.position.left + result.width / 2,\n\t\t\t\ttop: result.position.top + result.height / 2\n\t\t\t};\n\t\t}\n\t\telse {\n\t\t\t// Second pass, use a binary search algorithm to locate most suitable coordinate\n\t\t\twhile(newWidth > 0 && newHeight > 0 && compareX > 0 && compareY > 0)\n\t\t\t{\n\t\t\t\tnewWidth = Math.floor(newWidth / 2);\n\t\t\t\tnewHeight = Math.floor(newHeight / 2);\n\n\t\t\t\tif(corner.x === LEFT){ compareX = newWidth; }\n\t\t\t\telse if(corner.x === RIGHT){ compareX = result.width - newWidth; }\n\t\t\t\telse{ compareX += Math.floor(newWidth / 2); }\n\n\t\t\t\tif(corner.y === TOP){ compareY = newHeight; }\n\t\t\t\telse if(corner.y === BOTTOM){ compareY = result.height - newHeight; }\n\t\t\t\telse{ compareY += Math.floor(newHeight / 2); }\n\n\t\t\t\ti = coords.length;\n\t\t\t\twhile(i--)\n\t\t\t\t{\n\t\t\t\t\tif(coords.length < 2){ break; }\n\n\t\t\t\t\trealX = coords[i][0] - result.position.left;\n\t\t\t\t\trealY = coords[i][1] - result.position.top;\n\n\t\t\t\t\tif(\n\t\t\t\t\t\tcorner.x === LEFT && realX >= compareX ||\n\t\t\t\t\t\tcorner.x === RIGHT && realX <= compareX ||\n\t\t\t\t\t\tcorner.x === CENTER && (realX < compareX || realX > result.width - compareX) ||\n\t\t\t\t\t\tcorner.y === TOP && realY >= compareY ||\n\t\t\t\t\t\tcorner.y === BOTTOM && realY <= compareY ||\n\t\t\t\t\t\tcorner.y === CENTER && (realY < compareY || realY > result.height - compareY)) {\n\t\t\t\t\t\tcoords.splice(i, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tresult.position = { left: coords[0][0], top: coords[0][1] };\n\t\t}\n\n\t\treturn result;\n\t},\n\n\trect: function(ax, ay, bx, by) {\n\t\treturn {\n\t\t\twidth: Math.abs(bx - ax),\n\t\t\theight: Math.abs(by - ay),\n\t\t\tposition: {\n\t\t\t\tleft: Math.min(ax, bx),\n\t\t\t\ttop: Math.min(ay, by)\n\t\t\t}\n\t\t};\n\t},\n\n\t_angles: {\n\t\ttc: 3 / 2, tr: 7 / 4, tl: 5 / 4,\n\t\tbc: 1 / 2, br: 1 / 4, bl: 3 / 4,\n\t\trc: 2, lc: 1, c: 0\n\t},\n\tellipse: function(cx, cy, rx, ry, corner) {\n\t\tvar c = PLUGINS.polys._angles[ corner.abbrev() ],\n\t\t\trxc = c === 0 ? 0 : rx * Math.cos( c * Math.PI ),\n\t\t\trys = ry * Math.sin( c * Math.PI );\n\n\t\treturn {\n\t\t\twidth: rx * 2 - Math.abs(rxc),\n\t\t\theight: ry * 2 - Math.abs(rys),\n\t\t\tposition: {\n\t\t\t\tleft: cx + rxc,\n\t\t\t\ttop: cy + rys\n\t\t\t},\n\t\t\tadjustable: FALSE\n\t\t};\n\t},\n\tcircle: function(cx, cy, r, corner) {\n\t\treturn PLUGINS.polys.ellipse(cx, cy, r, r, corner);\n\t}\n};\n;PLUGINS.svg = function(api, svg, corner)\n{\n\tvar elem = svg[0],\n\t\troot = $(elem.ownerSVGElement),\n\t\townerDocument = elem.ownerDocument,\n\t\tstrokeWidth2 = (parseInt(svg.css('stroke-width'), 10) || 0) / 2,\n\t\tframeOffset, mtx, transformed,\n\t\tlen, next, i, points,\n\t\tresult, position;\n\n\t// Ascend the parentNode chain until we find an element with getBBox()\n\twhile(!elem.getBBox) { elem = elem.parentNode; }\n\tif(!elem.getBBox || !elem.parentNode) { return FALSE; }\n\n\t// Determine which shape calculation to use\n\tswitch(elem.nodeName) {\n\t\tcase 'ellipse':\n\t\tcase 'circle':\n\t\t\tresult = PLUGINS.polys.ellipse(\n\t\t\t\telem.cx.baseVal.value,\n\t\t\t\telem.cy.baseVal.value,\n\t\t\t\t(elem.rx || elem.r).baseVal.value + strokeWidth2,\n\t\t\t\t(elem.ry || elem.r).baseVal.value + strokeWidth2,\n\t\t\t\tcorner\n\t\t\t);\n\t\tbreak;\n\n\t\tcase 'line':\n\t\tcase 'polygon':\n\t\tcase 'polyline':\n\t\t\t// Determine points object (line has none, so mimic using array)\n\t\t\tpoints = elem.points || [\n\t\t\t\t{ x: elem.x1.baseVal.value, y: elem.y1.baseVal.value },\n\t\t\t\t{ x: elem.x2.baseVal.value, y: elem.y2.baseVal.value }\n\t\t\t];\n\n\t\t\tfor(result = [], i = -1, len = points.numberOfItems || points.length; ++i < len;) {\n\t\t\t\tnext = points.getItem ? points.getItem(i) : points[i];\n\t\t\t\tresult.push.apply(result, [next.x, next.y]);\n\t\t\t}\n\n\t\t\tresult = PLUGINS.polys.polygon(result, corner);\n\t\tbreak;\n\n\t\t// Unknown shape or rectangle? Use bounding box\n\t\tdefault:\n\t\t\tresult = elem.getBBox();\n\t\t\tresult = {\n\t\t\t\twidth: result.width,\n\t\t\t\theight: result.height,\n\t\t\t\tposition: {\n\t\t\t\t\tleft: result.x,\n\t\t\t\t\ttop: result.y\n\t\t\t\t}\n\t\t\t};\n\t\tbreak;\n\t}\n\n\t// Shortcut assignments\n\tposition = result.position;\n\troot = root[0];\n\n\t// Convert position into a pixel value\n\tif(root.createSVGPoint) {\n\t\tmtx = elem.getScreenCTM();\n\t\tpoints = root.createSVGPoint();\n\n\t\tpoints.x = position.left;\n\t\tpoints.y = position.top;\n\t\ttransformed = points.matrixTransform( mtx );\n\t\tposition.left = transformed.x;\n\t\tposition.top = transformed.y;\n\t}\n\n\t// Check the element is not in a child document, and if so, adjust for frame elements offset\n\tif(ownerDocument !== document && api.position.target !== 'mouse') {\n\t\tframeOffset = $((ownerDocument.defaultView || ownerDocument.parentWindow).frameElement).offset();\n\t\tif(frameOffset) {\n\t\t\tposition.left += frameOffset.left;\n\t\t\tposition.top += frameOffset.top;\n\t\t}\n\t}\n\n\t// Adjust by scroll offset of owner document\n\townerDocument = $(ownerDocument);\n\tposition.left += ownerDocument.scrollLeft();\n\tposition.top += ownerDocument.scrollTop();\n\n\treturn result;\n};\n;PLUGINS.imagemap = function(api, area, corner)\n{\n\tif(!area.jquery) { area = $(area); }\n\n\tvar shape = (area.attr('shape') || 'rect').toLowerCase().replace('poly', 'polygon'),\n\t\timage = $('img[usemap=\"#'+area.parent('map').attr('name')+'\"]'),\n\t\tcoordsString = $.trim(area.attr('coords')),\n\t\tcoordsArray = coordsString.replace(/,$/, '').split(','),\n\t\timageOffset, coords, i, result, len;\n\n\t// If we can't find the image using the map...\n\tif(!image.length) { return FALSE; }\n\n\t// Pass coordinates string if polygon\n\tif(shape === 'polygon') {\n\t\tresult = PLUGINS.polys.polygon(coordsArray, corner);\n\t}\n\n\t// Otherwise parse the coordinates and pass them as arguments\n\telse if(PLUGINS.polys[shape]) {\n\t\tfor(i = -1, len = coordsArray.length, coords = []; ++i < len;) {\n\t\t\tcoords.push( parseInt(coordsArray[i], 10) );\n\t\t}\n\n\t\tresult = PLUGINS.polys[shape].apply(\n\t\t\tthis, coords.concat(corner)\n\t\t);\n\t}\n\n\t// If no shapre calculation method was found, return false\n\telse { return FALSE; }\n\n\t// Make sure we account for padding and borders on the image\n\timageOffset = image.offset();\n\timageOffset.left += Math.ceil((image.outerWidth(FALSE) - image.width()) / 2);\n\timageOffset.top += Math.ceil((image.outerHeight(FALSE) - image.height()) / 2);\n\n\t// Add image position to offset coordinates\n\tresult.position.left += imageOffset.left;\n\tresult.position.top += imageOffset.top;\n\n\treturn result;\n};\n;var IE6,\n\n/*\n * BGIFrame adaption (http://plugins.jquery.com/project/bgiframe)\n * Special thanks to Brandon Aaron\n */\nBGIFRAME = '<iframe class=\"qtip-bgiframe\" frameborder=\"0\" tabindex=\"-1\" src=\"javascript:\\'\\';\" ' +\n\t' style=\"display:block; position:absolute; z-index:-1; filter:alpha(opacity=0); ' +\n\t\t'-ms-filter:\"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";\"></iframe>';\n\nfunction Ie6(api) {\n\tthis._ns = 'ie6';\n\n\tthis.qtip = api;\n\tthis.init(api);\n}\n\n$.extend(Ie6.prototype, {\n\t_scroll : function() {\n\t\tvar overlay = this.qtip.elements.overlay;\n\t\toverlay && (overlay[0].style.top = $(window).scrollTop() + 'px');\n\t},\n\n\tinit: function(qtip) {\n\t\tvar tooltip = qtip.tooltip;\n\n\t\t// Create the BGIFrame element if needed\n\t\tif($('select, object').length < 1) {\n\t\t\tthis.bgiframe = qtip.elements.bgiframe = $(BGIFRAME).appendTo(tooltip);\n\n\t\t\t// Update BGIFrame on tooltip move\n\t\t\tqtip._bind(tooltip, 'tooltipmove', this.adjustBGIFrame, this._ns, this);\n\t\t}\n\n\t\t// redraw() container for width/height calculations\n\t\tthis.redrawContainer = $('<div/>', { id: NAMESPACE+'-rcontainer' })\n\t\t\t.appendTo(document.body);\n\n\t\t// Fixup modal plugin if present too\n\t\tif( qtip.elements.overlay && qtip.elements.overlay.addClass('qtipmodal-ie6fix') ) {\n\t\t\tqtip._bind(window, ['scroll', 'resize'], this._scroll, this._ns, this);\n\t\t\tqtip._bind(tooltip, ['tooltipshow'], this._scroll, this._ns, this);\n\t\t}\n\n\t\t// Set dimensions\n\t\tthis.redraw();\n\t},\n\n\tadjustBGIFrame: function() {\n\t\tvar tooltip = this.qtip.tooltip,\n\t\t\tdimensions = {\n\t\t\t\theight: tooltip.outerHeight(FALSE),\n\t\t\t\twidth: tooltip.outerWidth(FALSE)\n\t\t\t},\n\t\t\tplugin = this.qtip.plugins.tip,\n\t\t\ttip = this.qtip.elements.tip,\n\t\t\ttipAdjust, offset;\n\n\t\t// Adjust border offset\n\t\toffset = parseInt(tooltip.css('borderLeftWidth'), 10) || 0;\n\t\toffset = { left: -offset, top: -offset };\n\n\t\t// Adjust for tips plugin\n\t\tif(plugin && tip) {\n\t\t\ttipAdjust = plugin.corner.precedance === 'x' ? [WIDTH, LEFT] : [HEIGHT, TOP];\n\t\t\toffset[ tipAdjust[1] ] -= tip[ tipAdjust[0] ]();\n\t\t}\n\n\t\t// Update bgiframe\n\t\tthis.bgiframe.css(offset).css(dimensions);\n\t},\n\n\t// Max/min width simulator function\n\tredraw: function() {\n\t\tif(this.qtip.rendered < 1 || this.drawing) { return this; }\n\n\t\tvar tooltip = this.qtip.tooltip,\n\t\t\tstyle = this.qtip.options.style,\n\t\t\tcontainer = this.qtip.options.position.container,\n\t\t\tperc, width, max, min;\n\n\t\t// Set drawing flag\n\t\tthis.qtip.drawing = 1;\n\n\t\t// If tooltip has a set height/width, just set it... like a boss!\n\t\tif(style.height) { tooltip.css(HEIGHT, style.height); }\n\t\tif(style.width) { tooltip.css(WIDTH, style.width); }\n\n\t\t// Simulate max/min width if not set width present...\n\t\telse {\n\t\t\t// Reset width and add fluid class\n\t\t\ttooltip.css(WIDTH, '').appendTo(this.redrawContainer);\n\n\t\t\t// Grab our tooltip width (add 1 if odd so we don't get wrapping problems.. huzzah!)\n\t\t\twidth = tooltip.width();\n\t\t\tif(width % 2 < 1) { width += 1; }\n\n\t\t\t// Grab our max/min properties\n\t\t\tmax = tooltip.css('maxWidth') || '';\n\t\t\tmin = tooltip.css('minWidth') || '';\n\n\t\t\t// Parse into proper pixel values\n\t\t\tperc = (max + min).indexOf('%') > -1 ? container.width() / 100 : 0;\n\t\t\tmax = (max.indexOf('%') > -1 ? perc : 1 * parseInt(max, 10)) || width;\n\t\t\tmin = (min.indexOf('%') > -1 ? perc : 1 * parseInt(min, 10)) || 0;\n\n\t\t\t// Determine new dimension size based on max/min/current values\n\t\t\twidth = max + min ? Math.min(Math.max(width, min), max) : width;\n\n\t\t\t// Set the newly calculated width and remvoe fluid class\n\t\t\ttooltip.css(WIDTH, Math.round(width)).appendTo(container);\n\t\t}\n\n\t\t// Set drawing flag\n\t\tthis.drawing = 0;\n\n\t\treturn this;\n\t},\n\n\tdestroy: function() {\n\t\t// Remove iframe\n\t\tthis.bgiframe && this.bgiframe.remove();\n\n\t\t// Remove bound events\n\t\tthis.qtip._unbind([window, this.qtip.tooltip], this._ns);\n\t}\n});\n\nIE6 = PLUGINS.ie6 = function(api) {\n\t// Proceed only if the browser is IE6\n\treturn BROWSER.ie === 6 ? new Ie6(api) : FALSE;\n};\n\nIE6.initialize = 'render';\n\nCHECKS.ie6 = {\n\t'^content|style$': function() {\n\t\tthis.redraw();\n\t}\n};\n;}));\n}( window, document ));\n","/*! tablesorter (FORK) - updated 2020-03-03 (v2.31.3)*/\r\n/* Includes widgets ( storage,uitheme,columns,filter,stickyHeaders,resizable,saveSort ) */\r\n(function(factory){if (typeof define === 'function' && define.amd){define(['jquery'], factory);} else if (typeof module === 'object' && typeof module.exports === 'object'){module.exports = factory(require('jquery'));} else {factory(jQuery);}}(function(jQuery) {\r\n/*! TableSorter (FORK) v2.31.3 *//*\n* Client-side table sorting with ease!\n* @requires jQuery v1.2.6+\n*\n* Copyright (c) 2007 Christian Bach\n* fork maintained by Rob Garrison\n*\n* Examples and original docs at: http://tablesorter.com\n* Dual licensed under the MIT and GPL licenses:\n* http://www.opensource.org/licenses/mit-license.php\n* http://www.gnu.org/licenses/gpl.html\n*\n* @type jQuery\n* @name tablesorter (FORK)\n* @cat Plugins/Tablesorter\n* @author Christian Bach - christian.bach@polyester.se\n* @contributor Rob Garrison - https://github.com/Mottie/tablesorter\n* @docs (fork) - https://mottie.github.io/tablesorter/docs/\n*/\n/*jshint browser:true, jquery:true, unused:false, expr: true */\n;( function( $ ) {\n\t'use strict';\n\tvar ts = $.tablesorter = {\n\n\t\tversion : '2.31.3',\n\n\t\tparsers : [],\n\t\twidgets : [],\n\t\tdefaults : {\n\n\t\t\t// *** appearance\n\t\t\ttheme : 'default', // adds tablesorter-{theme} to the table for styling\n\t\t\twidthFixed : false, // adds colgroup to fix widths of columns\n\t\t\tshowProcessing : false, // show an indeterminate timer icon in the header when the table is sorted or filtered.\n\n\t\t\theaderTemplate : '{content}',// header layout template (HTML ok); {content} = innerHTML, {icon} = <i/> // class from cssIcon\n\t\t\tonRenderTemplate : null, // function( index, template ) { return template; }, // template is a string\n\t\t\tonRenderHeader : null, // function( index ) {}, // nothing to return\n\n\t\t\t// *** functionality\n\t\t\tcancelSelection : true, // prevent text selection in the header\n\t\t\ttabIndex : true, // add tabindex to header for keyboard accessibility\n\t\t\tdateFormat : 'mmddyyyy', // other options: 'ddmmyyy' or 'yyyymmdd'\n\t\t\tsortMultiSortKey : 'shiftKey', // key used to select additional columns\n\t\t\tsortResetKey : 'ctrlKey', // key used to remove sorting on a column\n\t\t\tusNumberFormat : true, // false for German '1.234.567,89' or French '1 234 567,89'\n\t\t\tdelayInit : false, // if false, the parsed table contents will not update until the first sort\n\t\t\tserverSideSorting: false, // if true, server-side sorting should be performed because client-side sorting will be disabled, but the ui and events will still be used.\n\t\t\tresort : true, // default setting to trigger a resort after an 'update', 'addRows', 'updateCell', etc has completed\n\n\t\t\t// *** sort options\n\t\t\theaders : {}, // set sorter, string, empty, locked order, sortInitialOrder, filter, etc.\n\t\t\tignoreCase : true, // ignore case while sorting\n\t\t\tsortForce : null, // column(s) first sorted; always applied\n\t\t\tsortList : [], // Initial sort order; applied initially; updated when manually sorted\n\t\t\tsortAppend : null, // column(s) sorted last; always applied\n\t\t\tsortStable : false, // when sorting two rows with exactly the same content, the original sort order is maintained\n\n\t\t\tsortInitialOrder : 'asc', // sort direction on first click\n\t\t\tsortLocaleCompare: false, // replace equivalent character (accented characters)\n\t\t\tsortReset : false, // third click on the header will reset column to default - unsorted\n\t\t\tsortRestart : false, // restart sort to 'sortInitialOrder' when clicking on previously unsorted columns\n\n\t\t\temptyTo : 'bottom', // sort empty cell to bottom, top, none, zero, emptyMax, emptyMin\n\t\t\tstringTo : 'max', // sort strings in numerical column as max, min, top, bottom, zero\n\t\t\tduplicateSpan : true, // colspan cells in the tbody will have duplicated content in the cache for each spanned column\n\t\t\ttextExtraction : 'basic', // text extraction method/function - function( node, table, cellIndex ) {}\n\t\t\ttextAttribute : 'data-text',// data-attribute that contains alternate cell text (used in default textExtraction function)\n\t\t\ttextSorter : null, // choose overall or specific column sorter function( a, b, direction, table, columnIndex ) [alt: ts.sortText]\n\t\t\tnumberSorter : null, // choose overall numeric sorter function( a, b, direction, maxColumnValue )\n\n\t\t\t// *** widget options\n\t\t\tinitWidgets : true, // apply widgets on tablesorter initialization\n\t\t\twidgetClass : 'widget-{name}', // table class name template to match to include a widget\n\t\t\twidgets : [], // method to add widgets, e.g. widgets: ['zebra']\n\t\t\twidgetOptions : {\n\t\t\t\tzebra : [ 'even', 'odd' ] // zebra widget alternating row class names\n\t\t\t},\n\n\t\t\t// *** callbacks\n\t\t\tinitialized : null, // function( table ) {},\n\n\t\t\t// *** extra css class names\n\t\t\ttableClass : '',\n\t\t\tcssAsc : '',\n\t\t\tcssDesc : '',\n\t\t\tcssNone : '',\n\t\t\tcssHeader : '',\n\t\t\tcssHeaderRow : '',\n\t\t\tcssProcessing : '', // processing icon applied to header during sort/filter\n\n\t\t\tcssChildRow : 'tablesorter-childRow', // class name indiciating that a row is to be attached to its parent\n\t\t\tcssInfoBlock : 'tablesorter-infoOnly', // don't sort tbody with this class name (only one class name allowed here!)\n\t\t\tcssNoSort : 'tablesorter-noSort', // class name added to element inside header; clicking on it won't cause a sort\n\t\t\tcssIgnoreRow : 'tablesorter-ignoreRow',// header row to ignore; cells within this row will not be added to c.$headers\n\n\t\t\tcssIcon : 'tablesorter-icon', // if this class does not exist, the {icon} will not be added from the headerTemplate\n\t\t\tcssIconNone : '', // class name added to the icon when there is no column sort\n\t\t\tcssIconAsc : '', // class name added to the icon when the column has an ascending sort\n\t\t\tcssIconDesc : '', // class name added to the icon when the column has a descending sort\n\t\t\tcssIconDisabled : '', // class name added to the icon when the column has a disabled sort\n\n\t\t\t// *** events\n\t\t\tpointerClick : 'click',\n\t\t\tpointerDown : 'mousedown',\n\t\t\tpointerUp : 'mouseup',\n\n\t\t\t// *** selectors\n\t\t\tselectorHeaders : '> thead th, > thead td',\n\t\t\tselectorSort : 'th, td', // jQuery selector of content within selectorHeaders that is clickable to trigger a sort\n\t\t\tselectorRemove : '.remove-me',\n\n\t\t\t// *** advanced\n\t\t\tdebug : false,\n\n\t\t\t// *** Internal variables\n\t\t\theaderList: [],\n\t\t\tempties: {},\n\t\t\tstrings: {},\n\t\t\tparsers: [],\n\n\t\t\t// *** parser options for validator; values must be falsy!\n\t\t\tglobalize: 0,\n\t\t\timgAttr: 0\n\n\t\t\t// removed: widgetZebra: { css: ['even', 'odd'] }\n\n\t\t},\n\n\t\t// internal css classes - these will ALWAYS be added to\n\t\t// the table and MUST only contain one class name - fixes #381\n\t\tcss : {\n\t\t\ttable : 'tablesorter',\n\t\t\tcssHasChild: 'tablesorter-hasChildRow',\n\t\t\tchildRow : 'tablesorter-childRow',\n\t\t\tcolgroup : 'tablesorter-colgroup',\n\t\t\theader : 'tablesorter-header',\n\t\t\theaderRow : 'tablesorter-headerRow',\n\t\t\theaderIn : 'tablesorter-header-inner',\n\t\t\ticon : 'tablesorter-icon',\n\t\t\tprocessing : 'tablesorter-processing',\n\t\t\tsortAsc : 'tablesorter-headerAsc',\n\t\t\tsortDesc : 'tablesorter-headerDesc',\n\t\t\tsortNone : 'tablesorter-headerUnSorted'\n\t\t},\n\n\t\t// labels applied to sortable headers for accessibility (aria) support\n\t\tlanguage : {\n\t\t\tsortAsc : 'Ascending sort applied, ',\n\t\t\tsortDesc : 'Descending sort applied, ',\n\t\t\tsortNone : 'No sort applied, ',\n\t\t\tsortDisabled : 'sorting is disabled',\n\t\t\tnextAsc : 'activate to apply an ascending sort',\n\t\t\tnextDesc : 'activate to apply a descending sort',\n\t\t\tnextNone : 'activate to remove the sort'\n\t\t},\n\n\t\tregex : {\n\t\t\ttemplateContent : /\\{content\\}/g,\n\t\t\ttemplateIcon : /\\{icon\\}/g,\n\t\t\ttemplateName : /\\{name\\}/i,\n\t\t\tspaces : /\\s+/g,\n\t\t\tnonWord : /\\W/g,\n\t\t\tformElements : /(input|select|button|textarea)/i,\n\n\t\t\t// *** sort functions ***\n\t\t\t// regex used in natural sort\n\t\t\t// chunk/tokenize numbers & letters\n\t\t\tchunk : /(^([+\\-]?(?:\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)?$|^0x[0-9a-f]+$|\\d+)/gi,\n\t\t\t// replace chunks @ ends\n\t\t\tchunks : /(^\\\\0|\\\\0$)/,\n\t\t\thex : /^0x[0-9a-f]+$/i,\n\n\t\t\t// *** formatFloat ***\n\t\t\tcomma : /,/g,\n\t\t\tdigitNonUS : /[\\s|\\.]/g,\n\t\t\tdigitNegativeTest : /^\\s*\\([.\\d]+\\)/,\n\t\t\tdigitNegativeReplace : /^\\s*\\(([.\\d]+)\\)/,\n\n\t\t\t// *** isDigit ***\n\t\t\tdigitTest : /^[\\-+(]?\\d+[)]?$/,\n\t\t\tdigitReplace : /[,.'\"\\s]/g\n\n\t\t},\n\n\t\t// digit sort, text location\n\t\tstring : {\n\t\t\tmax : 1,\n\t\t\tmin : -1,\n\t\t\temptymin : 1,\n\t\t\temptymax : -1,\n\t\t\tzero : 0,\n\t\t\tnone : 0,\n\t\t\t'null' : 0,\n\t\t\ttop : true,\n\t\t\tbottom : false\n\t\t},\n\n\t\tkeyCodes : {\n\t\t\tenter : 13\n\t\t},\n\n\t\t// placeholder date parser data (globalize)\n\t\tdates : {},\n\n\t\t// These methods can be applied on table.config instance\n\t\tinstanceMethods : {},\n\n\t\t/*\n\t\t▄█████ ██████ ██████ ██ ██ █████▄\n\t\t▀█▄ ██▄▄ ██ ██ ██ ██▄▄██\n\t\t ▀█▄ ██▀▀ ██ ██ ██ ██▀▀▀\n\t\t█████▀ ██████ ██ ▀████▀ ██\n\t\t*/\n\n\t\tsetup : function( table, c ) {\n\t\t\t// if no thead or tbody, or tablesorter is already present, quit\n\t\t\tif ( !table || !table.tHead || table.tBodies.length === 0 || table.hasInitialized === true ) {\n\t\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\t\tif ( table.hasInitialized ) {\n\t\t\t\t\t\tconsole.warn( 'Stopping initialization. Tablesorter has already been initialized' );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.error( 'Stopping initialization! No table, thead or tbody', table );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar tmp = '',\n\t\t\t\t$table = $( table ),\n\t\t\t\tmeta = $.metadata;\n\t\t\t// initialization flag\n\t\t\ttable.hasInitialized = false;\n\t\t\t// table is being processed flag\n\t\t\ttable.isProcessing = true;\n\t\t\t// make sure to store the config object\n\t\t\ttable.config = c;\n\t\t\t// save the settings where they read\n\t\t\t$.data( table, 'tablesorter', c );\n\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\tconsole[ console.group ? 'group' : 'log' ]( 'Initializing tablesorter v' + ts.version );\n\t\t\t\t$.data( table, 'startoveralltimer', new Date() );\n\t\t\t}\n\n\t\t\t// removing this in version 3 (only supports jQuery 1.7+)\n\t\t\tc.supportsDataObject = ( function( version ) {\n\t\t\t\tversion[ 0 ] = parseInt( version[ 0 ], 10 );\n\t\t\t\treturn ( version[ 0 ] > 1 ) || ( version[ 0 ] === 1 && parseInt( version[ 1 ], 10 ) >= 4 );\n\t\t\t})( $.fn.jquery.split( '.' ) );\n\t\t\t// ensure case insensitivity\n\t\t\tc.emptyTo = c.emptyTo.toLowerCase();\n\t\t\tc.stringTo = c.stringTo.toLowerCase();\n\t\t\tc.last = { sortList : [], clickedIndex : -1 };\n\t\t\t// add table theme class only if there isn't already one there\n\t\t\tif ( !/tablesorter\\-/.test( $table.attr( 'class' ) ) ) {\n\t\t\t\ttmp = ( c.theme !== '' ? ' tablesorter-' + c.theme : '' );\n\t\t\t}\n\n\t\t\t// give the table a unique id, which will be used in namespace binding\n\t\t\tif ( !c.namespace ) {\n\t\t\t\tc.namespace = '.tablesorter' + Math.random().toString( 16 ).slice( 2 );\n\t\t\t} else {\n\t\t\t\t// make sure namespace starts with a period & doesn't have weird characters\n\t\t\t\tc.namespace = '.' + c.namespace.replace( ts.regex.nonWord, '' );\n\t\t\t}\n\n\t\t\tc.table = table;\n\t\t\tc.$table = $table\n\t\t\t\t// add namespace to table to allow bindings on extra elements to target\n\t\t\t\t// the parent table (e.g. parser-input-select)\n\t\t\t\t.addClass( ts.css.table + ' ' + c.tableClass + tmp + ' ' + c.namespace.slice(1) )\n\t\t\t\t.attr( 'role', 'grid' );\n\t\t\tc.$headers = $table.find( c.selectorHeaders );\n\n\t\t\tc.$table.children().children( 'tr' ).attr( 'role', 'row' );\n\t\t\tc.$tbodies = $table.children( 'tbody:not(.' + c.cssInfoBlock + ')' ).attr({\n\t\t\t\t'aria-live' : 'polite',\n\t\t\t\t'aria-relevant' : 'all'\n\t\t\t});\n\t\t\tif ( c.$table.children( 'caption' ).length ) {\n\t\t\t\ttmp = c.$table.children( 'caption' )[ 0 ];\n\t\t\t\tif ( !tmp.id ) { tmp.id = c.namespace.slice( 1 ) + 'caption'; }\n\t\t\t\tc.$table.attr( 'aria-labelledby', tmp.id );\n\t\t\t}\n\t\t\tc.widgetInit = {}; // keep a list of initialized widgets\n\t\t\t// change textExtraction via data-attribute\n\t\t\tc.textExtraction = c.$table.attr( 'data-text-extraction' ) || c.textExtraction || 'basic';\n\t\t\t// build headers\n\t\t\tts.buildHeaders( c );\n\t\t\t// fixate columns if the users supplies the fixedWidth option\n\t\t\t// do this after theme has been applied\n\t\t\tts.fixColumnWidth( table );\n\t\t\t// add widgets from class name\n\t\t\tts.addWidgetFromClass( table );\n\t\t\t// add widget options before parsing (e.g. grouping widget has parser settings)\n\t\t\tts.applyWidgetOptions( table );\n\t\t\t// try to auto detect column type, and store in tables config\n\t\t\tts.setupParsers( c );\n\t\t\t// start total row count at zero\n\t\t\tc.totalRows = 0;\n\t\t\t// only validate options while debugging. See #1528\n\t\t\tif (c.debug) {\n\t\t\t\tts.validateOptions( c );\n\t\t\t}\n\t\t\t// build the cache for the tbody cells\n\t\t\t// delayInit will delay building the cache until the user starts a sort\n\t\t\tif ( !c.delayInit ) { ts.buildCache( c ); }\n\t\t\t// bind all header events and methods\n\t\t\tts.bindEvents( table, c.$headers, true );\n\t\t\tts.bindMethods( c );\n\t\t\t// get sort list from jQuery data or metadata\n\t\t\t// in jQuery < 1.4, an error occurs when calling $table.data()\n\t\t\tif ( c.supportsDataObject && typeof $table.data().sortlist !== 'undefined' ) {\n\t\t\t\tc.sortList = $table.data().sortlist;\n\t\t\t} else if ( meta && ( $table.metadata() && $table.metadata().sortlist ) ) {\n\t\t\t\tc.sortList = $table.metadata().sortlist;\n\t\t\t}\n\t\t\t// apply widget init code\n\t\t\tts.applyWidget( table, true );\n\t\t\t// if user has supplied a sort list to constructor\n\t\t\tif ( c.sortList.length > 0 ) {\n\t\t\t\t// save sortList before any sortAppend is added\n\t\t\t\tc.last.sortList = c.sortList;\n\t\t\t\tts.sortOn( c, c.sortList, {}, !c.initWidgets );\n\t\t\t} else {\n\t\t\t\tts.setHeadersCss( c );\n\t\t\t\tif ( c.initWidgets ) {\n\t\t\t\t\t// apply widget format\n\t\t\t\t\tts.applyWidget( table, false );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// show processesing icon\n\t\t\tif ( c.showProcessing ) {\n\t\t\t\t$table\n\t\t\t\t.unbind( 'sortBegin' + c.namespace + ' sortEnd' + c.namespace )\n\t\t\t\t.bind( 'sortBegin' + c.namespace + ' sortEnd' + c.namespace, function( e ) {\n\t\t\t\t\tclearTimeout( c.timerProcessing );\n\t\t\t\t\tts.isProcessing( table );\n\t\t\t\t\tif ( e.type === 'sortBegin' ) {\n\t\t\t\t\t\tc.timerProcessing = setTimeout( function() {\n\t\t\t\t\t\t\tts.isProcessing( table, true );\n\t\t\t\t\t\t}, 500 );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// initialized\n\t\t\ttable.hasInitialized = true;\n\t\t\ttable.isProcessing = false;\n\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\tconsole.log( 'Overall initialization time:' + ts.benchmark( $.data( table, 'startoveralltimer' ) ) );\n\t\t\t\tif ( ts.debug(c, 'core') && console.groupEnd ) { console.groupEnd(); }\n\t\t\t}\n\t\t\t$table.triggerHandler( 'tablesorter-initialized', table );\n\t\t\tif ( typeof c.initialized === 'function' ) {\n\t\t\t\tc.initialized( table );\n\t\t\t}\n\t\t},\n\n\t\tbindMethods : function( c ) {\n\t\t\tvar $table = c.$table,\n\t\t\t\tnamespace = c.namespace,\n\t\t\t\tevents = ( 'sortReset update updateRows updateAll updateHeaders addRows updateCell updateComplete ' +\n\t\t\t\t\t'sorton appendCache updateCache applyWidgetId applyWidgets refreshWidgets destroy mouseup ' +\n\t\t\t\t\t'mouseleave ' ).split( ' ' )\n\t\t\t\t\t.join( namespace + ' ' );\n\t\t\t// apply easy methods that trigger bound events\n\t\t\t$table\n\t\t\t.unbind( events.replace( ts.regex.spaces, ' ' ) )\n\t\t\t.bind( 'sortReset' + namespace, function( e, callback ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\t// using this.config to ensure functions are getting a non-cached version of the config\n\t\t\t\tts.sortReset( this.config, function( table ) {\n\t\t\t\t\tif (table.isApplyingWidgets) {\n\t\t\t\t\t\t// multiple triggers in a row... filterReset, then sortReset - see #1361\n\t\t\t\t\t\t// wait to update widgets\n\t\t\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t\t\tts.applyWidget( table, '', callback );\n\t\t\t\t\t\t}, 100 );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tts.applyWidget( table, '', callback );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t})\n\t\t\t.bind( 'updateAll' + namespace, function( e, resort, callback ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\tts.updateAll( this.config, resort, callback );\n\t\t\t})\n\t\t\t.bind( 'update' + namespace + ' updateRows' + namespace, function( e, resort, callback ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\tts.update( this.config, resort, callback );\n\t\t\t})\n\t\t\t.bind( 'updateHeaders' + namespace, function( e, callback ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\tts.updateHeaders( this.config, callback );\n\t\t\t})\n\t\t\t.bind( 'updateCell' + namespace, function( e, cell, resort, callback ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\tts.updateCell( this.config, cell, resort, callback );\n\t\t\t})\n\t\t\t.bind( 'addRows' + namespace, function( e, $row, resort, callback ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\tts.addRows( this.config, $row, resort, callback );\n\t\t\t})\n\t\t\t.bind( 'updateComplete' + namespace, function() {\n\t\t\t\tthis.isUpdating = false;\n\t\t\t})\n\t\t\t.bind( 'sorton' + namespace, function( e, list, callback, init ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\tts.sortOn( this.config, list, callback, init );\n\t\t\t})\n\t\t\t.bind( 'appendCache' + namespace, function( e, callback, init ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\tts.appendCache( this.config, init );\n\t\t\t\tif ( $.isFunction( callback ) ) {\n\t\t\t\t\tcallback( this );\n\t\t\t\t}\n\t\t\t})\n\t\t\t// $tbodies variable is used by the tbody sorting widget\n\t\t\t.bind( 'updateCache' + namespace, function( e, callback, $tbodies ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\tts.updateCache( this.config, callback, $tbodies );\n\t\t\t})\n\t\t\t.bind( 'applyWidgetId' + namespace, function( e, id ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\tts.applyWidgetId( this, id );\n\t\t\t})\n\t\t\t.bind( 'applyWidgets' + namespace, function( e, callback ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\t// apply widgets (false = not initializing)\n\t\t\t\tts.applyWidget( this, false, callback );\n\t\t\t})\n\t\t\t.bind( 'refreshWidgets' + namespace, function( e, all, dontapply ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\tts.refreshWidgets( this, all, dontapply );\n\t\t\t})\n\t\t\t.bind( 'removeWidget' + namespace, function( e, name, refreshing ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\tts.removeWidget( this, name, refreshing );\n\t\t\t})\n\t\t\t.bind( 'destroy' + namespace, function( e, removeClasses, callback ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\tts.destroy( this, removeClasses, callback );\n\t\t\t})\n\t\t\t.bind( 'resetToLoadState' + namespace, function( e ) {\n\t\t\t\te.stopPropagation();\n\t\t\t\t// remove all widgets\n\t\t\t\tts.removeWidget( this, true, false );\n\t\t\t\tvar tmp = $.extend( true, {}, c.originalSettings );\n\t\t\t\t// restore original settings; this clears out current settings, but does not clear\n\t\t\t\t// values saved to storage.\n\t\t\t\tc = $.extend( true, {}, ts.defaults, tmp );\n\t\t\t\tc.originalSettings = tmp;\n\t\t\t\tthis.hasInitialized = false;\n\t\t\t\t// setup the entire table again\n\t\t\t\tts.setup( this, c );\n\t\t\t});\n\t\t},\n\n\t\tbindEvents : function( table, $headers, core ) {\n\t\t\ttable = $( table )[ 0 ];\n\t\t\tvar tmp,\n\t\t\t\tc = table.config,\n\t\t\t\tnamespace = c.namespace,\n\t\t\t\tdownTarget = null;\n\t\t\tif ( core !== true ) {\n\t\t\t\t$headers.addClass( namespace.slice( 1 ) + '_extra_headers' );\n\t\t\t\ttmp = ts.getClosest( $headers, 'table' );\n\t\t\t\tif ( tmp.length && tmp[ 0 ].nodeName === 'TABLE' && tmp[ 0 ] !== table ) {\n\t\t\t\t\t$( tmp[ 0 ] ).addClass( namespace.slice( 1 ) + '_extra_table' );\n\t\t\t\t}\n\t\t\t}\n\t\t\ttmp = ( c.pointerDown + ' ' + c.pointerUp + ' ' + c.pointerClick + ' sort keyup ' )\n\t\t\t\t.replace( ts.regex.spaces, ' ' )\n\t\t\t\t.split( ' ' )\n\t\t\t\t.join( namespace + ' ' );\n\t\t\t// apply event handling to headers and/or additional headers (stickyheaders, scroller, etc)\n\t\t\t$headers\n\t\t\t// http://stackoverflow.com/questions/5312849/jquery-find-self;\n\t\t\t.find( c.selectorSort )\n\t\t\t.add( $headers.filter( c.selectorSort ) )\n\t\t\t.unbind( tmp )\n\t\t\t.bind( tmp, function( e, external ) {\n\t\t\t\tvar $cell, cell, temp,\n\t\t\t\t\t$target = $( e.target ),\n\t\t\t\t\t// wrap event type in spaces, so the match doesn't trigger on inner words\n\t\t\t\t\ttype = ' ' + e.type + ' ';\n\t\t\t\t// only recognize left clicks\n\t\t\t\tif ( ( ( e.which || e.button ) !== 1 && !type.match( ' ' + c.pointerClick + ' | sort | keyup ' ) ) ||\n\t\t\t\t\t// allow pressing enter\n\t\t\t\t\t( type === ' keyup ' && e.which !== ts.keyCodes.enter ) ||\n\t\t\t\t\t// allow triggering a click event (e.which is undefined) & ignore physical clicks\n\t\t\t\t\t( type.match( ' ' + c.pointerClick + ' ' ) && typeof e.which !== 'undefined' ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// ignore mouseup if mousedown wasn't on the same target\n\t\t\t\tif ( type.match( ' ' + c.pointerUp + ' ' ) && downTarget !== e.target && external !== true ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// set target on mousedown\n\t\t\t\tif ( type.match( ' ' + c.pointerDown + ' ' ) ) {\n\t\t\t\t\tdownTarget = e.target;\n\t\t\t\t\t// preventDefault needed or jQuery v1.3.2 and older throws an\n\t\t\t\t\t// \"Uncaught TypeError: handler.apply is not a function\" error\n\t\t\t\t\ttemp = $target.jquery.split( '.' );\n\t\t\t\t\tif ( temp[ 0 ] === '1' && temp[ 1 ] < 4 ) { e.preventDefault(); }\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tdownTarget = null;\n\t\t\t\t$cell = ts.getClosest( $( this ), '.' + ts.css.header );\n\t\t\t\t// prevent sort being triggered on form elements\n\t\t\t\tif ( ts.regex.formElements.test( e.target.nodeName ) ||\n\t\t\t\t\t// nosort class name, or elements within a nosort container\n\t\t\t\t\t$target.hasClass( c.cssNoSort ) || $target.parents( '.' + c.cssNoSort ).length > 0 ||\n\t\t\t\t\t// disabled cell directly clicked\n\t\t\t\t\t$cell.hasClass( 'sorter-false' ) ||\n\t\t\t\t\t// elements within a button\n\t\t\t\t\t$target.parents( 'button' ).length > 0 ) {\n\t\t\t\t\treturn !c.cancelSelection;\n\t\t\t\t}\n\t\t\t\tif ( c.delayInit && ts.isEmptyObject( c.cache ) ) {\n\t\t\t\t\tts.buildCache( c );\n\t\t\t\t}\n\t\t\t\t// use column index from data-attribute or index of current row; fixes #1116\n\t\t\t\tc.last.clickedIndex = $cell.attr( 'data-column' ) || $cell.index();\n\t\t\t\tcell = c.$headerIndexed[ c.last.clickedIndex ][0];\n\t\t\t\tif ( cell && !cell.sortDisabled ) {\n\t\t\t\t\tts.initSort( c, cell, e );\n\t\t\t\t}\n\t\t\t});\n\t\t\tif ( c.cancelSelection ) {\n\t\t\t\t// cancel selection\n\t\t\t\t$headers\n\t\t\t\t\t.attr( 'unselectable', 'on' )\n\t\t\t\t\t.bind( 'selectstart', false )\n\t\t\t\t\t.css({\n\t\t\t\t\t\t'user-select' : 'none',\n\t\t\t\t\t\t'MozUserSelect' : 'none' // not needed for jQuery 1.8+\n\t\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tbuildHeaders : function( c ) {\n\t\t\tvar $temp, icon, timer, indx;\n\t\t\tc.headerList = [];\n\t\t\tc.headerContent = [];\n\t\t\tc.sortVars = [];\n\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\ttimer = new Date();\n\t\t\t}\n\t\t\t// children tr in tfoot - see issue #196 & #547\n\t\t\t// don't pass table.config to computeColumnIndex here - widgets (math) pass it to \"quickly\" index tbody cells\n\t\t\tc.columns = ts.computeColumnIndex( c.$table.children( 'thead, tfoot' ).children( 'tr' ) );\n\t\t\t// add icon if cssIcon option exists\n\t\t\ticon = c.cssIcon ?\n\t\t\t\t'<i class=\"' + ( c.cssIcon === ts.css.icon ? ts.css.icon : c.cssIcon + ' ' + ts.css.icon ) + '\"></i>' :\n\t\t\t\t'';\n\t\t\t// redefine c.$headers here in case of an updateAll that replaces or adds an entire header cell - see #683\n\t\t\tc.$headers = $( $.map( c.$table.find( c.selectorHeaders ), function( elem, index ) {\n\t\t\t\tvar configHeaders, header, column, template, tmp,\n\t\t\t\t\t$elem = $( elem );\n\t\t\t\t// ignore cell (don't add it to c.$headers) if row has ignoreRow class\n\t\t\t\tif ( ts.getClosest( $elem, 'tr' ).hasClass( c.cssIgnoreRow ) ) { return; }\n\t\t\t\t// transfer data-column to element if not th/td - #1459\n\t\t\t\tif ( !/(th|td)/i.test( elem.nodeName ) ) {\n\t\t\t\t\ttmp = ts.getClosest( $elem, 'th, td' );\n\t\t\t\t\t$elem.attr( 'data-column', tmp.attr( 'data-column' ) );\n\t\t\t\t}\n\t\t\t\t// make sure to get header cell & not column indexed cell\n\t\t\t\tconfigHeaders = ts.getColumnData( c.table, c.headers, index, true );\n\t\t\t\t// save original header content\n\t\t\t\tc.headerContent[ index ] = $elem.html();\n\t\t\t\t// if headerTemplate is empty, don't reformat the header cell\n\t\t\t\tif ( c.headerTemplate !== '' && !$elem.find( '.' + ts.css.headerIn ).length ) {\n\t\t\t\t\t// set up header template\n\t\t\t\t\ttemplate = c.headerTemplate\n\t\t\t\t\t\t.replace( ts.regex.templateContent, $elem.html() )\n\t\t\t\t\t\t.replace( ts.regex.templateIcon, $elem.find( '.' + ts.css.icon ).length ? '' : icon );\n\t\t\t\t\tif ( c.onRenderTemplate ) {\n\t\t\t\t\t\theader = c.onRenderTemplate.apply( $elem, [ index, template ] );\n\t\t\t\t\t\t// only change t if something is returned\n\t\t\t\t\t\tif ( header && typeof header === 'string' ) {\n\t\t\t\t\t\t\ttemplate = header;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t$elem.html( '<div class=\"' + ts.css.headerIn + '\">' + template + '</div>' ); // faster than wrapInner\n\t\t\t\t}\n\t\t\t\tif ( c.onRenderHeader ) {\n\t\t\t\t\tc.onRenderHeader.apply( $elem, [ index, c, c.$table ] );\n\t\t\t\t}\n\t\t\t\tcolumn = parseInt( $elem.attr( 'data-column' ), 10 );\n\t\t\t\telem.column = column;\n\t\t\t\ttmp = ts.getOrder( ts.getData( $elem, configHeaders, 'sortInitialOrder' ) || c.sortInitialOrder );\n\t\t\t\t// this may get updated numerous times if there are multiple rows\n\t\t\t\tc.sortVars[ column ] = {\n\t\t\t\t\tcount : -1, // set to -1 because clicking on the header automatically adds one\n\t\t\t\t\torder : tmp ?\n\t\t\t\t\t\t( c.sortReset ? [ 1, 0, 2 ] : [ 1, 0 ] ) : // desc, asc, unsorted\n\t\t\t\t\t\t( c.sortReset ? [ 0, 1, 2 ] : [ 0, 1 ] ), // asc, desc, unsorted\n\t\t\t\t\tlockedOrder : false,\n\t\t\t\t\tsortedBy : ''\n\t\t\t\t};\n\t\t\t\ttmp = ts.getData( $elem, configHeaders, 'lockedOrder' ) || false;\n\t\t\t\tif ( typeof tmp !== 'undefined' && tmp !== false ) {\n\t\t\t\t\tc.sortVars[ column ].lockedOrder = true;\n\t\t\t\t\tc.sortVars[ column ].order = ts.getOrder( tmp ) ? [ 1, 1 ] : [ 0, 0 ];\n\t\t\t\t}\n\t\t\t\t// add cell to headerList\n\t\t\t\tc.headerList[ index ] = elem;\n\t\t\t\t$elem.addClass( ts.css.header + ' ' + c.cssHeader );\n\t\t\t\t// add to parent in case there are multiple rows\n\t\t\t\tts.getClosest( $elem, 'tr' )\n\t\t\t\t\t.addClass( ts.css.headerRow + ' ' + c.cssHeaderRow )\n\t\t\t\t\t.attr( 'role', 'row' );\n\t\t\t\t// allow keyboard cursor to focus on element\n\t\t\t\tif ( c.tabIndex ) {\n\t\t\t\t\t$elem.attr( 'tabindex', 0 );\n\t\t\t\t}\n\t\t\t\treturn elem;\n\t\t\t}) );\n\t\t\t// cache headers per column\n\t\t\tc.$headerIndexed = [];\n\t\t\tfor ( indx = 0; indx < c.columns; indx++ ) {\n\t\t\t\t// colspan in header making a column undefined\n\t\t\t\tif ( ts.isEmptyObject( c.sortVars[ indx ] ) ) {\n\t\t\t\t\tc.sortVars[ indx ] = {};\n\t\t\t\t}\n\t\t\t\t// Use c.$headers.parent() in case selectorHeaders doesn't point to the th/td\n\t\t\t\t$temp = c.$headers.filter( '[data-column=\"' + indx + '\"]' );\n\t\t\t\t// target sortable column cells, unless there are none, then use non-sortable cells\n\t\t\t\t// .last() added in jQuery 1.4; use .filter(':last') to maintain compatibility with jQuery v1.2.6\n\t\t\t\tc.$headerIndexed[ indx ] = $temp.length ?\n\t\t\t\t\t$temp.not( '.sorter-false' ).length ?\n\t\t\t\t\t\t$temp.not( '.sorter-false' ).filter( ':last' ) :\n\t\t\t\t\t\t$temp.filter( ':last' ) :\n\t\t\t\t\t$();\n\t\t\t}\n\t\t\tc.$table.find( c.selectorHeaders ).attr({\n\t\t\t\tscope: 'col',\n\t\t\t\trole : 'columnheader'\n\t\t\t});\n\t\t\t// enable/disable sorting\n\t\t\tts.updateHeader( c );\n\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\tconsole.log( 'Built headers:' + ts.benchmark( timer ) );\n\t\t\t\tconsole.log( c.$headers );\n\t\t\t}\n\t\t},\n\n\t\t// Use it to add a set of methods to table.config which will be available for all tables.\n\t\t// This should be done before table initialization\n\t\taddInstanceMethods : function( methods ) {\n\t\t\t$.extend( ts.instanceMethods, methods );\n\t\t},\n\n\t\t/*\n\t\t█████▄ ▄████▄ █████▄ ▄█████ ██████ █████▄ ▄█████\n\t\t██▄▄██ ██▄▄██ ██▄▄██ ▀█▄ ██▄▄ ██▄▄██ ▀█▄\n\t\t██▀▀▀ ██▀▀██ ██▀██ ▀█▄ ██▀▀ ██▀██ ▀█▄\n\t\t██ ██ ██ ██ ██ █████▀ ██████ ██ ██ █████▀\n\t\t*/\n\t\tsetupParsers : function( c, $tbodies ) {\n\t\t\tvar rows, list, span, max, colIndex, indx, header, configHeaders,\n\t\t\t\tnoParser, parser, extractor, time, tbody, len,\n\t\t\t\ttable = c.table,\n\t\t\t\ttbodyIndex = 0,\n\t\t\t\tdebug = ts.debug(c, 'core'),\n\t\t\t\tdebugOutput = {};\n\t\t\t// update table bodies in case we start with an empty table\n\t\t\tc.$tbodies = c.$table.children( 'tbody:not(.' + c.cssInfoBlock + ')' );\n\t\t\ttbody = typeof $tbodies === 'undefined' ? c.$tbodies : $tbodies;\n\t\t\tlen = tbody.length;\n\t\t\tif ( len === 0 ) {\n\t\t\t\treturn debug ? console.warn( 'Warning: *Empty table!* Not building a parser cache' ) : '';\n\t\t\t} else if ( debug ) {\n\t\t\t\ttime = new Date();\n\t\t\t\tconsole[ console.group ? 'group' : 'log' ]( 'Detecting parsers for each column' );\n\t\t\t}\n\t\t\tlist = {\n\t\t\t\textractors: [],\n\t\t\t\tparsers: []\n\t\t\t};\n\t\t\twhile ( tbodyIndex < len ) {\n\t\t\t\trows = tbody[ tbodyIndex ].rows;\n\t\t\t\tif ( rows.length ) {\n\t\t\t\t\tcolIndex = 0;\n\t\t\t\t\tmax = c.columns;\n\t\t\t\t\tfor ( indx = 0; indx < max; indx++ ) {\n\t\t\t\t\t\theader = c.$headerIndexed[ colIndex ];\n\t\t\t\t\t\tif ( header && header.length ) {\n\t\t\t\t\t\t\t// get column indexed table cell; adding true parameter fixes #1362 but\n\t\t\t\t\t\t\t// it would break backwards compatibility...\n\t\t\t\t\t\t\tconfigHeaders = ts.getColumnData( table, c.headers, colIndex ); // , true );\n\t\t\t\t\t\t\t// get column parser/extractor\n\t\t\t\t\t\t\textractor = ts.getParserById( ts.getData( header, configHeaders, 'extractor' ) );\n\t\t\t\t\t\t\tparser = ts.getParserById( ts.getData( header, configHeaders, 'sorter' ) );\n\t\t\t\t\t\t\tnoParser = ts.getData( header, configHeaders, 'parser' ) === 'false';\n\t\t\t\t\t\t\t// empty cells behaviour - keeping emptyToBottom for backwards compatibility\n\t\t\t\t\t\t\tc.empties[colIndex] = (\n\t\t\t\t\t\t\t\tts.getData( header, configHeaders, 'empty' ) ||\n\t\t\t\t\t\t\t\tc.emptyTo || ( c.emptyToBottom ? 'bottom' : 'top' ) ).toLowerCase();\n\t\t\t\t\t\t\t// text strings behaviour in numerical sorts\n\t\t\t\t\t\t\tc.strings[colIndex] = (\n\t\t\t\t\t\t\t\tts.getData( header, configHeaders, 'string' ) ||\n\t\t\t\t\t\t\t\tc.stringTo ||\n\t\t\t\t\t\t\t\t'max' ).toLowerCase();\n\t\t\t\t\t\t\tif ( noParser ) {\n\t\t\t\t\t\t\t\tparser = ts.getParserById( 'no-parser' );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ( !extractor ) {\n\t\t\t\t\t\t\t\t// For now, maybe detect someday\n\t\t\t\t\t\t\t\textractor = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ( !parser ) {\n\t\t\t\t\t\t\t\tparser = ts.detectParserForColumn( c, rows, -1, colIndex );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif ( debug ) {\n\t\t\t\t\t\t\t\tdebugOutput[ '(' + colIndex + ') ' + header.text() ] = {\n\t\t\t\t\t\t\t\t\tparser : parser.id,\n\t\t\t\t\t\t\t\t\textractor : extractor ? extractor.id : 'none',\n\t\t\t\t\t\t\t\t\tstring : c.strings[ colIndex ],\n\t\t\t\t\t\t\t\t\tempty : c.empties[ colIndex ]\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tlist.parsers[ colIndex ] = parser;\n\t\t\t\t\t\t\tlist.extractors[ colIndex ] = extractor;\n\t\t\t\t\t\t\tspan = header[ 0 ].colSpan - 1;\n\t\t\t\t\t\t\tif ( span > 0 ) {\n\t\t\t\t\t\t\t\tcolIndex += span;\n\t\t\t\t\t\t\t\tmax += span;\n\t\t\t\t\t\t\t\twhile ( span + 1 > 0 ) {\n\t\t\t\t\t\t\t\t\t// set colspan columns to use the same parsers & extractors\n\t\t\t\t\t\t\t\t\tlist.parsers[ colIndex - span ] = parser;\n\t\t\t\t\t\t\t\t\tlist.extractors[ colIndex - span ] = extractor;\n\t\t\t\t\t\t\t\t\tspan--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcolIndex++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttbodyIndex += ( list.parsers.length ) ? len : 1;\n\t\t\t}\n\t\t\tif ( debug ) {\n\t\t\t\tif ( !ts.isEmptyObject( debugOutput ) ) {\n\t\t\t\t\tconsole[ console.table ? 'table' : 'log' ]( debugOutput );\n\t\t\t\t} else {\n\t\t\t\t\tconsole.warn( ' No parsers detected!' );\n\t\t\t\t}\n\t\t\t\tconsole.log( 'Completed detecting parsers' + ts.benchmark( time ) );\n\t\t\t\tif ( console.groupEnd ) { console.groupEnd(); }\n\t\t\t}\n\t\t\tc.parsers = list.parsers;\n\t\t\tc.extractors = list.extractors;\n\t\t},\n\n\t\taddParser : function( parser ) {\n\t\t\tvar indx,\n\t\t\t\tlen = ts.parsers.length,\n\t\t\t\tadd = true;\n\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\tif ( ts.parsers[ indx ].id.toLowerCase() === parser.id.toLowerCase() ) {\n\t\t\t\t\tadd = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( add ) {\n\t\t\t\tts.parsers[ ts.parsers.length ] = parser;\n\t\t\t}\n\t\t},\n\n\t\tgetParserById : function( name ) {\n\t\t\t/*jshint eqeqeq:false */ // eslint-disable-next-line eqeqeq\n\t\t\tif ( name == 'false' ) { return false; }\n\t\t\tvar indx,\n\t\t\t\tlen = ts.parsers.length;\n\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\tif ( ts.parsers[ indx ].id.toLowerCase() === ( name.toString() ).toLowerCase() ) {\n\t\t\t\t\treturn ts.parsers[ indx ];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\t\tdetectParserForColumn : function( c, rows, rowIndex, cellIndex ) {\n\t\t\tvar cur, $node, row,\n\t\t\t\tindx = ts.parsers.length,\n\t\t\t\tnode = false,\n\t\t\t\tnodeValue = '',\n\t\t\t\tdebug = ts.debug(c, 'core'),\n\t\t\t\tkeepLooking = true;\n\t\t\twhile ( nodeValue === '' && keepLooking ) {\n\t\t\t\trowIndex++;\n\t\t\t\trow = rows[ rowIndex ];\n\t\t\t\t// stop looking after 50 empty rows\n\t\t\t\tif ( row && rowIndex < 50 ) {\n\t\t\t\t\tif ( row.className.indexOf( ts.cssIgnoreRow ) < 0 ) {\n\t\t\t\t\t\tnode = rows[ rowIndex ].cells[ cellIndex ];\n\t\t\t\t\t\tnodeValue = ts.getElementText( c, node, cellIndex );\n\t\t\t\t\t\t$node = $( node );\n\t\t\t\t\t\tif ( debug ) {\n\t\t\t\t\t\t\tconsole.log( 'Checking if value was empty on row ' + rowIndex + ', column: ' +\n\t\t\t\t\t\t\t\tcellIndex + ': \"' + nodeValue + '\"' );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tkeepLooking = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\twhile ( --indx >= 0 ) {\n\t\t\t\tcur = ts.parsers[ indx ];\n\t\t\t\t// ignore the default text parser because it will always be true\n\t\t\t\tif ( cur && cur.id !== 'text' && cur.is && cur.is( nodeValue, c.table, node, $node ) ) {\n\t\t\t\t\treturn cur;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// nothing found, return the generic parser (text)\n\t\t\treturn ts.getParserById( 'text' );\n\t\t},\n\n\t\tgetElementText : function( c, node, cellIndex ) {\n\t\t\tif ( !node ) { return ''; }\n\t\t\tvar tmp,\n\t\t\t\textract = c.textExtraction || '',\n\t\t\t\t// node could be a jquery object\n\t\t\t\t// http://jsperf.com/jquery-vs-instanceof-jquery/2\n\t\t\t\t$node = node.jquery ? node : $( node );\n\t\t\tif ( typeof extract === 'string' ) {\n\t\t\t\t// check data-attribute first when set to 'basic'; don't use node.innerText - it's really slow!\n\t\t\t\t// http://www.kellegous.com/j/2013/02/27/innertext-vs-textcontent/\n\t\t\t\tif ( extract === 'basic' && typeof ( tmp = $node.attr( c.textAttribute ) ) !== 'undefined' ) {\n\t\t\t\t\treturn $.trim( tmp );\n\t\t\t\t}\n\t\t\t\treturn $.trim( node.textContent || $node.text() );\n\t\t\t} else {\n\t\t\t\tif ( typeof extract === 'function' ) {\n\t\t\t\t\treturn $.trim( extract( $node[ 0 ], c.table, cellIndex ) );\n\t\t\t\t} else if ( typeof ( tmp = ts.getColumnData( c.table, extract, cellIndex ) ) === 'function' ) {\n\t\t\t\t\treturn $.trim( tmp( $node[ 0 ], c.table, cellIndex ) );\n\t\t\t\t}\n\t\t\t}\n\t\t\t// fallback\n\t\t\treturn $.trim( $node[ 0 ].textContent || $node.text() );\n\t\t},\n\n\t\t// centralized function to extract/parse cell contents\n\t\tgetParsedText : function( c, cell, colIndex, txt ) {\n\t\t\tif ( typeof txt === 'undefined' ) {\n\t\t\t\ttxt = ts.getElementText( c, cell, colIndex );\n\t\t\t}\n\t\t\t// if no parser, make sure to return the txt\n\t\t\tvar val = '' + txt,\n\t\t\t\tparser = c.parsers[ colIndex ],\n\t\t\t\textractor = c.extractors[ colIndex ];\n\t\t\tif ( parser ) {\n\t\t\t\t// do extract before parsing, if there is one\n\t\t\t\tif ( extractor && typeof extractor.format === 'function' ) {\n\t\t\t\t\ttxt = extractor.format( txt, c.table, cell, colIndex );\n\t\t\t\t}\n\t\t\t\t// allow parsing if the string is empty, previously parsing would change it to zero,\n\t\t\t\t// in case the parser needs to extract data from the table cell attributes\n\t\t\t\tval = parser.id === 'no-parser' ? '' :\n\t\t\t\t\t// make sure txt is a string (extractor may have converted it)\n\t\t\t\t\tparser.format( '' + txt, c.table, cell, colIndex );\n\t\t\t\tif ( c.ignoreCase && typeof val === 'string' ) {\n\t\t\t\t\tval = val.toLowerCase();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\t/*\n\t\t▄████▄ ▄████▄ ▄████▄ ██ ██ ██████\n\t\t██ ▀▀ ██▄▄██ ██ ▀▀ ██▄▄██ ██▄▄\n\t\t██ â–„â–„ ██▀▀██ ██ â–„â–„ ██▀▀██ ██▀▀\n\t\t▀████▀ ██ ██ ▀████▀ ██ ██ ██████\n\t\t*/\n\t\tbuildCache : function( c, callback, $tbodies ) {\n\t\t\tvar cache, val, txt, rowIndex, colIndex, tbodyIndex, $tbody, $row,\n\t\t\t\tcols, $cells, cell, cacheTime, totalRows, rowData, prevRowData,\n\t\t\t\tcolMax, span, cacheIndex, hasParser, max, len, index,\n\t\t\t\ttable = c.table,\n\t\t\t\tparsers = c.parsers,\n\t\t\t\tdebug = ts.debug(c, 'core');\n\t\t\t// update tbody variable\n\t\t\tc.$tbodies = c.$table.children( 'tbody:not(.' + c.cssInfoBlock + ')' );\n\t\t\t$tbody = typeof $tbodies === 'undefined' ? c.$tbodies : $tbodies,\n\t\t\tc.cache = {};\n\t\t\tc.totalRows = 0;\n\t\t\t// if no parsers found, return - it's an empty table.\n\t\t\tif ( !parsers ) {\n\t\t\t\treturn debug ? console.warn( 'Warning: *Empty table!* Not building a cache' ) : '';\n\t\t\t}\n\t\t\tif ( debug ) {\n\t\t\t\tcacheTime = new Date();\n\t\t\t}\n\t\t\t// processing icon\n\t\t\tif ( c.showProcessing ) {\n\t\t\t\tts.isProcessing( table, true );\n\t\t\t}\n\t\t\tfor ( tbodyIndex = 0; tbodyIndex < $tbody.length; tbodyIndex++ ) {\n\t\t\t\tcolMax = []; // column max value per tbody\n\t\t\t\tcache = c.cache[ tbodyIndex ] = {\n\t\t\t\t\tnormalized: [] // array of normalized row data; last entry contains 'rowData' above\n\t\t\t\t\t// colMax: # // added at the end\n\t\t\t\t};\n\n\t\t\t\ttotalRows = ( $tbody[ tbodyIndex ] && $tbody[ tbodyIndex ].rows.length ) || 0;\n\t\t\t\tfor ( rowIndex = 0; rowIndex < totalRows; ++rowIndex ) {\n\t\t\t\t\trowData = {\n\t\t\t\t\t\t// order: original row order #\n\t\t\t\t\t\t// $row : jQuery Object[]\n\t\t\t\t\t\tchild: [], // child row text (filter widget)\n\t\t\t\t\t\traw: [] // original row text\n\t\t\t\t\t};\n\t\t\t\t\t/** Add the table data to main data array */\n\t\t\t\t\t$row = $( $tbody[ tbodyIndex ].rows[ rowIndex ] );\n\t\t\t\t\tcols = [];\n\t\t\t\t\t// ignore \"remove-me\" rows\n\t\t\t\t\tif ( $row.hasClass( c.selectorRemove.slice(1) ) ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\t// if this is a child row, add it to the last row's children and continue to the next row\n\t\t\t\t\t// ignore child row class, if it is the first row\n\t\t\t\t\tif ( $row.hasClass( c.cssChildRow ) && rowIndex !== 0 ) {\n\t\t\t\t\t\tlen = cache.normalized.length - 1;\n\t\t\t\t\t\tprevRowData = cache.normalized[ len ][ c.columns ];\n\t\t\t\t\t\tprevRowData.$row = prevRowData.$row.add( $row );\n\t\t\t\t\t\t// add 'hasChild' class name to parent row\n\t\t\t\t\t\tif ( !$row.prev().hasClass( c.cssChildRow ) ) {\n\t\t\t\t\t\t\t$row.prev().addClass( ts.css.cssHasChild );\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// save child row content (un-parsed!)\n\t\t\t\t\t\t$cells = $row.children( 'th, td' );\n\t\t\t\t\t\tlen = prevRowData.child.length;\n\t\t\t\t\t\tprevRowData.child[ len ] = [];\n\t\t\t\t\t\t// child row content does not account for colspans/rowspans; so indexing may be off\n\t\t\t\t\t\tcacheIndex = 0;\n\t\t\t\t\t\tmax = c.columns;\n\t\t\t\t\t\tfor ( colIndex = 0; colIndex < max; colIndex++ ) {\n\t\t\t\t\t\t\tcell = $cells[ colIndex ];\n\t\t\t\t\t\t\tif ( cell ) {\n\t\t\t\t\t\t\t\tprevRowData.child[ len ][ colIndex ] = ts.getParsedText( c, cell, colIndex );\n\t\t\t\t\t\t\t\tspan = $cells[ colIndex ].colSpan - 1;\n\t\t\t\t\t\t\t\tif ( span > 0 ) {\n\t\t\t\t\t\t\t\t\tcacheIndex += span;\n\t\t\t\t\t\t\t\t\tmax += span;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcacheIndex++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// go to the next for loop\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\trowData.$row = $row;\n\t\t\t\t\trowData.order = rowIndex; // add original row position to rowCache\n\t\t\t\t\tcacheIndex = 0;\n\t\t\t\t\tmax = c.columns;\n\t\t\t\t\tfor ( colIndex = 0; colIndex < max; ++colIndex ) {\n\t\t\t\t\t\tcell = $row[ 0 ].cells[ colIndex ];\n\t\t\t\t\t\tif ( cell && cacheIndex < c.columns ) {\n\t\t\t\t\t\t\thasParser = typeof parsers[ cacheIndex ] !== 'undefined';\n\t\t\t\t\t\t\tif ( !hasParser && debug ) {\n\t\t\t\t\t\t\t\tconsole.warn( 'No parser found for row: ' + rowIndex + ', column: ' + colIndex +\n\t\t\t\t\t\t\t\t\t'; cell containing: \"' + $(cell).text() + '\"; does it have a header?' );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tval = ts.getElementText( c, cell, cacheIndex );\n\t\t\t\t\t\t\trowData.raw[ cacheIndex ] = val; // save original row text\n\t\t\t\t\t\t\t// save raw column text even if there is no parser set\n\t\t\t\t\t\t\ttxt = ts.getParsedText( c, cell, cacheIndex, val );\n\t\t\t\t\t\t\tcols[ cacheIndex ] = txt;\n\t\t\t\t\t\t\tif ( hasParser && ( parsers[ cacheIndex ].type || '' ).toLowerCase() === 'numeric' ) {\n\t\t\t\t\t\t\t\t// determine column max value (ignore sign)\n\t\t\t\t\t\t\t\tcolMax[ cacheIndex ] = Math.max( Math.abs( txt ) || 0, colMax[ cacheIndex ] || 0 );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// allow colSpan in tbody\n\t\t\t\t\t\t\tspan = cell.colSpan - 1;\n\t\t\t\t\t\t\tif ( span > 0 ) {\n\t\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t\t\twhile ( index <= span ) {\n\t\t\t\t\t\t\t\t\t// duplicate text (or not) to spanned columns\n\t\t\t\t\t\t\t\t\t// instead of setting duplicate span to empty string, use textExtraction to try to get a value\n\t\t\t\t\t\t\t\t\t// see http://stackoverflow.com/q/36449711/145346\n\t\t\t\t\t\t\t\t\ttxt = c.duplicateSpan || index === 0 ?\n\t\t\t\t\t\t\t\t\t\ttxt :\n\t\t\t\t\t\t\t\t\t\ttypeof c.textExtraction !== 'string' ?\n\t\t\t\t\t\t\t\t\t\t\tts.getElementText( c, cell, cacheIndex + index ) || '' :\n\t\t\t\t\t\t\t\t\t\t\t'';\n\t\t\t\t\t\t\t\t\trowData.raw[ cacheIndex + index ] = txt;\n\t\t\t\t\t\t\t\t\tcols[ cacheIndex + index ] = txt;\n\t\t\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcacheIndex += span;\n\t\t\t\t\t\t\t\tmax += span;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcacheIndex++;\n\t\t\t\t\t}\n\t\t\t\t\t// ensure rowData is always in the same location (after the last column)\n\t\t\t\t\tcols[ c.columns ] = rowData;\n\t\t\t\t\tcache.normalized[ cache.normalized.length ] = cols;\n\t\t\t\t}\n\t\t\t\tcache.colMax = colMax;\n\t\t\t\t// total up rows, not including child rows\n\t\t\t\tc.totalRows += cache.normalized.length;\n\n\t\t\t}\n\t\t\tif ( c.showProcessing ) {\n\t\t\t\tts.isProcessing( table ); // remove processing icon\n\t\t\t}\n\t\t\tif ( debug ) {\n\t\t\t\tlen = Math.min( 5, c.cache[ 0 ].normalized.length );\n\t\t\t\tconsole[ console.group ? 'group' : 'log' ]( 'Building cache for ' + c.totalRows +\n\t\t\t\t\t' rows (showing ' + len + ' rows in log) and ' + c.columns + ' columns' +\n\t\t\t\t\tts.benchmark( cacheTime ) );\n\t\t\t\tval = {};\n\t\t\t\tfor ( colIndex = 0; colIndex < c.columns; colIndex++ ) {\n\t\t\t\t\tfor ( cacheIndex = 0; cacheIndex < len; cacheIndex++ ) {\n\t\t\t\t\t\tif ( !val[ 'row: ' + cacheIndex ] ) {\n\t\t\t\t\t\t\tval[ 'row: ' + cacheIndex ] = {};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tval[ 'row: ' + cacheIndex ][ c.$headerIndexed[ colIndex ].text() ] =\n\t\t\t\t\t\t\tc.cache[ 0 ].normalized[ cacheIndex ][ colIndex ];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconsole[ console.table ? 'table' : 'log' ]( val );\n\t\t\t\tif ( console.groupEnd ) { console.groupEnd(); }\n\t\t\t}\n\t\t\tif ( $.isFunction( callback ) ) {\n\t\t\t\tcallback( table );\n\t\t\t}\n\t\t},\n\n\t\tgetColumnText : function( table, column, callback, rowFilter ) {\n\t\t\ttable = $( table )[0];\n\t\t\tvar tbodyIndex, rowIndex, cache, row, tbodyLen, rowLen, raw, parsed, $cell, result,\n\t\t\t\thasCallback = typeof callback === 'function',\n\t\t\t\tallColumns = column === 'all',\n\t\t\t\tdata = { raw : [], parsed: [], $cell: [] },\n\t\t\t\tc = table.config;\n\t\t\tif ( ts.isEmptyObject( c ) ) {\n\t\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\t\tconsole.warn( 'No cache found - aborting getColumnText function!' );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttbodyLen = c.$tbodies.length;\n\t\t\t\tfor ( tbodyIndex = 0; tbodyIndex < tbodyLen; tbodyIndex++ ) {\n\t\t\t\t\tcache = c.cache[ tbodyIndex ].normalized;\n\t\t\t\t\trowLen = cache.length;\n\t\t\t\t\tfor ( rowIndex = 0; rowIndex < rowLen; rowIndex++ ) {\n\t\t\t\t\t\trow = cache[ rowIndex ];\n\t\t\t\t\t\tif ( rowFilter && !row[ c.columns ].$row.is( rowFilter ) ) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresult = true;\n\t\t\t\t\t\tparsed = ( allColumns ) ? row.slice( 0, c.columns ) : row[ column ];\n\t\t\t\t\t\trow = row[ c.columns ];\n\t\t\t\t\t\traw = ( allColumns ) ? row.raw : row.raw[ column ];\n\t\t\t\t\t\t$cell = ( allColumns ) ? row.$row.children() : row.$row.children().eq( column );\n\t\t\t\t\t\tif ( hasCallback ) {\n\t\t\t\t\t\t\tresult = callback({\n\t\t\t\t\t\t\t\ttbodyIndex : tbodyIndex,\n\t\t\t\t\t\t\t\trowIndex : rowIndex,\n\t\t\t\t\t\t\t\tparsed : parsed,\n\t\t\t\t\t\t\t\traw : raw,\n\t\t\t\t\t\t\t\t$row : row.$row,\n\t\t\t\t\t\t\t\t$cell : $cell\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( result !== false ) {\n\t\t\t\t\t\t\tdata.parsed[ data.parsed.length ] = parsed;\n\t\t\t\t\t\t\tdata.raw[ data.raw.length ] = raw;\n\t\t\t\t\t\t\tdata.$cell[ data.$cell.length ] = $cell;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// return everything\n\t\t\t\treturn data;\n\t\t\t}\n\t\t},\n\n\t\t/*\n\t\t██ ██ █████▄ █████▄ ▄████▄ ██████ ██████\n\t\t██ ██ ██▄▄██ ██ ██ ██▄▄██ ██ ██▄▄\n\t\t██ ██ ██▀▀▀ ██ ██ ██▀▀██ ██ ██▀▀\n\t\t▀████▀ ██ █████▀ ██ ██ ██ ██████\n\t\t*/\n\t\tsetHeadersCss : function( c ) {\n\t\t\tvar indx, column,\n\t\t\t\tlist = c.sortList,\n\t\t\t\tlen = list.length,\n\t\t\t\tnone = ts.css.sortNone + ' ' + c.cssNone,\n\t\t\t\tcss = [ ts.css.sortAsc + ' ' + c.cssAsc, ts.css.sortDesc + ' ' + c.cssDesc ],\n\t\t\t\tcssIcon = [ c.cssIconAsc, c.cssIconDesc, c.cssIconNone ],\n\t\t\t\taria = [ 'ascending', 'descending' ],\n\t\t\t\tupdateColumnSort = function($el, index) {\n\t\t\t\t\t$el\n\t\t\t\t\t\t.removeClass( none )\n\t\t\t\t\t\t.addClass( css[ index ] )\n\t\t\t\t\t\t.attr( 'aria-sort', aria[ index ] )\n\t\t\t\t\t\t.find( '.' + ts.css.icon )\n\t\t\t\t\t\t.removeClass( cssIcon[ 2 ] )\n\t\t\t\t\t\t.addClass( cssIcon[ index ] );\n\t\t\t\t},\n\t\t\t\t// find the footer\n\t\t\t\t$extras = c.$table\n\t\t\t\t\t.find( 'tfoot tr' )\n\t\t\t\t\t.children( 'td, th' )\n\t\t\t\t\t.add( $( c.namespace + '_extra_headers' ) )\n\t\t\t\t\t.removeClass( css.join( ' ' ) ),\n\t\t\t\t// remove all header information\n\t\t\t\t$sorted = c.$headers\n\t\t\t\t\t.add( $( 'thead ' + c.namespace + '_extra_headers' ) )\n\t\t\t\t\t.removeClass( css.join( ' ' ) )\n\t\t\t\t\t.addClass( none )\n\t\t\t\t\t.attr( 'aria-sort', 'none' )\n\t\t\t\t\t.find( '.' + ts.css.icon )\n\t\t\t\t\t.removeClass( cssIcon.join( ' ' ) )\n\t\t\t\t\t.end();\n\t\t\t// add css none to all sortable headers\n\t\t\t$sorted\n\t\t\t\t.not( '.sorter-false' )\n\t\t\t\t.find( '.' + ts.css.icon )\n\t\t\t\t.addClass( cssIcon[ 2 ] );\n\t\t\t// add disabled css icon class\n\t\t\tif ( c.cssIconDisabled ) {\n\t\t\t\t$sorted\n\t\t\t\t\t.filter( '.sorter-false' )\n\t\t\t\t\t.find( '.' + ts.css.icon )\n\t\t\t\t\t.addClass( c.cssIconDisabled );\n\t\t\t}\n\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\t// direction = 2 means reset!\n\t\t\t\tif ( list[ indx ][ 1 ] !== 2 ) {\n\t\t\t\t\t// multicolumn sorting updating - see #1005\n\t\t\t\t\t// .not(function() {}) needs jQuery 1.4\n\t\t\t\t\t// filter(function(i, el) {}) <- el is undefined in jQuery v1.2.6\n\t\t\t\t\t$sorted = c.$headers.filter( function( i ) {\n\t\t\t\t\t\t// only include headers that are in the sortList (this includes colspans)\n\t\t\t\t\t\tvar include = true,\n\t\t\t\t\t\t\t$el = c.$headers.eq( i ),\n\t\t\t\t\t\t\tcol = parseInt( $el.attr( 'data-column' ), 10 ),\n\t\t\t\t\t\t\tend = col + ts.getClosest( $el, 'th, td' )[0].colSpan;\n\t\t\t\t\t\tfor ( ; col < end; col++ ) {\n\t\t\t\t\t\t\tinclude = include ? include || ts.isValueInArray( col, c.sortList ) > -1 : false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn include;\n\t\t\t\t\t});\n\n\t\t\t\t\t// choose the :last in case there are nested columns\n\t\t\t\t\t$sorted = $sorted\n\t\t\t\t\t\t.not( '.sorter-false' )\n\t\t\t\t\t\t.filter( '[data-column=\"' + list[ indx ][ 0 ] + '\"]' + ( len === 1 ? ':last' : '' ) );\n\t\t\t\t\tif ( $sorted.length ) {\n\t\t\t\t\t\tfor ( column = 0; column < $sorted.length; column++ ) {\n\t\t\t\t\t\t\tif ( !$sorted[ column ].sortDisabled ) {\n\t\t\t\t\t\t\t\tupdateColumnSort( $sorted.eq( column ), list[ indx ][ 1 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// add sorted class to footer & extra headers, if they exist\n\t\t\t\t\tif ( $extras.length ) {\n\t\t\t\t\t\tupdateColumnSort( $extras.filter( '[data-column=\"' + list[ indx ][ 0 ] + '\"]' ), list[ indx ][ 1 ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// add verbose aria labels\n\t\t\tlen = c.$headers.length;\n\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\tts.setColumnAriaLabel( c, c.$headers.eq( indx ) );\n\t\t\t}\n\t\t},\n\n\t\tgetClosest : function( $el, selector ) {\n\t\t\t// jQuery v1.2.6 doesn't have closest()\n\t\t\tif ( $.fn.closest ) {\n\t\t\t\treturn $el.closest( selector );\n\t\t\t}\n\t\t\treturn $el.is( selector ) ?\n\t\t\t\t$el :\n\t\t\t\t$el.parents( selector ).filter( ':first' );\n\t\t},\n\n\t\t// nextSort (optional), lets you disable next sort text\n\t\tsetColumnAriaLabel : function( c, $header, nextSort ) {\n\t\t\tif ( $header.length ) {\n\t\t\t\tvar column = parseInt( $header.attr( 'data-column' ), 10 ),\n\t\t\t\t\tvars = c.sortVars[ column ],\n\t\t\t\t\ttmp = $header.hasClass( ts.css.sortAsc ) ?\n\t\t\t\t\t\t'sortAsc' :\n\t\t\t\t\t\t$header.hasClass( ts.css.sortDesc ) ? 'sortDesc' : 'sortNone',\n\t\t\t\t\ttxt = $.trim( $header.text() ) + ': ' + ts.language[ tmp ];\n\t\t\t\tif ( $header.hasClass( 'sorter-false' ) || nextSort === false ) {\n\t\t\t\t\ttxt += ts.language.sortDisabled;\n\t\t\t\t} else {\n\t\t\t\t\ttmp = ( vars.count + 1 ) % vars.order.length;\n\t\t\t\t\tnextSort = vars.order[ tmp ];\n\t\t\t\t\t// if nextSort\n\t\t\t\t\ttxt += ts.language[ nextSort === 0 ? 'nextAsc' : nextSort === 1 ? 'nextDesc' : 'nextNone' ];\n\t\t\t\t}\n\t\t\t\t$header.attr( 'aria-label', txt );\n\t\t\t\tif (vars.sortedBy) {\n\t\t\t\t\t$header.attr( 'data-sortedBy', vars.sortedBy );\n\t\t\t\t} else {\n\t\t\t\t\t$header.removeAttr('data-sortedBy');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tupdateHeader : function( c ) {\n\t\t\tvar index, isDisabled, $header, col,\n\t\t\t\ttable = c.table,\n\t\t\t\tlen = c.$headers.length;\n\t\t\tfor ( index = 0; index < len; index++ ) {\n\t\t\t\t$header = c.$headers.eq( index );\n\t\t\t\tcol = ts.getColumnData( table, c.headers, index, true );\n\t\t\t\t// add 'sorter-false' class if 'parser-false' is set\n\t\t\t\tisDisabled = ts.getData( $header, col, 'sorter' ) === 'false' || ts.getData( $header, col, 'parser' ) === 'false';\n\t\t\t\tts.setColumnSort( c, $header, isDisabled );\n\t\t\t}\n\t\t},\n\n\t\tsetColumnSort : function( c, $header, isDisabled ) {\n\t\t\tvar id = c.table.id;\n\t\t\t$header[ 0 ].sortDisabled = isDisabled;\n\t\t\t$header[ isDisabled ? 'addClass' : 'removeClass' ]( 'sorter-false' )\n\t\t\t\t.attr( 'aria-disabled', '' + isDisabled );\n\t\t\t// disable tab index on disabled cells\n\t\t\tif ( c.tabIndex ) {\n\t\t\t\tif ( isDisabled ) {\n\t\t\t\t\t$header.removeAttr( 'tabindex' );\n\t\t\t\t} else {\n\t\t\t\t\t$header.attr( 'tabindex', '0' );\n\t\t\t\t}\n\t\t\t}\n\t\t\t// aria-controls - requires table ID\n\t\t\tif ( id ) {\n\t\t\t\tif ( isDisabled ) {\n\t\t\t\t\t$header.removeAttr( 'aria-controls' );\n\t\t\t\t} else {\n\t\t\t\t\t$header.attr( 'aria-controls', id );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tupdateHeaderSortCount : function( c, list ) {\n\t\t\tvar col, dir, group, indx, primary, temp, val, order,\n\t\t\t\tsortList = list || c.sortList,\n\t\t\t\tlen = sortList.length;\n\t\t\tc.sortList = [];\n\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\tval = sortList[ indx ];\n\t\t\t\t// ensure all sortList values are numeric - fixes #127\n\t\t\t\tcol = parseInt( val[ 0 ], 10 );\n\t\t\t\t// prevents error if sorton array is wrong\n\t\t\t\tif ( col < c.columns ) {\n\n\t\t\t\t\t// set order if not already defined - due to colspan header without associated header cell\n\t\t\t\t\t// adding this check prevents a javascript error\n\t\t\t\t\tif ( !c.sortVars[ col ].order ) {\n\t\t\t\t\t\tif ( ts.getOrder( c.sortInitialOrder ) ) {\n\t\t\t\t\t\t\torder = c.sortReset ? [ 1, 0, 2 ] : [ 1, 0 ];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\torder = c.sortReset ? [ 0, 1, 2 ] : [ 0, 1 ];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tc.sortVars[ col ].order = order;\n\t\t\t\t\t\tc.sortVars[ col ].count = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\torder = c.sortVars[ col ].order;\n\t\t\t\t\tdir = ( '' + val[ 1 ] ).match( /^(1|d|s|o|n)/ );\n\t\t\t\t\tdir = dir ? dir[ 0 ] : '';\n\t\t\t\t\t// 0/(a)sc (default), 1/(d)esc, (s)ame, (o)pposite, (n)ext\n\t\t\t\t\tswitch ( dir ) {\n\t\t\t\t\t\tcase '1' : case 'd' : // descending\n\t\t\t\t\t\t\tdir = 1;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 's' : // same direction (as primary column)\n\t\t\t\t\t\t\t// if primary sort is set to 's', make it ascending\n\t\t\t\t\t\t\tdir = primary || 0;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'o' :\n\t\t\t\t\t\t\ttemp = order[ ( primary || 0 ) % order.length ];\n\t\t\t\t\t\t\t// opposite of primary column; but resets if primary resets\n\t\t\t\t\t\t\tdir = temp === 0 ? 1 : temp === 1 ? 0 : 2;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'n' :\n\t\t\t\t\t\t\tdir = order[ ( ++c.sortVars[ col ].count ) % order.length ];\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault : // ascending\n\t\t\t\t\t\t\tdir = 0;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tprimary = indx === 0 ? dir : primary;\n\t\t\t\t\tgroup = [ col, parseInt( dir, 10 ) || 0 ];\n\t\t\t\t\tc.sortList[ c.sortList.length ] = group;\n\t\t\t\t\tdir = $.inArray( group[ 1 ], order ); // fixes issue #167\n\t\t\t\t\tc.sortVars[ col ].count = dir >= 0 ? dir : group[ 1 ] % order.length;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tupdateAll : function( c, resort, callback ) {\n\t\t\tvar table = c.table;\n\t\t\ttable.isUpdating = true;\n\t\t\tts.refreshWidgets( table, true, true );\n\t\t\tts.buildHeaders( c );\n\t\t\tts.bindEvents( table, c.$headers, true );\n\t\t\tts.bindMethods( c );\n\t\t\tts.commonUpdate( c, resort, callback );\n\t\t},\n\n\t\tupdate : function( c, resort, callback ) {\n\t\t\tvar table = c.table;\n\t\t\ttable.isUpdating = true;\n\t\t\t// update sorting (if enabled/disabled)\n\t\t\tts.updateHeader( c );\n\t\t\tts.commonUpdate( c, resort, callback );\n\t\t},\n\n\t\t// simple header update - see #989\n\t\tupdateHeaders : function( c, callback ) {\n\t\t\tc.table.isUpdating = true;\n\t\t\tts.buildHeaders( c );\n\t\t\tts.bindEvents( c.table, c.$headers, true );\n\t\t\tts.resortComplete( c, callback );\n\t\t},\n\n\t\tupdateCell : function( c, cell, resort, callback ) {\n\t\t\t// updateCell for child rows is a mess - we'll ignore them for now\n\t\t\t// eventually I'll break out the \"update\" row cache code to make everything consistent\n\t\t\tif ( $( cell ).closest( 'tr' ).hasClass( c.cssChildRow ) ) {\n\t\t\t\tconsole.warn('Tablesorter Warning! \"updateCell\" for child row content has been disabled, use \"update\" instead');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( ts.isEmptyObject( c.cache ) ) {\n\t\t\t\t// empty table, do an update instead - fixes #1099\n\t\t\t\tts.updateHeader( c );\n\t\t\t\tts.commonUpdate( c, resort, callback );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tc.table.isUpdating = true;\n\t\t\tc.$table.find( c.selectorRemove ).remove();\n\t\t\t// get position from the dom\n\t\t\tvar tmp, indx, row, icell, cache, len,\n\t\t\t\t$tbodies = c.$tbodies,\n\t\t\t\t$cell = $( cell ),\n\t\t\t\t// update cache - format: function( s, table, cell, cellIndex )\n\t\t\t\t// no closest in jQuery v1.2.6\n\t\t\t\ttbodyIndex = $tbodies.index( ts.getClosest( $cell, 'tbody' ) ),\n\t\t\t\ttbcache = c.cache[ tbodyIndex ],\n\t\t\t\t$row = ts.getClosest( $cell, 'tr' );\n\t\t\tcell = $cell[ 0 ]; // in case cell is a jQuery object\n\t\t\t// tbody may not exist if update is initialized while tbody is removed for processing\n\t\t\tif ( $tbodies.length && tbodyIndex >= 0 ) {\n\t\t\t\trow = $tbodies.eq( tbodyIndex ).find( 'tr' ).not( '.' + c.cssChildRow ).index( $row );\n\t\t\t\tcache = tbcache.normalized[ row ];\n\t\t\t\tlen = $row[ 0 ].cells.length;\n\t\t\t\tif ( len !== c.columns ) {\n\t\t\t\t\t// colspan in here somewhere!\n\t\t\t\t\ticell = 0;\n\t\t\t\t\ttmp = false;\n\t\t\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\t\t\tif ( !tmp && $row[ 0 ].cells[ indx ] !== cell ) {\n\t\t\t\t\t\t\ticell += $row[ 0 ].cells[ indx ].colSpan;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttmp = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ticell = $cell.index();\n\t\t\t\t}\n\t\t\t\ttmp = ts.getElementText( c, cell, icell ); // raw\n\t\t\t\tcache[ c.columns ].raw[ icell ] = tmp;\n\t\t\t\ttmp = ts.getParsedText( c, cell, icell, tmp );\n\t\t\t\tcache[ icell ] = tmp; // parsed\n\t\t\t\tif ( ( c.parsers[ icell ].type || '' ).toLowerCase() === 'numeric' ) {\n\t\t\t\t\t// update column max value (ignore sign)\n\t\t\t\t\ttbcache.colMax[ icell ] = Math.max( Math.abs( tmp ) || 0, tbcache.colMax[ icell ] || 0 );\n\t\t\t\t}\n\t\t\t\ttmp = resort !== 'undefined' ? resort : c.resort;\n\t\t\t\tif ( tmp !== false ) {\n\t\t\t\t\t// widgets will be reapplied\n\t\t\t\t\tts.checkResort( c, tmp, callback );\n\t\t\t\t} else {\n\t\t\t\t\t// don't reapply widgets is resort is false, just in case it causes\n\t\t\t\t\t// problems with element focus\n\t\t\t\t\tts.resortComplete( c, callback );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\t\tconsole.error( 'updateCell aborted, tbody missing or not within the indicated table' );\n\t\t\t\t}\n\t\t\t\tc.table.isUpdating = false;\n\t\t\t}\n\t\t},\n\n\t\taddRows : function( c, $row, resort, callback ) {\n\t\t\tvar txt, val, tbodyIndex, rowIndex, rows, cellIndex, len, order,\n\t\t\t\tcacheIndex, rowData, cells, cell, span,\n\t\t\t\t// allow passing a row string if only one non-info tbody exists in the table\n\t\t\t\tvalid = typeof $row === 'string' && c.$tbodies.length === 1 && /<tr/.test( $row || '' ),\n\t\t\t\ttable = c.table;\n\t\t\tif ( valid ) {\n\t\t\t\t$row = $( $row );\n\t\t\t\tc.$tbodies.append( $row );\n\t\t\t} else if (\n\t\t\t\t!$row ||\n\t\t\t\t// row is a jQuery object?\n\t\t\t\t!( $row instanceof $ ) ||\n\t\t\t\t// row contained in the table?\n\t\t\t\t( ts.getClosest( $row, 'table' )[ 0 ] !== c.table )\n\t\t\t) {\n\t\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\t\tconsole.error( 'addRows method requires (1) a jQuery selector reference to rows that have already ' +\n\t\t\t\t\t\t'been added to the table, or (2) row HTML string to be added to a table with only one tbody' );\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\ttable.isUpdating = true;\n\t\t\tif ( ts.isEmptyObject( c.cache ) ) {\n\t\t\t\t// empty table, do an update instead - fixes #450\n\t\t\t\tts.updateHeader( c );\n\t\t\t\tts.commonUpdate( c, resort, callback );\n\t\t\t} else {\n\t\t\t\trows = $row.filter( 'tr' ).attr( 'role', 'row' ).length;\n\t\t\t\ttbodyIndex = c.$tbodies.index( $row.parents( 'tbody' ).filter( ':first' ) );\n\t\t\t\t// fixes adding rows to an empty table - see issue #179\n\t\t\t\tif ( !( c.parsers && c.parsers.length ) ) {\n\t\t\t\t\tts.setupParsers( c );\n\t\t\t\t}\n\t\t\t\t// add each row\n\t\t\t\tfor ( rowIndex = 0; rowIndex < rows; rowIndex++ ) {\n\t\t\t\t\tcacheIndex = 0;\n\t\t\t\t\tlen = $row[ rowIndex ].cells.length;\n\t\t\t\t\torder = c.cache[ tbodyIndex ].normalized.length;\n\t\t\t\t\tcells = [];\n\t\t\t\t\trowData = {\n\t\t\t\t\t\tchild : [],\n\t\t\t\t\t\traw : [],\n\t\t\t\t\t\t$row : $row.eq( rowIndex ),\n\t\t\t\t\t\torder : order\n\t\t\t\t\t};\n\t\t\t\t\t// add each cell\n\t\t\t\t\tfor ( cellIndex = 0; cellIndex < len; cellIndex++ ) {\n\t\t\t\t\t\tcell = $row[ rowIndex ].cells[ cellIndex ];\n\t\t\t\t\t\ttxt = ts.getElementText( c, cell, cacheIndex );\n\t\t\t\t\t\trowData.raw[ cacheIndex ] = txt;\n\t\t\t\t\t\tval = ts.getParsedText( c, cell, cacheIndex, txt );\n\t\t\t\t\t\tcells[ cacheIndex ] = val;\n\t\t\t\t\t\tif ( ( c.parsers[ cacheIndex ].type || '' ).toLowerCase() === 'numeric' ) {\n\t\t\t\t\t\t\t// update column max value (ignore sign)\n\t\t\t\t\t\t\tc.cache[ tbodyIndex ].colMax[ cacheIndex ] =\n\t\t\t\t\t\t\t\tMath.max( Math.abs( val ) || 0, c.cache[ tbodyIndex ].colMax[ cacheIndex ] || 0 );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tspan = cell.colSpan - 1;\n\t\t\t\t\t\tif ( span > 0 ) {\n\t\t\t\t\t\t\tcacheIndex += span;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcacheIndex++;\n\t\t\t\t\t}\n\t\t\t\t\t// add the row data to the end\n\t\t\t\t\tcells[ c.columns ] = rowData;\n\t\t\t\t\t// update cache\n\t\t\t\t\tc.cache[ tbodyIndex ].normalized[ order ] = cells;\n\t\t\t\t}\n\t\t\t\t// resort using current settings\n\t\t\t\tts.checkResort( c, resort, callback );\n\t\t\t}\n\t\t},\n\n\t\tupdateCache : function( c, callback, $tbodies ) {\n\t\t\t// rebuild parsers\n\t\t\tif ( !( c.parsers && c.parsers.length ) ) {\n\t\t\t\tts.setupParsers( c, $tbodies );\n\t\t\t}\n\t\t\t// rebuild the cache map\n\t\t\tts.buildCache( c, callback, $tbodies );\n\t\t},\n\n\t\t// init flag (true) used by pager plugin to prevent widget application\n\t\t// renamed from appendToTable\n\t\tappendCache : function( c, init ) {\n\t\t\tvar parsed, totalRows, $tbody, $curTbody, rowIndex, tbodyIndex, appendTime,\n\t\t\t\ttable = c.table,\n\t\t\t\t$tbodies = c.$tbodies,\n\t\t\t\trows = [],\n\t\t\t\tcache = c.cache;\n\t\t\t// empty table - fixes #206/#346\n\t\t\tif ( ts.isEmptyObject( cache ) ) {\n\t\t\t\t// run pager appender in case the table was just emptied\n\t\t\t\treturn c.appender ? c.appender( table, rows ) :\n\t\t\t\t\ttable.isUpdating ? c.$table.triggerHandler( 'updateComplete', table ) : ''; // Fixes #532\n\t\t\t}\n\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\tappendTime = new Date();\n\t\t\t}\n\t\t\tfor ( tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ) {\n\t\t\t\t$tbody = $tbodies.eq( tbodyIndex );\n\t\t\t\tif ( $tbody.length ) {\n\t\t\t\t\t// detach tbody for manipulation\n\t\t\t\t\t$curTbody = ts.processTbody( table, $tbody, true );\n\t\t\t\t\tparsed = cache[ tbodyIndex ].normalized;\n\t\t\t\t\ttotalRows = parsed.length;\n\t\t\t\t\tfor ( rowIndex = 0; rowIndex < totalRows; rowIndex++ ) {\n\t\t\t\t\t\trows[rows.length] = parsed[ rowIndex ][ c.columns ].$row;\n\t\t\t\t\t\t// removeRows used by the pager plugin; don't render if using ajax - fixes #411\n\t\t\t\t\t\tif ( !c.appender || ( c.pager && !c.pager.removeRows && !c.pager.ajax ) ) {\n\t\t\t\t\t\t\t$curTbody.append( parsed[ rowIndex ][ c.columns ].$row );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// restore tbody\n\t\t\t\t\tts.processTbody( table, $curTbody, false );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( c.appender ) {\n\t\t\t\tc.appender( table, rows );\n\t\t\t}\n\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\tconsole.log( 'Rebuilt table' + ts.benchmark( appendTime ) );\n\t\t\t}\n\t\t\t// apply table widgets; but not before ajax completes\n\t\t\tif ( !init && !c.appender ) {\n\t\t\t\tts.applyWidget( table );\n\t\t\t}\n\t\t\tif ( table.isUpdating ) {\n\t\t\t\tc.$table.triggerHandler( 'updateComplete', table );\n\t\t\t}\n\t\t},\n\n\t\tcommonUpdate : function( c, resort, callback ) {\n\t\t\t// remove rows/elements before update\n\t\t\tc.$table.find( c.selectorRemove ).remove();\n\t\t\t// rebuild parsers\n\t\t\tts.setupParsers( c );\n\t\t\t// rebuild the cache map\n\t\t\tts.buildCache( c );\n\t\t\tts.checkResort( c, resort, callback );\n\t\t},\n\n\t\t/*\n\t\t▄█████ ▄████▄ █████▄ ██████ ██ █████▄ ▄████▄\n\t\t▀█▄ ██ ██ ██▄▄██ ██ ██ ██ ██ ██ â–„â–„â–„\n\t\t ▀█▄ ██ ██ ██▀██ ██ ██ ██ ██ ██ ▀██\n\t\t█████▀ ▀████▀ ██ ██ ██ ██ ██ ██ ▀████▀\n\t\t*/\n\t\tinitSort : function( c, cell, event ) {\n\t\t\tif ( c.table.isUpdating ) {\n\t\t\t\t// let any updates complete before initializing a sort\n\t\t\t\treturn setTimeout( function() {\n\t\t\t\t\tts.initSort( c, cell, event );\n\t\t\t\t}, 50 );\n\t\t\t}\n\n\t\t\tvar arry, indx, headerIndx, dir, temp, tmp, $header,\n\t\t\t\tnotMultiSort = !event[ c.sortMultiSortKey ],\n\t\t\t\ttable = c.table,\n\t\t\t\tlen = c.$headers.length,\n\t\t\t\tth = ts.getClosest( $( cell ), 'th, td' ),\n\t\t\t\tcol = parseInt( th.attr( 'data-column' ), 10 ),\n\t\t\t\tsortedBy = event.type === 'mouseup' ? 'user' : event.type,\n\t\t\t\torder = c.sortVars[ col ].order;\n\t\t\tth = th[0];\n\t\t\t// Only call sortStart if sorting is enabled\n\t\t\tc.$table.triggerHandler( 'sortStart', table );\n\t\t\t// get current column sort order\n\t\t\ttmp = ( c.sortVars[ col ].count + 1 ) % order.length;\n\t\t\tc.sortVars[ col ].count = event[ c.sortResetKey ] ? 2 : tmp;\n\t\t\t// reset all sorts on non-current column - issue #30\n\t\t\tif ( c.sortRestart ) {\n\t\t\t\tfor ( headerIndx = 0; headerIndx < len; headerIndx++ ) {\n\t\t\t\t\t$header = c.$headers.eq( headerIndx );\n\t\t\t\t\ttmp = parseInt( $header.attr( 'data-column' ), 10 );\n\t\t\t\t\t// only reset counts on columns that weren't just clicked on and if not included in a multisort\n\t\t\t\t\tif ( col !== tmp && ( notMultiSort || $header.hasClass( ts.css.sortNone ) ) ) {\n\t\t\t\t\t\tc.sortVars[ tmp ].count = -1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// user only wants to sort on one column\n\t\t\tif ( notMultiSort ) {\n\t\t\t\t$.each( c.sortVars, function( i ) {\n\t\t\t\t\tc.sortVars[ i ].sortedBy = '';\n\t\t\t\t});\n\t\t\t\t// flush the sort list\n\t\t\t\tc.sortList = [];\n\t\t\t\tc.last.sortList = [];\n\t\t\t\tif ( c.sortForce !== null ) {\n\t\t\t\t\tarry = c.sortForce;\n\t\t\t\t\tfor ( indx = 0; indx < arry.length; indx++ ) {\n\t\t\t\t\t\tif ( arry[ indx ][ 0 ] !== col ) {\n\t\t\t\t\t\t\tc.sortList[ c.sortList.length ] = arry[ indx ];\n\t\t\t\t\t\t\tc.sortVars[ arry[ indx ][ 0 ] ].sortedBy = 'sortForce';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// add column to sort list\n\t\t\t\tdir = order[ c.sortVars[ col ].count ];\n\t\t\t\tif ( dir < 2 ) {\n\t\t\t\t\tc.sortList[ c.sortList.length ] = [ col, dir ];\n\t\t\t\t\tc.sortVars[ col ].sortedBy = sortedBy;\n\t\t\t\t\t// add other columns if header spans across multiple\n\t\t\t\t\tif ( th.colSpan > 1 ) {\n\t\t\t\t\t\tfor ( indx = 1; indx < th.colSpan; indx++ ) {\n\t\t\t\t\t\t\tc.sortList[ c.sortList.length ] = [ col + indx, dir ];\n\t\t\t\t\t\t\t// update count on columns in colSpan\n\t\t\t\t\t\t\tc.sortVars[ col + indx ].count = $.inArray( dir, order );\n\t\t\t\t\t\t\tc.sortVars[ col + indx ].sortedBy = sortedBy;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// multi column sorting\n\t\t\t} else {\n\t\t\t\t// get rid of the sortAppend before adding more - fixes issue #115 & #523\n\t\t\t\tc.sortList = $.extend( [], c.last.sortList );\n\n\t\t\t\t// the user has clicked on an already sorted column\n\t\t\t\tif ( ts.isValueInArray( col, c.sortList ) >= 0 ) {\n\t\t\t\t\t// reverse the sorting direction\n\t\t\t\t\tc.sortVars[ col ].sortedBy = sortedBy;\n\t\t\t\t\tfor ( indx = 0; indx < c.sortList.length; indx++ ) {\n\t\t\t\t\t\ttmp = c.sortList[ indx ];\n\t\t\t\t\t\tif ( tmp[ 0 ] === col ) {\n\t\t\t\t\t\t\t// order.count seems to be incorrect when compared to cell.count\n\t\t\t\t\t\t\ttmp[ 1 ] = order[ c.sortVars[ col ].count ];\n\t\t\t\t\t\t\tif ( tmp[1] === 2 ) {\n\t\t\t\t\t\t\t\tc.sortList.splice( indx, 1 );\n\t\t\t\t\t\t\t\tc.sortVars[ col ].count = -1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// add column to sort list array\n\t\t\t\t\tdir = order[ c.sortVars[ col ].count ];\n\t\t\t\t\tc.sortVars[ col ].sortedBy = sortedBy;\n\t\t\t\t\tif ( dir < 2 ) {\n\t\t\t\t\t\tc.sortList[ c.sortList.length ] = [ col, dir ];\n\t\t\t\t\t\t// add other columns if header spans across multiple\n\t\t\t\t\t\tif ( th.colSpan > 1 ) {\n\t\t\t\t\t\t\tfor ( indx = 1; indx < th.colSpan; indx++ ) {\n\t\t\t\t\t\t\t\tc.sortList[ c.sortList.length ] = [ col + indx, dir ];\n\t\t\t\t\t\t\t\t// update count on columns in colSpan\n\t\t\t\t\t\t\t\tc.sortVars[ col + indx ].count = $.inArray( dir, order );\n\t\t\t\t\t\t\t\tc.sortVars[ col + indx ].sortedBy = sortedBy;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// save sort before applying sortAppend\n\t\t\tc.last.sortList = $.extend( [], c.sortList );\n\t\t\tif ( c.sortList.length && c.sortAppend ) {\n\t\t\t\tarry = $.isArray( c.sortAppend ) ? c.sortAppend : c.sortAppend[ c.sortList[ 0 ][ 0 ] ];\n\t\t\t\tif ( !ts.isEmptyObject( arry ) ) {\n\t\t\t\t\tfor ( indx = 0; indx < arry.length; indx++ ) {\n\t\t\t\t\t\tif ( arry[ indx ][ 0 ] !== col && ts.isValueInArray( arry[ indx ][ 0 ], c.sortList ) < 0 ) {\n\t\t\t\t\t\t\tdir = arry[ indx ][ 1 ];\n\t\t\t\t\t\t\ttemp = ( '' + dir ).match( /^(a|d|s|o|n)/ );\n\t\t\t\t\t\t\tif ( temp ) {\n\t\t\t\t\t\t\t\ttmp = c.sortList[ 0 ][ 1 ];\n\t\t\t\t\t\t\t\tswitch ( temp[ 0 ] ) {\n\t\t\t\t\t\t\t\t\tcase 'd' :\n\t\t\t\t\t\t\t\t\t\tdir = 1;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 's' :\n\t\t\t\t\t\t\t\t\t\tdir = tmp;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 'o' :\n\t\t\t\t\t\t\t\t\t\tdir = tmp === 0 ? 1 : 0;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tcase 'n' :\n\t\t\t\t\t\t\t\t\t\tdir = ( tmp + 1 ) % order.length;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tdir = 0;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tc.sortList[ c.sortList.length ] = [ arry[ indx ][ 0 ], dir ];\n\t\t\t\t\t\t\tc.sortVars[ arry[ indx ][ 0 ] ].sortedBy = 'sortAppend';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// sortBegin event triggered immediately before the sort\n\t\t\tc.$table.triggerHandler( 'sortBegin', table );\n\t\t\t// setTimeout needed so the processing icon shows up\n\t\t\tsetTimeout( function() {\n\t\t\t\t// set css for headers\n\t\t\t\tts.setHeadersCss( c );\n\t\t\t\tts.multisort( c );\n\t\t\t\tts.appendCache( c );\n\t\t\t\tc.$table.triggerHandler( 'sortBeforeEnd', table );\n\t\t\t\tc.$table.triggerHandler( 'sortEnd', table );\n\t\t\t}, 1 );\n\t\t},\n\n\t\t// sort multiple columns\n\t\tmultisort : function( c ) { /*jshint loopfunc:true */\n\t\t\tvar tbodyIndex, sortTime, colMax, rows, tmp,\n\t\t\t\ttable = c.table,\n\t\t\t\tsorter = [],\n\t\t\t\tdir = 0,\n\t\t\t\ttextSorter = c.textSorter || '',\n\t\t\t\tsortList = c.sortList,\n\t\t\t\tsortLen = sortList.length,\n\t\t\t\tlen = c.$tbodies.length;\n\t\t\tif ( c.serverSideSorting || ts.isEmptyObject( c.cache ) ) {\n\t\t\t\t// empty table - fixes #206/#346\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( ts.debug(c, 'core') ) { sortTime = new Date(); }\n\t\t\t// cache textSorter to optimize speed\n\t\t\tif ( typeof textSorter === 'object' ) {\n\t\t\t\tcolMax = c.columns;\n\t\t\t\twhile ( colMax-- ) {\n\t\t\t\t\ttmp = ts.getColumnData( table, textSorter, colMax );\n\t\t\t\t\tif ( typeof tmp === 'function' ) {\n\t\t\t\t\t\tsorter[ colMax ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor ( tbodyIndex = 0; tbodyIndex < len; tbodyIndex++ ) {\n\t\t\t\tcolMax = c.cache[ tbodyIndex ].colMax;\n\t\t\t\trows = c.cache[ tbodyIndex ].normalized;\n\n\t\t\t\trows.sort( function( a, b ) {\n\t\t\t\t\tvar sortIndex, num, col, order, sort, x, y;\n\t\t\t\t\t// rows is undefined here in IE, so don't use it!\n\t\t\t\t\tfor ( sortIndex = 0; sortIndex < sortLen; sortIndex++ ) {\n\t\t\t\t\t\tcol = sortList[ sortIndex ][ 0 ];\n\t\t\t\t\t\torder = sortList[ sortIndex ][ 1 ];\n\t\t\t\t\t\t// sort direction, true = asc, false = desc\n\t\t\t\t\t\tdir = order === 0;\n\n\t\t\t\t\t\tif ( c.sortStable && a[ col ] === b[ col ] && sortLen === 1 ) {\n\t\t\t\t\t\t\treturn a[ c.columns ].order - b[ c.columns ].order;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// fallback to natural sort since it is more robust\n\t\t\t\t\t\tnum = /n/i.test( ts.getSortType( c.parsers, col ) );\n\t\t\t\t\t\tif ( num && c.strings[ col ] ) {\n\t\t\t\t\t\t\t// sort strings in numerical columns\n\t\t\t\t\t\t\tif ( typeof ( ts.string[ c.strings[ col ] ] ) === 'boolean' ) {\n\t\t\t\t\t\t\t\tnum = ( dir ? 1 : -1 ) * ( ts.string[ c.strings[ col ] ] ? -1 : 1 );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tnum = ( c.strings[ col ] ) ? ts.string[ c.strings[ col ] ] || 0 : 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// fall back to built-in numeric sort\n\t\t\t\t\t\t\t// var sort = $.tablesorter['sort' + s]( a[col], b[col], dir, colMax[col], table );\n\t\t\t\t\t\t\tsort = c.numberSorter ? c.numberSorter( a[ col ], b[ col ], dir, colMax[ col ], table ) :\n\t\t\t\t\t\t\t\tts[ 'sortNumeric' + ( dir ? 'Asc' : 'Desc' ) ]( a[ col ], b[ col ], num, colMax[ col ], col, c );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// set a & b depending on sort direction\n\t\t\t\t\t\t\tx = dir ? a : b;\n\t\t\t\t\t\t\ty = dir ? b : a;\n\t\t\t\t\t\t\t// text sort function\n\t\t\t\t\t\t\tif ( typeof textSorter === 'function' ) {\n\t\t\t\t\t\t\t\t// custom OVERALL text sorter\n\t\t\t\t\t\t\t\tsort = textSorter( x[ col ], y[ col ], dir, col, table );\n\t\t\t\t\t\t\t} else if ( typeof sorter[ col ] === 'function' ) {\n\t\t\t\t\t\t\t\t// custom text sorter for a SPECIFIC COLUMN\n\t\t\t\t\t\t\t\tsort = sorter[ col ]( x[ col ], y[ col ], dir, col, table );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// fall back to natural sort\n\t\t\t\t\t\t\t\tsort = ts[ 'sortNatural' + ( dir ? 'Asc' : 'Desc' ) ]( a[ col ] || '', b[ col ] || '', col, c );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( sort ) { return sort; }\n\t\t\t\t\t}\n\t\t\t\t\treturn a[ c.columns ].order - b[ c.columns ].order;\n\t\t\t\t});\n\t\t\t}\n\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\tconsole.log( 'Applying sort ' + sortList.toString() + ts.benchmark( sortTime ) );\n\t\t\t}\n\t\t},\n\n\t\tresortComplete : function( c, callback ) {\n\t\t\tif ( c.table.isUpdating ) {\n\t\t\t\tc.$table.triggerHandler( 'updateComplete', c.table );\n\t\t\t}\n\t\t\tif ( $.isFunction( callback ) ) {\n\t\t\t\tcallback( c.table );\n\t\t\t}\n\t\t},\n\n\t\tcheckResort : function( c, resort, callback ) {\n\t\t\tvar sortList = $.isArray( resort ) ? resort : c.sortList,\n\t\t\t\t// if no resort parameter is passed, fallback to config.resort (true by default)\n\t\t\t\tresrt = typeof resort === 'undefined' ? c.resort : resort;\n\t\t\t// don't try to resort if the table is still processing\n\t\t\t// this will catch spamming of the updateCell method\n\t\t\tif ( resrt !== false && !c.serverSideSorting && !c.table.isProcessing ) {\n\t\t\t\tif ( sortList.length ) {\n\t\t\t\t\tts.sortOn( c, sortList, function() {\n\t\t\t\t\t\tts.resortComplete( c, callback );\n\t\t\t\t\t}, true );\n\t\t\t\t} else {\n\t\t\t\t\tts.sortReset( c, function() {\n\t\t\t\t\t\tts.resortComplete( c, callback );\n\t\t\t\t\t\tts.applyWidget( c.table, false );\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tts.resortComplete( c, callback );\n\t\t\t\tts.applyWidget( c.table, false );\n\t\t\t}\n\t\t},\n\n\t\tsortOn : function( c, list, callback, init ) {\n\t\t\tvar indx,\n\t\t\t\ttable = c.table;\n\t\t\tc.$table.triggerHandler( 'sortStart', table );\n\t\t\tfor (indx = 0; indx < c.columns; indx++) {\n\t\t\t\tc.sortVars[ indx ].sortedBy = ts.isValueInArray( indx, list ) > -1 ? 'sorton' : '';\n\t\t\t}\n\t\t\t// update header count index\n\t\t\tts.updateHeaderSortCount( c, list );\n\t\t\t// set css for headers\n\t\t\tts.setHeadersCss( c );\n\t\t\t// fixes #346\n\t\t\tif ( c.delayInit && ts.isEmptyObject( c.cache ) ) {\n\t\t\t\tts.buildCache( c );\n\t\t\t}\n\t\t\tc.$table.triggerHandler( 'sortBegin', table );\n\t\t\t// sort the table and append it to the dom\n\t\t\tts.multisort( c );\n\t\t\tts.appendCache( c, init );\n\t\t\tc.$table.triggerHandler( 'sortBeforeEnd', table );\n\t\t\tc.$table.triggerHandler( 'sortEnd', table );\n\t\t\tts.applyWidget( table );\n\t\t\tif ( $.isFunction( callback ) ) {\n\t\t\t\tcallback( table );\n\t\t\t}\n\t\t},\n\n\t\tsortReset : function( c, callback ) {\n\t\t\tc.sortList = [];\n\t\t\tvar indx;\n\t\t\tfor (indx = 0; indx < c.columns; indx++) {\n\t\t\t\tc.sortVars[ indx ].count = -1;\n\t\t\t\tc.sortVars[ indx ].sortedBy = '';\n\t\t\t}\n\t\t\tts.setHeadersCss( c );\n\t\t\tts.multisort( c );\n\t\t\tts.appendCache( c );\n\t\t\tif ( $.isFunction( callback ) ) {\n\t\t\t\tcallback( c.table );\n\t\t\t}\n\t\t},\n\n\t\tgetSortType : function( parsers, column ) {\n\t\t\treturn ( parsers && parsers[ column ] ) ? parsers[ column ].type || '' : '';\n\t\t},\n\n\t\tgetOrder : function( val ) {\n\t\t\t// look for 'd' in 'desc' order; return true\n\t\t\treturn ( /^d/i.test( val ) || val === 1 );\n\t\t},\n\n\t\t// Natural sort - https://github.com/overset/javascript-natural-sort (date sorting removed)\n\t\tsortNatural : function( a, b ) {\n\t\t\tif ( a === b ) { return 0; }\n\t\t\ta = ( a || '' ).toString();\n\t\t\tb = ( b || '' ).toString();\n\t\t\tvar aNum, bNum, aFloat, bFloat, indx, max,\n\t\t\t\tregex = ts.regex;\n\t\t\t// first try and sort Hex codes\n\t\t\tif ( regex.hex.test( b ) ) {\n\t\t\t\taNum = parseInt( a.match( regex.hex ), 16 );\n\t\t\t\tbNum = parseInt( b.match( regex.hex ), 16 );\n\t\t\t\tif ( aNum < bNum ) { return -1; }\n\t\t\t\tif ( aNum > bNum ) { return 1; }\n\t\t\t}\n\t\t\t// chunk/tokenize\n\t\t\taNum = a.replace( regex.chunk, '\\\\0$1\\\\0' ).replace( regex.chunks, '' ).split( '\\\\0' );\n\t\t\tbNum = b.replace( regex.chunk, '\\\\0$1\\\\0' ).replace( regex.chunks, '' ).split( '\\\\0' );\n\t\t\tmax = Math.max( aNum.length, bNum.length );\n\t\t\t// natural sorting through split numeric strings and default strings\n\t\t\tfor ( indx = 0; indx < max; indx++ ) {\n\t\t\t\t// find floats not starting with '0', string or 0 if not defined\n\t\t\t\taFloat = isNaN( aNum[ indx ] ) ? aNum[ indx ] || 0 : parseFloat( aNum[ indx ] ) || 0;\n\t\t\t\tbFloat = isNaN( bNum[ indx ] ) ? bNum[ indx ] || 0 : parseFloat( bNum[ indx ] ) || 0;\n\t\t\t\t// handle numeric vs string comparison - number < string - (Kyle Adams)\n\t\t\t\tif ( isNaN( aFloat ) !== isNaN( bFloat ) ) { return isNaN( aFloat ) ? 1 : -1; }\n\t\t\t\t// rely on string comparison if different types - i.e. '02' < 2 != '02' < '2'\n\t\t\t\tif ( typeof aFloat !== typeof bFloat ) {\n\t\t\t\t\taFloat += '';\n\t\t\t\t\tbFloat += '';\n\t\t\t\t}\n\t\t\t\tif ( aFloat < bFloat ) { return -1; }\n\t\t\t\tif ( aFloat > bFloat ) { return 1; }\n\t\t\t}\n\t\t\treturn 0;\n\t\t},\n\n\t\tsortNaturalAsc : function( a, b, col, c ) {\n\t\t\tif ( a === b ) { return 0; }\n\t\t\tvar empty = ts.string[ ( c.empties[ col ] || c.emptyTo ) ];\n\t\t\tif ( a === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? -1 : 1 ) : -empty || -1; }\n\t\t\tif ( b === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? 1 : -1 ) : empty || 1; }\n\t\t\treturn ts.sortNatural( a, b );\n\t\t},\n\n\t\tsortNaturalDesc : function( a, b, col, c ) {\n\t\t\tif ( a === b ) { return 0; }\n\t\t\tvar empty = ts.string[ ( c.empties[ col ] || c.emptyTo ) ];\n\t\t\tif ( a === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? -1 : 1 ) : empty || 1; }\n\t\t\tif ( b === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? 1 : -1 ) : -empty || -1; }\n\t\t\treturn ts.sortNatural( b, a );\n\t\t},\n\n\t\t// basic alphabetical sort\n\t\tsortText : function( a, b ) {\n\t\t\treturn a > b ? 1 : ( a < b ? -1 : 0 );\n\t\t},\n\n\t\t// return text string value by adding up ascii value\n\t\t// so the text is somewhat sorted when using a digital sort\n\t\t// this is NOT an alphanumeric sort\n\t\tgetTextValue : function( val, num, max ) {\n\t\t\tif ( max ) {\n\t\t\t\t// make sure the text value is greater than the max numerical value (max)\n\t\t\t\tvar indx,\n\t\t\t\t\tlen = val ? val.length : 0,\n\t\t\t\t\tn = max + num;\n\t\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\t\tn += val.charCodeAt( indx );\n\t\t\t\t}\n\t\t\t\treturn num * n;\n\t\t\t}\n\t\t\treturn 0;\n\t\t},\n\n\t\tsortNumericAsc : function( a, b, num, max, col, c ) {\n\t\t\tif ( a === b ) { return 0; }\n\t\t\tvar empty = ts.string[ ( c.empties[ col ] || c.emptyTo ) ];\n\t\t\tif ( a === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? -1 : 1 ) : -empty || -1; }\n\t\t\tif ( b === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? 1 : -1 ) : empty || 1; }\n\t\t\tif ( isNaN( a ) ) { a = ts.getTextValue( a, num, max ); }\n\t\t\tif ( isNaN( b ) ) { b = ts.getTextValue( b, num, max ); }\n\t\t\treturn a - b;\n\t\t},\n\n\t\tsortNumericDesc : function( a, b, num, max, col, c ) {\n\t\t\tif ( a === b ) { return 0; }\n\t\t\tvar empty = ts.string[ ( c.empties[ col ] || c.emptyTo ) ];\n\t\t\tif ( a === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? -1 : 1 ) : empty || 1; }\n\t\t\tif ( b === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? 1 : -1 ) : -empty || -1; }\n\t\t\tif ( isNaN( a ) ) { a = ts.getTextValue( a, num, max ); }\n\t\t\tif ( isNaN( b ) ) { b = ts.getTextValue( b, num, max ); }\n\t\t\treturn b - a;\n\t\t},\n\n\t\tsortNumeric : function( a, b ) {\n\t\t\treturn a - b;\n\t\t},\n\n\t\t/*\n\t\t██ ██ ██ ██ █████▄ ▄████▄ ██████ ██████ ▄█████\n\t\t██ ██ ██ ██ ██ ██ ██ â–„â–„â–„ ██▄▄ ██ ▀█▄\n\t\t██ ██ ██ ██ ██ ██ ██ ▀██ ██▀▀ ██ ▀█▄\n\t\t███████▀ ██ █████▀ ▀████▀ ██████ ██ █████▀\n\t\t*/\n\t\taddWidget : function( widget ) {\n\t\t\tif ( widget.id && !ts.isEmptyObject( ts.getWidgetById( widget.id ) ) ) {\n\t\t\t\tconsole.warn( '\"' + widget.id + '\" widget was loaded more than once!' );\n\t\t\t}\n\t\t\tts.widgets[ ts.widgets.length ] = widget;\n\t\t},\n\n\t\thasWidget : function( $table, name ) {\n\t\t\t$table = $( $table );\n\t\t\treturn $table.length && $table[ 0 ].config && $table[ 0 ].config.widgetInit[ name ] || false;\n\t\t},\n\n\t\tgetWidgetById : function( name ) {\n\t\t\tvar indx, widget,\n\t\t\t\tlen = ts.widgets.length;\n\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\twidget = ts.widgets[ indx ];\n\t\t\t\tif ( widget && widget.id && widget.id.toLowerCase() === name.toLowerCase() ) {\n\t\t\t\t\treturn widget;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tapplyWidgetOptions : function( table ) {\n\t\t\tvar indx, widget, wo,\n\t\t\t\tc = table.config,\n\t\t\t\tlen = c.widgets.length;\n\t\t\tif ( len ) {\n\t\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\t\twidget = ts.getWidgetById( c.widgets[ indx ] );\n\t\t\t\t\tif ( widget && widget.options ) {\n\t\t\t\t\t\two = $.extend( true, {}, widget.options );\n\t\t\t\t\t\tc.widgetOptions = $.extend( true, wo, c.widgetOptions );\n\t\t\t\t\t\t// add widgetOptions to defaults for option validator\n\t\t\t\t\t\t$.extend( true, ts.defaults.widgetOptions, widget.options );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\taddWidgetFromClass : function( table ) {\n\t\t\tvar len, indx,\n\t\t\t\tc = table.config,\n\t\t\t\t// look for widgets to apply from table class\n\t\t\t\t// don't match from 'ui-widget-content'; use \\S instead of \\w to include widgets\n\t\t\t\t// with dashes in the name, e.g. \"widget-test-2\" extracts out \"test-2\"\n\t\t\t\tregex = '^' + c.widgetClass.replace( ts.regex.templateName, '(\\\\S+)+' ) + '$',\n\t\t\t\twidgetClass = new RegExp( regex, 'g' ),\n\t\t\t\t// split up table class (widget id's can include dashes) - stop using match\n\t\t\t\t// otherwise only one widget gets extracted, see #1109\n\t\t\t\twidgets = ( table.className || '' ).split( ts.regex.spaces );\n\t\t\tif ( widgets.length ) {\n\t\t\t\tlen = widgets.length;\n\t\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\t\tif ( widgets[ indx ].match( widgetClass ) ) {\n\t\t\t\t\t\tc.widgets[ c.widgets.length ] = widgets[ indx ].replace( widgetClass, '$1' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tapplyWidgetId : function( table, id, init ) {\n\t\t\ttable = $(table)[0];\n\t\t\tvar applied, time, name,\n\t\t\t\tc = table.config,\n\t\t\t\two = c.widgetOptions,\n\t\t\t\tdebug = ts.debug(c, 'core'),\n\t\t\t\twidget = ts.getWidgetById( id );\n\t\t\tif ( widget ) {\n\t\t\t\tname = widget.id;\n\t\t\t\tapplied = false;\n\t\t\t\t// add widget name to option list so it gets reapplied after sorting, filtering, etc\n\t\t\t\tif ( $.inArray( name, c.widgets ) < 0 ) {\n\t\t\t\t\tc.widgets[ c.widgets.length ] = name;\n\t\t\t\t}\n\t\t\t\tif ( debug ) { time = new Date(); }\n\n\t\t\t\tif ( init || !( c.widgetInit[ name ] ) ) {\n\t\t\t\t\t// set init flag first to prevent calling init more than once (e.g. pager)\n\t\t\t\t\tc.widgetInit[ name ] = true;\n\t\t\t\t\tif ( table.hasInitialized ) {\n\t\t\t\t\t\t// don't reapply widget options on tablesorter init\n\t\t\t\t\t\tts.applyWidgetOptions( table );\n\t\t\t\t\t}\n\t\t\t\t\tif ( typeof widget.init === 'function' ) {\n\t\t\t\t\t\tapplied = true;\n\t\t\t\t\t\tif ( debug ) {\n\t\t\t\t\t\t\tconsole[ console.group ? 'group' : 'log' ]( 'Initializing ' + name + ' widget' );\n\t\t\t\t\t\t}\n\t\t\t\t\t\twidget.init( table, widget, c, wo );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif ( !init && typeof widget.format === 'function' ) {\n\t\t\t\t\tapplied = true;\n\t\t\t\t\tif ( debug ) {\n\t\t\t\t\t\tconsole[ console.group ? 'group' : 'log' ]( 'Updating ' + name + ' widget' );\n\t\t\t\t\t}\n\t\t\t\t\twidget.format( table, c, wo, false );\n\t\t\t\t}\n\t\t\t\tif ( debug ) {\n\t\t\t\t\tif ( applied ) {\n\t\t\t\t\t\tconsole.log( 'Completed ' + ( init ? 'initializing ' : 'applying ' ) + name + ' widget' + ts.benchmark( time ) );\n\t\t\t\t\t\tif ( console.groupEnd ) { console.groupEnd(); }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tapplyWidget : function( table, init, callback ) {\n\t\t\ttable = $( table )[ 0 ]; // in case this is called externally\n\t\t\tvar indx, len, names, widget, time,\n\t\t\t\tc = table.config,\n\t\t\t\tdebug = ts.debug(c, 'core'),\n\t\t\t\twidgets = [];\n\t\t\t// prevent numerous consecutive widget applications\n\t\t\tif ( init !== false && table.hasInitialized && ( table.isApplyingWidgets || table.isUpdating ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( debug ) { time = new Date(); }\n\t\t\tts.addWidgetFromClass( table );\n\t\t\t// prevent \"tablesorter-ready\" from firing multiple times in a row\n\t\t\tclearTimeout( c.timerReady );\n\t\t\tif ( c.widgets.length ) {\n\t\t\t\ttable.isApplyingWidgets = true;\n\t\t\t\t// ensure unique widget ids\n\t\t\t\tc.widgets = $.grep( c.widgets, function( val, index ) {\n\t\t\t\t\treturn $.inArray( val, c.widgets ) === index;\n\t\t\t\t});\n\t\t\t\tnames = c.widgets || [];\n\t\t\t\tlen = names.length;\n\t\t\t\t// build widget array & add priority as needed\n\t\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\t\twidget = ts.getWidgetById( names[ indx ] );\n\t\t\t\t\tif ( widget && widget.id ) {\n\t\t\t\t\t\t// set priority to 10 if not defined\n\t\t\t\t\t\tif ( !widget.priority ) { widget.priority = 10; }\n\t\t\t\t\t\twidgets[ indx ] = widget;\n\t\t\t\t\t} else if ( debug ) {\n\t\t\t\t\t\tconsole.warn( '\"' + names[ indx ] + '\" was enabled, but the widget code has not been loaded!' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// sort widgets by priority\n\t\t\t\twidgets.sort( function( a, b ) {\n\t\t\t\t\treturn a.priority < b.priority ? -1 : a.priority === b.priority ? 0 : 1;\n\t\t\t\t});\n\t\t\t\t// add/update selected widgets\n\t\t\t\tlen = widgets.length;\n\t\t\t\tif ( debug ) {\n\t\t\t\t\tconsole[ console.group ? 'group' : 'log' ]( 'Start ' + ( init ? 'initializing' : 'applying' ) + ' widgets' );\n\t\t\t\t}\n\t\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\t\twidget = widgets[ indx ];\n\t\t\t\t\tif ( widget && widget.id ) {\n\t\t\t\t\t\tts.applyWidgetId( table, widget.id, init );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif ( debug && console.groupEnd ) { console.groupEnd(); }\n\t\t\t}\n\t\t\tc.timerReady = setTimeout( function() {\n\t\t\t\ttable.isApplyingWidgets = false;\n\t\t\t\t$.data( table, 'lastWidgetApplication', new Date() );\n\t\t\t\tc.$table.triggerHandler( 'tablesorter-ready' );\n\t\t\t\t// callback executed on init only\n\t\t\t\tif ( !init && typeof callback === 'function' ) {\n\t\t\t\t\tcallback( table );\n\t\t\t\t}\n\t\t\t\tif ( debug ) {\n\t\t\t\t\twidget = c.widgets.length;\n\t\t\t\t\tconsole.log( 'Completed ' +\n\t\t\t\t\t\t( init === true ? 'initializing ' : 'applying ' ) + widget +\n\t\t\t\t\t\t' widget' + ( widget !== 1 ? 's' : '' ) + ts.benchmark( time ) );\n\t\t\t\t}\n\t\t\t}, 10 );\n\t\t},\n\n\t\tremoveWidget : function( table, name, refreshing ) {\n\t\t\ttable = $( table )[ 0 ];\n\t\t\tvar index, widget, indx, len,\n\t\t\t\tc = table.config;\n\t\t\t// if name === true, add all widgets from $.tablesorter.widgets\n\t\t\tif ( name === true ) {\n\t\t\t\tname = [];\n\t\t\t\tlen = ts.widgets.length;\n\t\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\t\twidget = ts.widgets[ indx ];\n\t\t\t\t\tif ( widget && widget.id ) {\n\t\t\t\t\t\tname[ name.length ] = widget.id;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// name can be either an array of widgets names,\n\t\t\t\t// or a space/comma separated list of widget names\n\t\t\t\tname = ( $.isArray( name ) ? name.join( ',' ) : name || '' ).toLowerCase().split( /[\\s,]+/ );\n\t\t\t}\n\t\t\tlen = name.length;\n\t\t\tfor ( index = 0; index < len; index++ ) {\n\t\t\t\twidget = ts.getWidgetById( name[ index ] );\n\t\t\t\tindx = $.inArray( name[ index ], c.widgets );\n\t\t\t\t// don't remove the widget from config.widget if refreshing\n\t\t\t\tif ( indx >= 0 && refreshing !== true ) {\n\t\t\t\t\tc.widgets.splice( indx, 1 );\n\t\t\t\t}\n\t\t\t\tif ( widget && widget.remove ) {\n\t\t\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\t\t\tconsole.log( ( refreshing ? 'Refreshing' : 'Removing' ) + ' \"' + name[ index ] + '\" widget' );\n\t\t\t\t\t}\n\t\t\t\t\twidget.remove( table, c, c.widgetOptions, refreshing );\n\t\t\t\t\tc.widgetInit[ name[ index ] ] = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tc.$table.triggerHandler( 'widgetRemoveEnd', table );\n\t\t},\n\n\t\trefreshWidgets : function( table, doAll, dontapply ) {\n\t\t\ttable = $( table )[ 0 ]; // see issue #243\n\t\t\tvar indx, widget,\n\t\t\t\tc = table.config,\n\t\t\t\tcurWidgets = c.widgets,\n\t\t\t\twidgets = ts.widgets,\n\t\t\t\tlen = widgets.length,\n\t\t\t\tlist = [],\n\t\t\t\tcallback = function( table ) {\n\t\t\t\t\t$( table ).triggerHandler( 'refreshComplete' );\n\t\t\t\t};\n\t\t\t// remove widgets not defined in config.widgets, unless doAll is true\n\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\twidget = widgets[ indx ];\n\t\t\t\tif ( widget && widget.id && ( doAll || $.inArray( widget.id, curWidgets ) < 0 ) ) {\n\t\t\t\t\tlist[ list.length ] = widget.id;\n\t\t\t\t}\n\t\t\t}\n\t\t\tts.removeWidget( table, list.join( ',' ), true );\n\t\t\tif ( dontapply !== true ) {\n\t\t\t\t// call widget init if\n\t\t\t\tts.applyWidget( table, doAll || false, callback );\n\t\t\t\tif ( doAll ) {\n\t\t\t\t\t// apply widget format\n\t\t\t\t\tts.applyWidget( table, false, callback );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcallback( table );\n\t\t\t}\n\t\t},\n\n\t\t/*\n\t\t██ ██ ██████ ██ ██ ██ ██████ ██ ██████ ▄█████\n\t\t██ ██ ██ ██ ██ ██ ██ ██ ██▄▄ ▀█▄\n\t\t██ ██ ██ ██ ██ ██ ██ ██ ██▀▀ ▀█▄\n\t\t▀████▀ ██ ██ ██████ ██ ██ ██ ██████ █████▀\n\t\t*/\n\t\tbenchmark : function( diff ) {\n\t\t\treturn ( ' (' + ( new Date().getTime() - diff.getTime() ) + ' ms)' );\n\t\t},\n\t\t// deprecated ts.log\n\t\tlog : function() {\n\t\t\tconsole.log( arguments );\n\t\t},\n\t\tdebug : function(c, name) {\n\t\t\treturn c && (\n\t\t\t\tc.debug === true ||\n\t\t\t\ttypeof c.debug === 'string' && c.debug.indexOf(name) > -1\n\t\t\t);\n\t\t},\n\n\t\t// $.isEmptyObject from jQuery v1.4\n\t\tisEmptyObject : function( obj ) {\n\t\t\t/*jshint forin: false */\n\t\t\tfor ( var name in obj ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\tisValueInArray : function( column, arry ) {\n\t\t\tvar indx,\n\t\t\t\tlen = arry && arry.length || 0;\n\t\t\tfor ( indx = 0; indx < len; indx++ ) {\n\t\t\t\tif ( arry[ indx ][ 0 ] === column ) {\n\t\t\t\t\treturn indx;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t},\n\n\t\tformatFloat : function( str, table ) {\n\t\t\tif ( typeof str !== 'string' || str === '' ) { return str; }\n\t\t\t// allow using formatFloat without a table; defaults to US number format\n\t\t\tvar num,\n\t\t\t\tusFormat = table && table.config ? table.config.usNumberFormat !== false :\n\t\t\t\t\ttypeof table !== 'undefined' ? table : true;\n\t\t\tif ( usFormat ) {\n\t\t\t\t// US Format - 1,234,567.89 -> 1234567.89\n\t\t\t\tstr = str.replace( ts.regex.comma, '' );\n\t\t\t} else {\n\t\t\t\t// German Format = 1.234.567,89 -> 1234567.89\n\t\t\t\t// French Format = 1 234 567,89 -> 1234567.89\n\t\t\t\tstr = str.replace( ts.regex.digitNonUS, '' ).replace( ts.regex.comma, '.' );\n\t\t\t}\n\t\t\tif ( ts.regex.digitNegativeTest.test( str ) ) {\n\t\t\t\t// make (#) into a negative number -> (10) = -10\n\t\t\t\tstr = str.replace( ts.regex.digitNegativeReplace, '-$1' );\n\t\t\t}\n\t\t\tnum = parseFloat( str );\n\t\t\t// return the text instead of zero\n\t\t\treturn isNaN( num ) ? $.trim( str ) : num;\n\t\t},\n\n\t\tisDigit : function( str ) {\n\t\t\t// replace all unwanted chars and match\n\t\t\treturn isNaN( str ) ?\n\t\t\t\tts.regex.digitTest.test( str.toString().replace( ts.regex.digitReplace, '' ) ) :\n\t\t\t\tstr !== '';\n\t\t},\n\n\t\t// computeTableHeaderCellIndexes from:\n\t\t// http://www.javascripttoolbox.com/lib/table/examples.php\n\t\t// http://www.javascripttoolbox.com/temp/table_cellindex.html\n\t\tcomputeColumnIndex : function( $rows, c ) {\n\t\t\tvar i, j, k, l, cell, cells, rowIndex, rowSpan, colSpan, firstAvailCol,\n\t\t\t\t// total columns has been calculated, use it to set the matrixrow\n\t\t\t\tcolumns = c && c.columns || 0,\n\t\t\t\tmatrix = [],\n\t\t\t\tmatrixrow = new Array( columns );\n\t\t\tfor ( i = 0; i < $rows.length; i++ ) {\n\t\t\t\tcells = $rows[ i ].cells;\n\t\t\t\tfor ( j = 0; j < cells.length; j++ ) {\n\t\t\t\t\tcell = cells[ j ];\n\t\t\t\t\trowIndex = i;\n\t\t\t\t\trowSpan = cell.rowSpan || 1;\n\t\t\t\t\tcolSpan = cell.colSpan || 1;\n\t\t\t\t\tif ( typeof matrix[ rowIndex ] === 'undefined' ) {\n\t\t\t\t\t\tmatrix[ rowIndex ] = [];\n\t\t\t\t\t}\n\t\t\t\t\t// Find first available column in the first row\n\t\t\t\t\tfor ( k = 0; k < matrix[ rowIndex ].length + 1; k++ ) {\n\t\t\t\t\t\tif ( typeof matrix[ rowIndex ][ k ] === 'undefined' ) {\n\t\t\t\t\t\t\tfirstAvailCol = k;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// jscs:disable disallowEmptyBlocks\n\t\t\t\t\tif ( columns && cell.cellIndex === firstAvailCol ) {\n\t\t\t\t\t\t// don't to anything\n\t\t\t\t\t} else if ( cell.setAttribute ) {\n\t\t\t\t\t\t// jscs:enable disallowEmptyBlocks\n\t\t\t\t\t\t// add data-column (setAttribute = IE8+)\n\t\t\t\t\t\tcell.setAttribute( 'data-column', firstAvailCol );\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// remove once we drop support for IE7 - 1/12/2016\n\t\t\t\t\t\t$( cell ).attr( 'data-column', firstAvailCol );\n\t\t\t\t\t}\n\t\t\t\t\tfor ( k = rowIndex; k < rowIndex + rowSpan; k++ ) {\n\t\t\t\t\t\tif ( typeof matrix[ k ] === 'undefined' ) {\n\t\t\t\t\t\t\tmatrix[ k ] = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatrixrow = matrix[ k ];\n\t\t\t\t\t\tfor ( l = firstAvailCol; l < firstAvailCol + colSpan; l++ ) {\n\t\t\t\t\t\t\tmatrixrow[ l ] = 'x';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tts.checkColumnCount($rows, matrix, matrixrow.length);\n\t\t\treturn matrixrow.length;\n\t\t},\n\n\t\tcheckColumnCount : function($rows, matrix, columns) {\n\t\t\t// this DOES NOT report any tbody column issues, except for the math and\n\t\t\t// and column selector widgets\n\t\t\tvar i, len,\n\t\t\t\tvalid = true,\n\t\t\t\tcells = [];\n\t\t\tfor ( i = 0; i < matrix.length; i++ ) {\n\t\t\t\t// some matrix entries are undefined when testing the footer because\n\t\t\t\t// it is using the rowIndex property\n\t\t\t\tif ( matrix[i] ) {\n\t\t\t\t\tlen = matrix[i].length;\n\t\t\t\t\tif ( matrix[i].length !== columns ) {\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !valid ) {\n\t\t\t\t$rows.each( function( indx, el ) {\n\t\t\t\t\tvar cell = el.parentElement.nodeName;\n\t\t\t\t\tif ( cells.indexOf( cell ) < 0 ) {\n\t\t\t\t\t\tcells.push( cell );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconsole.error(\n\t\t\t\t\t'Invalid or incorrect number of columns in the ' +\n\t\t\t\t\tcells.join( ' or ' ) + '; expected ' + columns +\n\t\t\t\t\t', but found ' + len + ' columns'\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\n\t\t// automatically add a colgroup with col elements set to a percentage width\n\t\tfixColumnWidth : function( table ) {\n\t\t\ttable = $( table )[ 0 ];\n\t\t\tvar overallWidth, percent, $tbodies, len, index,\n\t\t\t\tc = table.config,\n\t\t\t\t$colgroup = c.$table.children( 'colgroup' );\n\t\t\t// remove plugin-added colgroup, in case we need to refresh the widths\n\t\t\tif ( $colgroup.length && $colgroup.hasClass( ts.css.colgroup ) ) {\n\t\t\t\t$colgroup.remove();\n\t\t\t}\n\t\t\tif ( c.widthFixed && c.$table.children( 'colgroup' ).length === 0 ) {\n\t\t\t\t$colgroup = $( '<colgroup class=\"' + ts.css.colgroup + '\">' );\n\t\t\t\toverallWidth = c.$table.width();\n\t\t\t\t// only add col for visible columns - fixes #371\n\t\t\t\t$tbodies = c.$tbodies.find( 'tr:first' ).children( ':visible' );\n\t\t\t\tlen = $tbodies.length;\n\t\t\t\tfor ( index = 0; index < len; index++ ) {\n\t\t\t\t\tpercent = parseInt( ( $tbodies.eq( index ).width() / overallWidth ) * 1000, 10 ) / 10 + '%';\n\t\t\t\t\t$colgroup.append( $( '<col>' ).css( 'width', percent ) );\n\t\t\t\t}\n\t\t\t\tc.$table.prepend( $colgroup );\n\t\t\t}\n\t\t},\n\n\t\t// get sorter, string, empty, etc options for each column from\n\t\t// jQuery data, metadata, header option or header class name ('sorter-false')\n\t\t// priority = jQuery data > meta > headers option > header class name\n\t\tgetData : function( header, configHeader, key ) {\n\t\t\tvar meta, cl4ss,\n\t\t\t\tval = '',\n\t\t\t\t$header = $( header );\n\t\t\tif ( !$header.length ) { return ''; }\n\t\t\tmeta = $.metadata ? $header.metadata() : false;\n\t\t\tcl4ss = ' ' + ( $header.attr( 'class' ) || '' );\n\t\t\tif ( typeof $header.data( key ) !== 'undefined' ||\n\t\t\t\ttypeof $header.data( key.toLowerCase() ) !== 'undefined' ) {\n\t\t\t\t// 'data-lockedOrder' is assigned to 'lockedorder'; but 'data-locked-order' is assigned to 'lockedOrder'\n\t\t\t\t// 'data-sort-initial-order' is assigned to 'sortInitialOrder'\n\t\t\t\tval += $header.data( key ) || $header.data( key.toLowerCase() );\n\t\t\t} else if ( meta && typeof meta[ key ] !== 'undefined' ) {\n\t\t\t\tval += meta[ key ];\n\t\t\t} else if ( configHeader && typeof configHeader[ key ] !== 'undefined' ) {\n\t\t\t\tval += configHeader[ key ];\n\t\t\t} else if ( cl4ss !== ' ' && cl4ss.match( ' ' + key + '-' ) ) {\n\t\t\t\t// include sorter class name 'sorter-text', etc; now works with 'sorter-my-custom-parser'\n\t\t\t\tval = cl4ss.match( new RegExp( '\\\\s' + key + '-([\\\\w-]+)' ) )[ 1 ] || '';\n\t\t\t}\n\t\t\treturn $.trim( val );\n\t\t},\n\n\t\tgetColumnData : function( table, obj, indx, getCell, $headers ) {\n\t\t\tif ( typeof obj !== 'object' || obj === null ) {\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t\ttable = $( table )[ 0 ];\n\t\t\tvar $header, key,\n\t\t\t\tc = table.config,\n\t\t\t\t$cells = ( $headers || c.$headers ),\n\t\t\t\t// c.$headerIndexed is not defined initially\n\t\t\t\t$cell = c.$headerIndexed && c.$headerIndexed[ indx ] ||\n\t\t\t\t\t$cells.find( '[data-column=\"' + indx + '\"]:last' );\n\t\t\tif ( typeof obj[ indx ] !== 'undefined' ) {\n\t\t\t\treturn getCell ? obj[ indx ] : obj[ $cells.index( $cell ) ];\n\t\t\t}\n\t\t\tfor ( key in obj ) {\n\t\t\t\tif ( typeof key === 'string' ) {\n\t\t\t\t\t$header = $cell\n\t\t\t\t\t\t// header cell with class/id\n\t\t\t\t\t\t.filter( key )\n\t\t\t\t\t\t// find elements within the header cell with cell/id\n\t\t\t\t\t\t.add( $cell.find( key ) );\n\t\t\t\t\tif ( $header.length ) {\n\t\t\t\t\t\treturn obj[ key ];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t},\n\n\t\t// *** Process table ***\n\t\t// add processing indicator\n\t\tisProcessing : function( $table, toggle, $headers ) {\n\t\t\t$table = $( $table );\n\t\t\tvar c = $table[ 0 ].config,\n\t\t\t\t// default to all headers\n\t\t\t\t$header = $headers || $table.find( '.' + ts.css.header );\n\t\t\tif ( toggle ) {\n\t\t\t\t// don't use sortList if custom $headers used\n\t\t\t\tif ( typeof $headers !== 'undefined' && c.sortList.length > 0 ) {\n\t\t\t\t\t// get headers from the sortList\n\t\t\t\t\t$header = $header.filter( function() {\n\t\t\t\t\t\t// get data-column from attr to keep compatibility with jQuery 1.2.6\n\t\t\t\t\t\treturn this.sortDisabled ?\n\t\t\t\t\t\t\tfalse :\n\t\t\t\t\t\t\tts.isValueInArray( parseFloat( $( this ).attr( 'data-column' ) ), c.sortList ) >= 0;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t$table.add( $header ).addClass( ts.css.processing + ' ' + c.cssProcessing );\n\t\t\t} else {\n\t\t\t\t$table.add( $header ).removeClass( ts.css.processing + ' ' + c.cssProcessing );\n\t\t\t}\n\t\t},\n\n\t\t// detach tbody but save the position\n\t\t// don't use tbody because there are portions that look for a tbody index (updateCell)\n\t\tprocessTbody : function( table, $tb, getIt ) {\n\t\t\ttable = $( table )[ 0 ];\n\t\t\tif ( getIt ) {\n\t\t\t\ttable.isProcessing = true;\n\t\t\t\t$tb.before( '<colgroup class=\"tablesorter-savemyplace\"/>' );\n\t\t\t\treturn $.fn.detach ? $tb.detach() : $tb.remove();\n\t\t\t}\n\t\t\tvar holdr = $( table ).find( 'colgroup.tablesorter-savemyplace' );\n\t\t\t$tb.insertAfter( holdr );\n\t\t\tholdr.remove();\n\t\t\ttable.isProcessing = false;\n\t\t},\n\n\t\tclearTableBody : function( table ) {\n\t\t\t$( table )[ 0 ].config.$tbodies.children().detach();\n\t\t},\n\n\t\t// used when replacing accented characters during sorting\n\t\tcharacterEquivalents : {\n\t\t\t'a' : '\\u00e1\\u00e0\\u00e2\\u00e3\\u00e4\\u0105\\u00e5', // áà âãäąå\n\t\t\t'A' : '\\u00c1\\u00c0\\u00c2\\u00c3\\u00c4\\u0104\\u00c5', // ÃÀÂÃÄĄÅ\n\t\t\t'c' : '\\u00e7\\u0107\\u010d', // çćÄ\n\t\t\t'C' : '\\u00c7\\u0106\\u010c', // ÇĆČ\n\t\t\t'e' : '\\u00e9\\u00e8\\u00ea\\u00eb\\u011b\\u0119', // éèêëěę\n\t\t\t'E' : '\\u00c9\\u00c8\\u00ca\\u00cb\\u011a\\u0118', // ÉÈÊËĚĘ\n\t\t\t'i' : '\\u00ed\\u00ec\\u0130\\u00ee\\u00ef\\u0131', // Ãìİîïı\n\t\t\t'I' : '\\u00cd\\u00cc\\u0130\\u00ce\\u00cf', // ÃÌİÎÃ\n\t\t\t'o' : '\\u00f3\\u00f2\\u00f4\\u00f5\\u00f6\\u014d', // óòôõöÅ\n\t\t\t'O' : '\\u00d3\\u00d2\\u00d4\\u00d5\\u00d6\\u014c', // ÓÒÔÕÖŌ\n\t\t\t'ss': '\\u00df', // ß (s sharp)\n\t\t\t'SS': '\\u1e9e', // ẞ (Capital sharp s)\n\t\t\t'u' : '\\u00fa\\u00f9\\u00fb\\u00fc\\u016f', // úùûüů\n\t\t\t'U' : '\\u00da\\u00d9\\u00db\\u00dc\\u016e' // ÚÙÛÜŮ\n\t\t},\n\n\t\treplaceAccents : function( str ) {\n\t\t\tvar chr,\n\t\t\t\tacc = '[',\n\t\t\t\teq = ts.characterEquivalents;\n\t\t\tif ( !ts.characterRegex ) {\n\t\t\t\tts.characterRegexArray = {};\n\t\t\t\tfor ( chr in eq ) {\n\t\t\t\t\tif ( typeof chr === 'string' ) {\n\t\t\t\t\t\tacc += eq[ chr ];\n\t\t\t\t\t\tts.characterRegexArray[ chr ] = new RegExp( '[' + eq[ chr ] + ']', 'g' );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tts.characterRegex = new RegExp( acc + ']' );\n\t\t\t}\n\t\t\tif ( ts.characterRegex.test( str ) ) {\n\t\t\t\tfor ( chr in eq ) {\n\t\t\t\t\tif ( typeof chr === 'string' ) {\n\t\t\t\t\t\tstr = str.replace( ts.characterRegexArray[ chr ], chr );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn str;\n\t\t},\n\n\t\tvalidateOptions : function( c ) {\n\t\t\tvar setting, setting2, typ, timer,\n\t\t\t\t// ignore options containing an array\n\t\t\t\tignore = 'headers sortForce sortList sortAppend widgets'.split( ' ' ),\n\t\t\t\torig = c.originalSettings;\n\t\t\tif ( orig ) {\n\t\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\t\ttimer = new Date();\n\t\t\t\t}\n\t\t\t\tfor ( setting in orig ) {\n\t\t\t\t\ttyp = typeof ts.defaults[setting];\n\t\t\t\t\tif ( typ === 'undefined' ) {\n\t\t\t\t\t\tconsole.warn( 'Tablesorter Warning! \"table.config.' + setting + '\" option not recognized' );\n\t\t\t\t\t} else if ( typ === 'object' ) {\n\t\t\t\t\t\tfor ( setting2 in orig[setting] ) {\n\t\t\t\t\t\t\ttyp = ts.defaults[setting] && typeof ts.defaults[setting][setting2];\n\t\t\t\t\t\t\tif ( $.inArray( setting, ignore ) < 0 && typ === 'undefined' ) {\n\t\t\t\t\t\t\t\tconsole.warn( 'Tablesorter Warning! \"table.config.' + setting + '.' + setting2 + '\" option not recognized' );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\t\tconsole.log( 'validate options time:' + ts.benchmark( timer ) );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// restore headers\n\t\trestoreHeaders : function( table ) {\n\t\t\tvar index, $cell,\n\t\t\t\tc = $( table )[ 0 ].config,\n\t\t\t\t$headers = c.$table.find( c.selectorHeaders ),\n\t\t\t\tlen = $headers.length;\n\t\t\t// don't use c.$headers here in case header cells were swapped\n\t\t\tfor ( index = 0; index < len; index++ ) {\n\t\t\t\t$cell = $headers.eq( index );\n\t\t\t\t// only restore header cells if it is wrapped\n\t\t\t\t// because this is also used by the updateAll method\n\t\t\t\tif ( $cell.find( '.' + ts.css.headerIn ).length ) {\n\t\t\t\t\t$cell.html( c.headerContent[ index ] );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tdestroy : function( table, removeClasses, callback ) {\n\t\t\ttable = $( table )[ 0 ];\n\t\t\tif ( !table.hasInitialized ) { return; }\n\t\t\t// remove all widgets\n\t\t\tts.removeWidget( table, true, false );\n\t\t\tvar events,\n\t\t\t\t$t = $( table ),\n\t\t\t\tc = table.config,\n\t\t\t\t$h = $t.find( 'thead:first' ),\n\t\t\t\t$r = $h.find( 'tr.' + ts.css.headerRow ).removeClass( ts.css.headerRow + ' ' + c.cssHeaderRow ),\n\t\t\t\t$f = $t.find( 'tfoot:first > tr' ).children( 'th, td' );\n\t\t\tif ( removeClasses === false && $.inArray( 'uitheme', c.widgets ) >= 0 ) {\n\t\t\t\t// reapply uitheme classes, in case we want to maintain appearance\n\t\t\t\t$t.triggerHandler( 'applyWidgetId', [ 'uitheme' ] );\n\t\t\t\t$t.triggerHandler( 'applyWidgetId', [ 'zebra' ] );\n\t\t\t}\n\t\t\t// remove widget added rows, just in case\n\t\t\t$h.find( 'tr' ).not( $r ).remove();\n\t\t\t// disable tablesorter - not using .unbind( namespace ) because namespacing was\n\t\t\t// added in jQuery v1.4.3 - see http://api.jquery.com/event.namespace/\n\t\t\tevents = 'sortReset update updateRows updateAll updateHeaders updateCell addRows updateComplete sorton ' +\n\t\t\t\t'appendCache updateCache applyWidgetId applyWidgets refreshWidgets removeWidget destroy mouseup mouseleave ' +\n\t\t\t\t'keypress sortBegin sortEnd resetToLoadState '.split( ' ' )\n\t\t\t\t.join( c.namespace + ' ' );\n\t\t\t$t\n\t\t\t\t.removeData( 'tablesorter' )\n\t\t\t\t.unbind( events.replace( ts.regex.spaces, ' ' ) );\n\t\t\tc.$headers\n\t\t\t\t.add( $f )\n\t\t\t\t.removeClass( [ ts.css.header, c.cssHeader, c.cssAsc, c.cssDesc, ts.css.sortAsc, ts.css.sortDesc, ts.css.sortNone ].join( ' ' ) )\n\t\t\t\t.removeAttr( 'data-column' )\n\t\t\t\t.removeAttr( 'aria-label' )\n\t\t\t\t.attr( 'aria-disabled', 'true' );\n\t\t\t$r\n\t\t\t\t.find( c.selectorSort )\n\t\t\t\t.unbind( ( 'mousedown mouseup keypress '.split( ' ' ).join( c.namespace + ' ' ) ).replace( ts.regex.spaces, ' ' ) );\n\t\t\tts.restoreHeaders( table );\n\t\t\t$t.toggleClass( ts.css.table + ' ' + c.tableClass + ' tablesorter-' + c.theme, removeClasses === false );\n\t\t\t$t.removeClass(c.namespace.slice(1));\n\t\t\t// clear flag in case the plugin is initialized again\n\t\t\ttable.hasInitialized = false;\n\t\t\tdelete table.config.cache;\n\t\t\tif ( typeof callback === 'function' ) {\n\t\t\t\tcallback( table );\n\t\t\t}\n\t\t\tif ( ts.debug(c, 'core') ) {\n\t\t\t\tconsole.log( 'tablesorter has been removed' );\n\t\t\t}\n\t\t}\n\n\t};\n\n\t$.fn.tablesorter = function( settings ) {\n\t\treturn this.each( function() {\n\t\t\tvar table = this,\n\t\t\t// merge & extend config options\n\t\t\tc = $.extend( true, {}, ts.defaults, settings, ts.instanceMethods );\n\t\t\t// save initial settings\n\t\t\tc.originalSettings = settings;\n\t\t\t// create a table from data (build table widget)\n\t\t\tif ( !table.hasInitialized && ts.buildTable && this.nodeName !== 'TABLE' ) {\n\t\t\t\t// return the table (in case the original target is the table's container)\n\t\t\t\tts.buildTable( table, c );\n\t\t\t} else {\n\t\t\t\tts.setup( table, c );\n\t\t\t}\n\t\t});\n\t};\n\n\t// set up debug logs\n\tif ( !( window.console && window.console.log ) ) {\n\t\t// access $.tablesorter.logs for browsers that don't have a console...\n\t\tts.logs = [];\n\t\t/*jshint -W020 */\n\t\tconsole = {};\n\t\tconsole.log = console.warn = console.error = console.table = function() {\n\t\t\tvar arg = arguments.length > 1 ? arguments : arguments[0];\n\t\t\tts.logs[ ts.logs.length ] = { date: Date.now(), log: arg };\n\t\t};\n\t}\n\n\t// add default parsers\n\tts.addParser({\n\t\tid : 'no-parser',\n\t\tis : function() {\n\t\t\treturn false;\n\t\t},\n\t\tformat : function() {\n\t\t\treturn '';\n\t\t},\n\t\ttype : 'text'\n\t});\n\n\tts.addParser({\n\t\tid : 'text',\n\t\tis : function() {\n\t\t\treturn true;\n\t\t},\n\t\tformat : function( str, table ) {\n\t\t\tvar c = table.config;\n\t\t\tif ( str ) {\n\t\t\t\tstr = $.trim( c.ignoreCase ? str.toLocaleLowerCase() : str );\n\t\t\t\tstr = c.sortLocaleCompare ? ts.replaceAccents( str ) : str;\n\t\t\t}\n\t\t\treturn str;\n\t\t},\n\t\ttype : 'text'\n\t});\n\n\tts.regex.nondigit = /[^\\w,. \\-()]/g;\n\tts.addParser({\n\t\tid : 'digit',\n\t\tis : function( str ) {\n\t\t\treturn ts.isDigit( str );\n\t\t},\n\t\tformat : function( str, table ) {\n\t\t\tvar num = ts.formatFloat( ( str || '' ).replace( ts.regex.nondigit, '' ), table );\n\t\t\treturn str && typeof num === 'number' ? num :\n\t\t\t\tstr ? $.trim( str && table.config.ignoreCase ? str.toLocaleLowerCase() : str ) : str;\n\t\t},\n\t\ttype : 'numeric'\n\t});\n\n\tts.regex.currencyReplace = /[+\\-,. ]/g;\n\tts.regex.currencyTest = /^\\(?\\d+[\\u00a3$\\u20ac\\u00a4\\u00a5\\u00a2?.]|[\\u00a3$\\u20ac\\u00a4\\u00a5\\u00a2?.]\\d+\\)?$/;\n\tts.addParser({\n\t\tid : 'currency',\n\t\tis : function( str ) {\n\t\t\tstr = ( str || '' ).replace( ts.regex.currencyReplace, '' );\n\t\t\t// test for £$€¤¥¢\n\t\t\treturn ts.regex.currencyTest.test( str );\n\t\t},\n\t\tformat : function( str, table ) {\n\t\t\tvar num = ts.formatFloat( ( str || '' ).replace( ts.regex.nondigit, '' ), table );\n\t\t\treturn str && typeof num === 'number' ? num :\n\t\t\t\tstr ? $.trim( str && table.config.ignoreCase ? str.toLocaleLowerCase() : str ) : str;\n\t\t},\n\t\ttype : 'numeric'\n\t});\n\n\t// too many protocols to add them all https://en.wikipedia.org/wiki/URI_scheme\n\t// now, this regex can be updated before initialization\n\tts.regex.urlProtocolTest = /^(https?|ftp|file):\\/\\//;\n\tts.regex.urlProtocolReplace = /(https?|ftp|file):\\/\\/(www\\.)?/;\n\tts.addParser({\n\t\tid : 'url',\n\t\tis : function( str ) {\n\t\t\treturn ts.regex.urlProtocolTest.test( str );\n\t\t},\n\t\tformat : function( str ) {\n\t\t\treturn str ? $.trim( str.replace( ts.regex.urlProtocolReplace, '' ) ) : str;\n\t\t},\n\t\ttype : 'text'\n\t});\n\n\tts.regex.dash = /-/g;\n\tts.regex.isoDate = /^\\d{4}[\\/\\-]\\d{1,2}[\\/\\-]\\d{1,2}/;\n\tts.addParser({\n\t\tid : 'isoDate',\n\t\tis : function( str ) {\n\t\t\treturn ts.regex.isoDate.test( str );\n\t\t},\n\t\tformat : function( str ) {\n\t\t\tvar date = str ? new Date( str.replace( ts.regex.dash, '/' ) ) : str;\n\t\t\treturn date instanceof Date && isFinite( date ) ? date.getTime() : str;\n\t\t},\n\t\ttype : 'numeric'\n\t});\n\n\tts.regex.percent = /%/g;\n\tts.regex.percentTest = /(\\d\\s*?%|%\\s*?\\d)/;\n\tts.addParser({\n\t\tid : 'percent',\n\t\tis : function( str ) {\n\t\t\treturn ts.regex.percentTest.test( str ) && str.length < 15;\n\t\t},\n\t\tformat : function( str, table ) {\n\t\t\treturn str ? ts.formatFloat( str.replace( ts.regex.percent, '' ), table ) : str;\n\t\t},\n\t\ttype : 'numeric'\n\t});\n\n\t// added image parser to core v2.17.9\n\tts.addParser({\n\t\tid : 'image',\n\t\tis : function( str, table, node, $node ) {\n\t\t\treturn $node.find( 'img' ).length > 0;\n\t\t},\n\t\tformat : function( str, table, cell ) {\n\t\t\treturn $( cell ).find( 'img' ).attr( table.config.imgAttr || 'alt' ) || str;\n\t\t},\n\t\tparsed : true, // filter widget flag\n\t\ttype : 'text'\n\t});\n\n\tts.regex.dateReplace = /(\\S)([AP]M)$/i; // used by usLongDate & time parser\n\tts.regex.usLongDateTest1 = /^[A-Z]{3,10}\\.?\\s+\\d{1,2},?\\s+(\\d{4})(\\s+\\d{1,2}:\\d{2}(:\\d{2})?(\\s+[AP]M)?)?$/i;\n\tts.regex.usLongDateTest2 = /^\\d{1,2}\\s+[A-Z]{3,10}\\s+\\d{4}/i;\n\tts.addParser({\n\t\tid : 'usLongDate',\n\t\tis : function( str ) {\n\t\t\t// two digit years are not allowed cross-browser\n\t\t\t// Jan 01, 2013 12:34:56 PM or 01 Jan 2013\n\t\t\treturn ts.regex.usLongDateTest1.test( str ) || ts.regex.usLongDateTest2.test( str );\n\t\t},\n\t\tformat : function( str ) {\n\t\t\tvar date = str ? new Date( str.replace( ts.regex.dateReplace, '$1 $2' ) ) : str;\n\t\t\treturn date instanceof Date && isFinite( date ) ? date.getTime() : str;\n\t\t},\n\t\ttype : 'numeric'\n\t});\n\n\t// testing for ##-##-#### or ####-##-##, so it's not perfect; time can be included\n\tts.regex.shortDateTest = /(^\\d{1,2}[\\/\\s]\\d{1,2}[\\/\\s]\\d{4})|(^\\d{4}[\\/\\s]\\d{1,2}[\\/\\s]\\d{1,2})/;\n\t// escaped \"-\" because JSHint in Firefox was showing it as an error\n\tts.regex.shortDateReplace = /[\\-.,]/g;\n\t// XXY covers MDY & DMY formats\n\tts.regex.shortDateXXY = /(\\d{1,2})[\\/\\s](\\d{1,2})[\\/\\s](\\d{4})/;\n\tts.regex.shortDateYMD = /(\\d{4})[\\/\\s](\\d{1,2})[\\/\\s](\\d{1,2})/;\n\tts.convertFormat = function( dateString, format ) {\n\t\tdateString = ( dateString || '' )\n\t\t\t.replace( ts.regex.spaces, ' ' )\n\t\t\t.replace( ts.regex.shortDateReplace, '/' );\n\t\tif ( format === 'mmddyyyy' ) {\n\t\t\tdateString = dateString.replace( ts.regex.shortDateXXY, '$3/$1/$2' );\n\t\t} else if ( format === 'ddmmyyyy' ) {\n\t\t\tdateString = dateString.replace( ts.regex.shortDateXXY, '$3/$2/$1' );\n\t\t} else if ( format === 'yyyymmdd' ) {\n\t\t\tdateString = dateString.replace( ts.regex.shortDateYMD, '$1/$2/$3' );\n\t\t}\n\t\tvar date = new Date( dateString );\n\t\treturn date instanceof Date && isFinite( date ) ? date.getTime() : '';\n\t};\n\n\tts.addParser({\n\t\tid : 'shortDate', // 'mmddyyyy', 'ddmmyyyy' or 'yyyymmdd'\n\t\tis : function( str ) {\n\t\t\tstr = ( str || '' ).replace( ts.regex.spaces, ' ' ).replace( ts.regex.shortDateReplace, '/' );\n\t\t\treturn ts.regex.shortDateTest.test( str );\n\t\t},\n\t\tformat : function( str, table, cell, cellIndex ) {\n\t\t\tif ( str ) {\n\t\t\t\tvar c = table.config,\n\t\t\t\t\t$header = c.$headerIndexed[ cellIndex ],\n\t\t\t\t\tformat = $header.length && $header.data( 'dateFormat' ) ||\n\t\t\t\t\t\tts.getData( $header, ts.getColumnData( table, c.headers, cellIndex ), 'dateFormat' ) ||\n\t\t\t\t\t\tc.dateFormat;\n\t\t\t\t// save format because getData can be slow...\n\t\t\t\tif ( $header.length ) {\n\t\t\t\t\t$header.data( 'dateFormat', format );\n\t\t\t\t}\n\t\t\t\treturn ts.convertFormat( str, format ) || str;\n\t\t\t}\n\t\t\treturn str;\n\t\t},\n\t\ttype : 'numeric'\n\t});\n\n\t// match 24 hour time & 12 hours time + am/pm - see http://regexr.com/3c3tk\n\tts.regex.timeTest = /^(0?[1-9]|1[0-2]):([0-5]\\d)(\\s[AP]M)$|^((?:[01]\\d|[2][0-4]):[0-5]\\d)$/i;\n\tts.regex.timeMatch = /(0?[1-9]|1[0-2]):([0-5]\\d)(\\s[AP]M)|((?:[01]\\d|[2][0-4]):[0-5]\\d)/i;\n\tts.addParser({\n\t\tid : 'time',\n\t\tis : function( str ) {\n\t\t\treturn ts.regex.timeTest.test( str );\n\t\t},\n\t\tformat : function( str ) {\n\t\t\t// isolate time... ignore month, day and year\n\t\t\tvar temp,\n\t\t\t\ttimePart = ( str || '' ).match( ts.regex.timeMatch ),\n\t\t\t\torig = new Date( str ),\n\t\t\t\t// no time component? default to 00:00 by leaving it out, but only if str is defined\n\t\t\t\ttime = str && ( timePart !== null ? timePart[ 0 ] : '00:00 AM' ),\n\t\t\t\tdate = time ? new Date( '2000/01/01 ' + time.replace( ts.regex.dateReplace, '$1 $2' ) ) : time;\n\t\t\tif ( date instanceof Date && isFinite( date ) ) {\n\t\t\t\ttemp = orig instanceof Date && isFinite( orig ) ? orig.getTime() : 0;\n\t\t\t\t// if original string was a valid date, add it to the decimal so the column sorts in some kind of order\n\t\t\t\t// luckily new Date() ignores the decimals\n\t\t\t\treturn temp ? parseFloat( date.getTime() + '.' + orig.getTime() ) : date.getTime();\n\t\t\t}\n\t\t\treturn str;\n\t\t},\n\t\ttype : 'numeric'\n\t});\n\n\tts.addParser({\n\t\tid : 'metadata',\n\t\tis : function() {\n\t\t\treturn false;\n\t\t},\n\t\tformat : function( str, table, cell ) {\n\t\t\tvar c = table.config,\n\t\t\tp = ( !c.parserMetadataName ) ? 'sortValue' : c.parserMetadataName;\n\t\t\treturn $( cell ).metadata()[ p ];\n\t\t},\n\t\ttype : 'numeric'\n\t});\n\n\t/*\n\t\t██████ ██████ █████▄ █████▄ ▄████▄\n\t\t ▄█▀ ██▄▄ ██▄▄██ ██▄▄██ ██▄▄██\n\t\t▄█▀ ██▀▀ ██▀▀██ ██▀▀█ ██▀▀██\n\t\t██████ ██████ █████▀ ██ ██ ██ ██\n\t\t*/\n\t// add default widgets\n\tts.addWidget({\n\t\tid : 'zebra',\n\t\tpriority : 90,\n\t\tformat : function( table, c, wo ) {\n\t\t\tvar $visibleRows, $row, count, isEven, tbodyIndex, rowIndex, len,\n\t\t\t\tchild = new RegExp( c.cssChildRow, 'i' ),\n\t\t\t\t$tbodies = c.$tbodies.add( $( c.namespace + '_extra_table' ).children( 'tbody:not(.' + c.cssInfoBlock + ')' ) );\n\t\t\tfor ( tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ) {\n\t\t\t\t// loop through the visible rows\n\t\t\t\tcount = 0;\n\t\t\t\t$visibleRows = $tbodies.eq( tbodyIndex ).children( 'tr:visible' ).not( c.selectorRemove );\n\t\t\t\tlen = $visibleRows.length;\n\t\t\t\tfor ( rowIndex = 0; rowIndex < len; rowIndex++ ) {\n\t\t\t\t\t$row = $visibleRows.eq( rowIndex );\n\t\t\t\t\t// style child rows the same way the parent row was styled\n\t\t\t\t\tif ( !child.test( $row[ 0 ].className ) ) { count++; }\n\t\t\t\t\tisEven = ( count % 2 === 0 );\n\t\t\t\t\t$row\n\t\t\t\t\t\t.removeClass( wo.zebra[ isEven ? 1 : 0 ] )\n\t\t\t\t\t\t.addClass( wo.zebra[ isEven ? 0 : 1 ] );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tremove : function( table, c, wo, refreshing ) {\n\t\t\tif ( refreshing ) { return; }\n\t\t\tvar tbodyIndex, $tbody,\n\t\t\t\t$tbodies = c.$tbodies,\n\t\t\t\ttoRemove = ( wo.zebra || [ 'even', 'odd' ] ).join( ' ' );\n\t\t\tfor ( tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ) {\n\t\t\t\t$tbody = ts.processTbody( table, $tbodies.eq( tbodyIndex ), true ); // remove tbody\n\t\t\t\t$tbody.children().removeClass( toRemove );\n\t\t\t\tts.processTbody( table, $tbody, false ); // restore tbody\n\t\t\t}\n\t\t}\n\t});\n\n})( jQuery );\n\r\n/*! Widget: storage - updated 2018-03-18 (v2.30.0) */\n/*global JSON:false */\n;(function ($, window, document) {\n\t'use strict';\n\n\tvar ts = $.tablesorter || {};\n\n\t// update defaults for validator; these values must be falsy!\n\t$.extend(true, ts.defaults, {\n\t\tfixedUrl: '',\n\t\twidgetOptions: {\n\t\t\tstorage_fixedUrl: '',\n\t\t\tstorage_group: '',\n\t\t\tstorage_page: '',\n\t\t\tstorage_storageType: '',\n\t\t\tstorage_tableId: '',\n\t\t\tstorage_useSessionStorage: ''\n\t\t}\n\t});\n\n\t// *** Store data in local storage, with a cookie fallback ***\n\t/* IE7 needs JSON library for JSON.stringify - (http://caniuse.com/#search=json)\n\t if you need it, then include https://github.com/douglascrockford/JSON-js\n\n\t $.parseJSON is not available is jQuery versions older than 1.4.1, using older\n\t versions will only allow storing information for one page at a time\n\n\t // *** Save data (JSON format only) ***\n\t // val must be valid JSON... use http://jsonlint.com/ to ensure it is valid\n\t var val = { \"mywidget\" : \"data1\" }; // valid JSON uses double quotes\n\t // $.tablesorter.storage(table, key, val);\n\t $.tablesorter.storage(table, 'tablesorter-mywidget', val);\n\n\t // *** Get data: $.tablesorter.storage(table, key); ***\n\t v = $.tablesorter.storage(table, 'tablesorter-mywidget');\n\t // val may be empty, so also check for your data\n\t val = (v && v.hasOwnProperty('mywidget')) ? v.mywidget : '';\n\t alert(val); // 'data1' if saved, or '' if not\n\t*/\n\tts.storage = function(table, key, value, options) {\n\t\ttable = $(table)[0];\n\t\tvar cookieIndex, cookies, date,\n\t\t\thasStorage = false,\n\t\t\tvalues = {},\n\t\t\tc = table.config,\n\t\t\two = c && c.widgetOptions,\n\t\t\tdebug = ts.debug(c, 'storage'),\n\t\t\tstorageType = (\n\t\t\t\t( options && options.storageType ) || ( wo && wo.storage_storageType )\n\t\t\t).toString().charAt(0).toLowerCase(),\n\t\t\t// deprecating \"useSessionStorage\"; any storageType setting overrides it\n\t\t\tsession = storageType ? '' :\n\t\t\t\t( options && options.useSessionStorage ) || ( wo && wo.storage_useSessionStorage ),\n\t\t\t$table = $(table),\n\t\t\t// id from (1) options ID, (2) table 'data-table-group' attribute, (3) widgetOptions.storage_tableId,\n\t\t\t// (4) table ID, then (5) table index\n\t\t\tid = options && options.id ||\n\t\t\t\t$table.attr( options && options.group || wo && wo.storage_group || 'data-table-group') ||\n\t\t\t\two && wo.storage_tableId || table.id || $('.tablesorter').index( $table ),\n\t\t\t// url from (1) options url, (2) table 'data-table-page' attribute, (3) widgetOptions.storage_fixedUrl,\n\t\t\t// (4) table.config.fixedUrl (deprecated), then (5) window location path\n\t\t\turl = options && options.url ||\n\t\t\t\t$table.attr(options && options.page || wo && wo.storage_page || 'data-table-page') ||\n\t\t\t\two && wo.storage_fixedUrl || c && c.fixedUrl || window.location.pathname;\n\n\t\t// skip if using cookies\n\t\tif (storageType !== 'c') {\n\t\t\tstorageType = (storageType === 's' || session) ? 'sessionStorage' : 'localStorage';\n\t\t\t// https://gist.github.com/paulirish/5558557\n\t\t\tif (storageType in window) {\n\t\t\t\ttry {\n\t\t\t\t\twindow[storageType].setItem('_tmptest', 'temp');\n\t\t\t\t\thasStorage = true;\n\t\t\t\t\twindow[storageType].removeItem('_tmptest');\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconsole.warn( storageType + ' is not supported in this browser' );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (debug) {\n\t\t\tconsole.log('Storage >> Using', hasStorage ? storageType : 'cookies');\n\t\t}\n\t\t// *** get value ***\n\t\tif ($.parseJSON) {\n\t\t\tif (hasStorage) {\n\t\t\t\tvalues = $.parseJSON( window[storageType][key] || 'null' ) || {};\n\t\t\t} else {\n\t\t\t\t// old browser, using cookies\n\t\t\t\tcookies = document.cookie.split(/[;\\s|=]/);\n\t\t\t\t// add one to get from the key to the value\n\t\t\t\tcookieIndex = $.inArray(key, cookies) + 1;\n\t\t\t\tvalues = (cookieIndex !== 0) ? $.parseJSON(cookies[cookieIndex] || 'null') || {} : {};\n\t\t\t}\n\t\t}\n\t\t// allow value to be an empty string too\n\t\tif (typeof value !== 'undefined' && window.JSON && JSON.hasOwnProperty('stringify')) {\n\t\t\t// add unique identifiers = url pathname > table ID/index on page > data\n\t\t\tif (!values[url]) {\n\t\t\t\tvalues[url] = {};\n\t\t\t}\n\t\t\tvalues[url][id] = value;\n\t\t\t// *** set value ***\n\t\t\tif (hasStorage) {\n\t\t\t\twindow[storageType][key] = JSON.stringify(values);\n\t\t\t} else {\n\t\t\t\tdate = new Date();\n\t\t\t\tdate.setTime(date.getTime() + (31536e+6)); // 365 days\n\t\t\t\tdocument.cookie = key + '=' + (JSON.stringify(values)).replace(/\\\"/g, '\\\"') + '; expires=' + date.toGMTString() + '; path=/';\n\t\t\t}\n\t\t} else {\n\t\t\treturn values && values[url] ? values[url][id] : '';\n\t\t}\n\t};\n\n})(jQuery, window, document);\n\r\n/*! Widget: uitheme - updated 2018-03-18 (v2.30.0) */\n;(function ($) {\n\t'use strict';\n\tvar ts = $.tablesorter || {};\n\n\tts.themes = {\n\t\t'bootstrap' : {\n\t\t\ttable : 'table table-bordered table-striped',\n\t\t\tcaption : 'caption',\n\t\t\t// header class names\n\t\t\theader : 'bootstrap-header', // give the header a gradient background (theme.bootstrap_2.css)\n\t\t\tsortNone : '',\n\t\t\tsortAsc : '',\n\t\t\tsortDesc : '',\n\t\t\tactive : '', // applied when column is sorted\n\t\t\thover : '', // custom css required - a defined bootstrap style may not override other classes\n\t\t\t// icon class names\n\t\t\ticons : '', // add 'bootstrap-icon-white' to make them white; this icon class is added to the <i> in the header\n\t\t\ticonSortNone : 'bootstrap-icon-unsorted', // class name added to icon when column is not sorted\n\t\t\ticonSortAsc : 'glyphicon glyphicon-chevron-up', // class name added to icon when column has ascending sort\n\t\t\ticonSortDesc : 'glyphicon glyphicon-chevron-down', // class name added to icon when column has descending sort\n\t\t\tfilterRow : '', // filter row class\n\t\t\tfooterRow : '',\n\t\t\tfooterCells : '',\n\t\t\teven : '', // even row zebra striping\n\t\t\todd : '' // odd row zebra striping\n\t\t},\n\t\t'jui' : {\n\t\t\ttable : 'ui-widget ui-widget-content ui-corner-all', // table classes\n\t\t\tcaption : 'ui-widget-content',\n\t\t\t// header class names\n\t\t\theader : 'ui-widget-header ui-corner-all ui-state-default', // header classes\n\t\t\tsortNone : '',\n\t\t\tsortAsc : '',\n\t\t\tsortDesc : '',\n\t\t\tactive : 'ui-state-active', // applied when column is sorted\n\t\t\thover : 'ui-state-hover', // hover class\n\t\t\t// icon class names\n\t\t\ticons : 'ui-icon', // icon class added to the <i> in the header\n\t\t\ticonSortNone : 'ui-icon-carat-2-n-s ui-icon-caret-2-n-s', // class name added to icon when column is not sorted\n\t\t\ticonSortAsc : 'ui-icon-carat-1-n ui-icon-caret-1-n', // class name added to icon when column has ascending sort\n\t\t\ticonSortDesc : 'ui-icon-carat-1-s ui-icon-caret-1-s', // class name added to icon when column has descending sort\n\t\t\tfilterRow : '',\n\t\t\tfooterRow : '',\n\t\t\tfooterCells : '',\n\t\t\teven : 'ui-widget-content', // even row zebra striping\n\t\t\todd : 'ui-state-default' // odd row zebra striping\n\t\t}\n\t};\n\n\t$.extend(ts.css, {\n\t\twrapper : 'tablesorter-wrapper' // ui theme & resizable\n\t});\n\n\tts.addWidget({\n\t\tid: 'uitheme',\n\t\tpriority: 10,\n\t\tformat: function(table, c, wo) {\n\t\t\tvar i, tmp, hdr, icon, time, $header, $icon, $tfoot, $h, oldtheme, oldremove, oldIconRmv, hasOldTheme,\n\t\t\t\tthemesAll = ts.themes,\n\t\t\t\t$table = c.$table.add( $( c.namespace + '_extra_table' ) ),\n\t\t\t\t$headers = c.$headers.add( $( c.namespace + '_extra_headers' ) ),\n\t\t\t\ttheme = c.theme || 'jui',\n\t\t\t\tthemes = themesAll[theme] || {},\n\t\t\t\tremove = $.trim( [ themes.sortNone, themes.sortDesc, themes.sortAsc, themes.active ].join( ' ' ) ),\n\t\t\t\ticonRmv = $.trim( [ themes.iconSortNone, themes.iconSortDesc, themes.iconSortAsc ].join( ' ' ) ),\n\t\t\t\tdebug = ts.debug(c, 'uitheme');\n\t\t\tif (debug) { time = new Date(); }\n\t\t\t// initialization code - run once\n\t\t\tif (!$table.hasClass('tablesorter-' + theme) || c.theme !== c.appliedTheme || !wo.uitheme_applied) {\n\t\t\t\two.uitheme_applied = true;\n\t\t\t\toldtheme = themesAll[c.appliedTheme] || {};\n\t\t\t\thasOldTheme = !$.isEmptyObject(oldtheme);\n\t\t\t\toldremove = hasOldTheme ? [ oldtheme.sortNone, oldtheme.sortDesc, oldtheme.sortAsc, oldtheme.active ].join( ' ' ) : '';\n\t\t\t\toldIconRmv = hasOldTheme ? [ oldtheme.iconSortNone, oldtheme.iconSortDesc, oldtheme.iconSortAsc ].join( ' ' ) : '';\n\t\t\t\tif (hasOldTheme) {\n\t\t\t\t\two.zebra[0] = $.trim( ' ' + wo.zebra[0].replace(' ' + oldtheme.even, '') );\n\t\t\t\t\two.zebra[1] = $.trim( ' ' + wo.zebra[1].replace(' ' + oldtheme.odd, '') );\n\t\t\t\t\tc.$tbodies.children().removeClass( [ oldtheme.even, oldtheme.odd ].join(' ') );\n\t\t\t\t}\n\t\t\t\t// update zebra stripes\n\t\t\t\tif (themes.even) { wo.zebra[0] += ' ' + themes.even; }\n\t\t\t\tif (themes.odd) { wo.zebra[1] += ' ' + themes.odd; }\n\t\t\t\t// add caption style\n\t\t\t\t$table.children('caption')\n\t\t\t\t\t.removeClass(oldtheme.caption || '')\n\t\t\t\t\t.addClass(themes.caption);\n\t\t\t\t// add table/footer class names\n\t\t\t\t$tfoot = $table\n\t\t\t\t\t// remove other selected themes\n\t\t\t\t\t.removeClass( (c.appliedTheme ? 'tablesorter-' + (c.appliedTheme || '') : '') + ' ' + (oldtheme.table || '') )\n\t\t\t\t\t.addClass('tablesorter-' + theme + ' ' + (themes.table || '')) // add theme widget class name\n\t\t\t\t\t.children('tfoot');\n\t\t\t\tc.appliedTheme = c.theme;\n\n\t\t\t\tif ($tfoot.length) {\n\t\t\t\t\t$tfoot\n\t\t\t\t\t\t// if oldtheme.footerRow or oldtheme.footerCells are undefined, all class names are removed\n\t\t\t\t\t\t.children('tr').removeClass(oldtheme.footerRow || '').addClass(themes.footerRow)\n\t\t\t\t\t\t.children('th, td').removeClass(oldtheme.footerCells || '').addClass(themes.footerCells);\n\t\t\t\t}\n\t\t\t\t// update header classes\n\t\t\t\t$headers\n\t\t\t\t\t.removeClass( (hasOldTheme ? [ oldtheme.header, oldtheme.hover, oldremove ].join(' ') : '') || '' )\n\t\t\t\t\t.addClass(themes.header)\n\t\t\t\t\t.not('.sorter-false')\n\t\t\t\t\t.unbind('mouseenter.tsuitheme mouseleave.tsuitheme')\n\t\t\t\t\t.bind('mouseenter.tsuitheme mouseleave.tsuitheme', function(event) {\n\t\t\t\t\t\t// toggleClass with switch added in jQuery 1.3\n\t\t\t\t\t\t$(this)[ event.type === 'mouseenter' ? 'addClass' : 'removeClass' ](themes.hover || '');\n\t\t\t\t\t});\n\n\t\t\t\t$headers.each(function() {\n\t\t\t\t\tvar $this = $(this);\n\t\t\t\t\tif (!$this.find('.' + ts.css.wrapper).length) {\n\t\t\t\t\t\t// Firefox needs this inner div to position the icon & resizer correctly\n\t\t\t\t\t\t$this.wrapInner('<div class=\"' + ts.css.wrapper + '\" style=\"position:relative;height:100%;width:100%\"></div>');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (c.cssIcon) {\n\t\t\t\t\t// if c.cssIcon is '', then no <i> is added to the header\n\t\t\t\t\t$headers\n\t\t\t\t\t\t.find('.' + ts.css.icon)\n\t\t\t\t\t\t.removeClass(hasOldTheme ? [ oldtheme.icons, oldIconRmv ].join(' ') : '')\n\t\t\t\t\t\t.addClass(themes.icons || '');\n\t\t\t\t}\n\t\t\t\t// filter widget initializes after uitheme\n\t\t\t\tif (ts.hasWidget( c.table, 'filter' )) {\n\t\t\t\t\ttmp = function() {\n\t\t\t\t\t\t$table.children('thead').children('.' + ts.css.filterRow)\n\t\t\t\t\t\t\t.removeClass(hasOldTheme ? oldtheme.filterRow || '' : '')\n\t\t\t\t\t\t\t.addClass(themes.filterRow || '');\n\t\t\t\t\t};\n\t\t\t\t\tif (wo.filter_initialized) {\n\t\t\t\t\t\ttmp();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$table.one('filterInit', function() {\n\t\t\t\t\t\t\ttmp();\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (i = 0; i < c.columns; i++) {\n\t\t\t\t$header = c.$headers\n\t\t\t\t\t.add($(c.namespace + '_extra_headers'))\n\t\t\t\t\t.not('.sorter-false')\n\t\t\t\t\t.filter('[data-column=\"' + i + '\"]');\n\t\t\t\t$icon = (ts.css.icon) ? $header.find('.' + ts.css.icon) : $();\n\t\t\t\t$h = $headers.not('.sorter-false').filter('[data-column=\"' + i + '\"]:last');\n\t\t\t\tif ($h.length) {\n\t\t\t\t\t$header.removeClass(remove);\n\t\t\t\t\t$icon.removeClass(iconRmv);\n\t\t\t\t\tif ($h[0].sortDisabled) {\n\t\t\t\t\t\t// no sort arrows for disabled columns!\n\t\t\t\t\t\t$icon.removeClass(themes.icons || '');\n\t\t\t\t\t} else {\n\t\t\t\t\t\thdr = themes.sortNone;\n\t\t\t\t\t\ticon = themes.iconSortNone;\n\t\t\t\t\t\tif ($h.hasClass(ts.css.sortAsc)) {\n\t\t\t\t\t\t\thdr = [ themes.sortAsc, themes.active ].join(' ');\n\t\t\t\t\t\t\ticon = themes.iconSortAsc;\n\t\t\t\t\t\t} else if ($h.hasClass(ts.css.sortDesc)) {\n\t\t\t\t\t\t\thdr = [ themes.sortDesc, themes.active ].join(' ');\n\t\t\t\t\t\t\ticon = themes.iconSortDesc;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$header.addClass(hdr);\n\t\t\t\t\t\t$icon.addClass(icon || '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (debug) {\n\t\t\t\tconsole.log('uitheme >> Applied ' + theme + ' theme' + ts.benchmark(time));\n\t\t\t}\n\t\t},\n\t\tremove: function(table, c, wo, refreshing) {\n\t\t\tif (!wo.uitheme_applied) { return; }\n\t\t\tvar $table = c.$table,\n\t\t\t\ttheme = c.appliedTheme || 'jui',\n\t\t\t\tthemes = ts.themes[ theme ] || ts.themes.jui,\n\t\t\t\t$headers = $table.children('thead').children(),\n\t\t\t\tremove = themes.sortNone + ' ' + themes.sortDesc + ' ' + themes.sortAsc,\n\t\t\t\ticonRmv = themes.iconSortNone + ' ' + themes.iconSortDesc + ' ' + themes.iconSortAsc;\n\t\t\t$table.removeClass('tablesorter-' + theme + ' ' + themes.table);\n\t\t\two.uitheme_applied = false;\n\t\t\tif (refreshing) { return; }\n\t\t\t$table.find(ts.css.header).removeClass(themes.header);\n\t\t\t$headers\n\t\t\t\t.unbind('mouseenter.tsuitheme mouseleave.tsuitheme') // remove hover\n\t\t\t\t.removeClass(themes.hover + ' ' + remove + ' ' + themes.active)\n\t\t\t\t.filter('.' + ts.css.filterRow)\n\t\t\t\t.removeClass(themes.filterRow);\n\t\t\t$headers.find('.' + ts.css.icon).removeClass(themes.icons + ' ' + iconRmv);\n\t\t}\n\t});\n\n})(jQuery);\n\r\n/*! Widget: columns - updated 5/24/2017 (v2.28.11) */\n;(function ($) {\n\t'use strict';\n\tvar ts = $.tablesorter || {};\n\n\tts.addWidget({\n\t\tid: 'columns',\n\t\tpriority: 65,\n\t\toptions : {\n\t\t\tcolumns : [ 'primary', 'secondary', 'tertiary' ]\n\t\t},\n\t\tformat: function(table, c, wo) {\n\t\t\tvar $tbody, tbodyIndex, $rows, rows, $row, $cells, remove, indx,\n\t\t\t$table = c.$table,\n\t\t\t$tbodies = c.$tbodies,\n\t\t\tsortList = c.sortList,\n\t\t\tlen = sortList.length,\n\t\t\t// removed c.widgetColumns support\n\t\t\tcss = wo && wo.columns || [ 'primary', 'secondary', 'tertiary' ],\n\t\t\tlast = css.length - 1;\n\t\t\tremove = css.join(' ');\n\t\t\t// check if there is a sort (on initialization there may not be one)\n\t\t\tfor (tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ) {\n\t\t\t\t$tbody = ts.processTbody(table, $tbodies.eq(tbodyIndex), true); // detach tbody\n\t\t\t\t$rows = $tbody.children('tr');\n\t\t\t\t// loop through the visible rows\n\t\t\t\t$rows.each(function() {\n\t\t\t\t\t$row = $(this);\n\t\t\t\t\tif (this.style.display !== 'none') {\n\t\t\t\t\t\t// remove all columns class names\n\t\t\t\t\t\t$cells = $row.children().removeClass(remove);\n\t\t\t\t\t\t// add appropriate column class names\n\t\t\t\t\t\tif (sortList && sortList[0]) {\n\t\t\t\t\t\t\t// primary sort column class\n\t\t\t\t\t\t\t$cells.eq(sortList[0][0]).addClass(css[0]);\n\t\t\t\t\t\t\tif (len > 1) {\n\t\t\t\t\t\t\t\tfor (indx = 1; indx < len; indx++) {\n\t\t\t\t\t\t\t\t\t// secondary, tertiary, etc sort column classes\n\t\t\t\t\t\t\t\t\t$cells.eq(sortList[indx][0]).addClass( css[indx] || css[last] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tts.processTbody(table, $tbody, false);\n\t\t\t}\n\t\t\t// add classes to thead and tfoot\n\t\t\trows = wo.columns_thead !== false ? [ 'thead tr' ] : [];\n\t\t\tif (wo.columns_tfoot !== false) {\n\t\t\t\trows.push('tfoot tr');\n\t\t\t}\n\t\t\tif (rows.length) {\n\t\t\t\t$rows = $table.find( rows.join(',') ).children().removeClass(remove);\n\t\t\t\tif (len) {\n\t\t\t\t\tfor (indx = 0; indx < len; indx++) {\n\t\t\t\t\t\t// add primary. secondary, tertiary, etc sort column classes\n\t\t\t\t\t\t$rows.filter('[data-column=\"' + sortList[indx][0] + '\"]').addClass(css[indx] || css[last]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tremove: function(table, c, wo) {\n\t\t\tvar tbodyIndex, $tbody,\n\t\t\t\t$tbodies = c.$tbodies,\n\t\t\t\tremove = (wo.columns || [ 'primary', 'secondary', 'tertiary' ]).join(' ');\n\t\t\tc.$headers.removeClass(remove);\n\t\t\tc.$table.children('tfoot').children('tr').children('th, td').removeClass(remove);\n\t\t\tfor (tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ) {\n\t\t\t\t$tbody = ts.processTbody(table, $tbodies.eq(tbodyIndex), true); // remove tbody\n\t\t\t\t$tbody.children('tr').each(function() {\n\t\t\t\t\t$(this).children().removeClass(remove);\n\t\t\t\t});\n\t\t\t\tts.processTbody(table, $tbody, false); // restore tbody\n\t\t\t}\n\t\t}\n\t});\n\n})(jQuery);\n\r\n/*! Widget: filter - updated 2018-03-18 (v2.30.0) *//*\r\n * Requires tablesorter v2.8+ and jQuery 1.7+\r\n * by Rob Garrison\r\n */\r\n;( function ( $ ) {\r\n\t'use strict';\r\n\tvar tsf, tsfRegex,\r\n\t\tts = $.tablesorter || {},\r\n\t\ttscss = ts.css,\r\n\t\ttskeyCodes = ts.keyCodes;\r\n\r\n\t$.extend( tscss, {\r\n\t\tfilterRow : 'tablesorter-filter-row',\r\n\t\tfilter : 'tablesorter-filter',\r\n\t\tfilterDisabled : 'disabled',\r\n\t\tfilterRowHide : 'hideme'\r\n\t});\r\n\r\n\t$.extend( tskeyCodes, {\r\n\t\tbackSpace : 8,\r\n\t\tescape : 27,\r\n\t\tspace : 32,\r\n\t\tleft : 37,\r\n\t\tdown : 40\r\n\t});\r\n\r\n\tts.addWidget({\r\n\t\tid: 'filter',\r\n\t\tpriority: 50,\r\n\t\toptions : {\r\n\t\t\tfilter_cellFilter : '', // css class name added to the filter cell ( string or array )\r\n\t\t\tfilter_childRows : false, // if true, filter includes child row content in the search\r\n\t\t\tfilter_childByColumn : false, // ( filter_childRows must be true ) if true = search child rows by column; false = search all child row text grouped\r\n\t\t\tfilter_childWithSibs : true, // if true, include matching child row siblings\r\n\t\t\tfilter_columnAnyMatch: true, // if true, allows using '#:{query}' in AnyMatch searches ( column:query )\r\n\t\t\tfilter_columnFilters : true, // if true, a filter will be added to the top of each table column\r\n\t\t\tfilter_cssFilter : '', // css class name added to the filter row & each input in the row ( tablesorter-filter is ALWAYS added )\r\n\t\t\tfilter_defaultAttrib : 'data-value', // data attribute in the header cell that contains the default filter value\r\n\t\t\tfilter_defaultFilter : {}, // add a default column filter type '~{query}' to make fuzzy searches default; '{q1} AND {q2}' to make all searches use a logical AND.\r\n\t\t\tfilter_excludeFilter : {}, // filters to exclude, per column\r\n\t\t\tfilter_external : '', // jQuery selector string ( or jQuery object ) of external filters\r\n\t\t\tfilter_filteredRow : 'filtered', // class added to filtered rows; define in css with \"display:none\" to hide the filtered-out rows\r\n\t\t\tfilter_filterLabel : 'Filter \"{{label}}\" column by...', // Aria-label added to filter input/select; see #1495\r\n\t\t\tfilter_formatter : null, // add custom filter elements to the filter row\r\n\t\t\tfilter_functions : null, // add custom filter functions using this option\r\n\t\t\tfilter_hideEmpty : true, // hide filter row when table is empty\r\n\t\t\tfilter_hideFilters : false, // collapse filter row when mouse leaves the area\r\n\t\t\tfilter_ignoreCase : true, // if true, make all searches case-insensitive\r\n\t\t\tfilter_liveSearch : true, // if true, search column content while the user types ( with a delay )\r\n\t\t\tfilter_matchType : { 'input': 'exact', 'select': 'exact' }, // global query settings ('exact' or 'match'); overridden by \"filter-match\" or \"filter-exact\" class\r\n\t\t\tfilter_onlyAvail : 'filter-onlyAvail', // a header with a select dropdown & this class name will only show available ( visible ) options within the drop down\r\n\t\t\tfilter_placeholder : { search : '', select : '' }, // default placeholder text ( overridden by any header 'data-placeholder' setting )\r\n\t\t\tfilter_reset : null, // jQuery selector string of an element used to reset the filters\r\n\t\t\tfilter_resetOnEsc : true, // Reset filter input when the user presses escape - normalized across browsers\r\n\t\t\tfilter_saveFilters : false, // Use the $.tablesorter.storage utility to save the most recent filters\r\n\t\t\tfilter_searchDelay : 300, // typing delay in milliseconds before starting a search\r\n\t\t\tfilter_searchFiltered: true, // allow searching through already filtered rows in special circumstances; will speed up searching in large tables if true\r\n\t\t\tfilter_selectSource : null, // include a function to return an array of values to be added to the column filter select\r\n\t\t\tfilter_selectSourceSeparator : '|', // filter_selectSource array text left of the separator is added to the option value, right into the option text\r\n\t\t\tfilter_serversideFiltering : false, // if true, must perform server-side filtering b/c client-side filtering is disabled, but the ui and events will still be used.\r\n\t\t\tfilter_startsWith : false, // if true, filter start from the beginning of the cell contents\r\n\t\t\tfilter_useParsedData : false // filter all data using parsed content\r\n\t\t},\r\n\t\tformat: function( table, c, wo ) {\r\n\t\t\tif ( !c.$table.hasClass( 'hasFilters' ) ) {\r\n\t\t\t\ttsf.init( table, c, wo );\r\n\t\t\t}\r\n\t\t},\r\n\t\tremove: function( table, c, wo, refreshing ) {\r\n\t\t\tvar tbodyIndex, $tbody,\r\n\t\t\t\t$table = c.$table,\r\n\t\t\t\t$tbodies = c.$tbodies,\r\n\t\t\t\tevents = (\r\n\t\t\t\t\t'addRows updateCell update updateRows updateComplete appendCache filterReset ' +\r\n\t\t\t\t\t'filterAndSortReset filterFomatterUpdate filterEnd search stickyHeadersInit '\r\n\t\t\t\t).split( ' ' ).join( c.namespace + 'filter ' );\r\n\t\t\t$table\r\n\t\t\t\t.removeClass( 'hasFilters' )\r\n\t\t\t\t// add filter namespace to all BUT search\r\n\t\t\t\t.unbind( events.replace( ts.regex.spaces, ' ' ) )\r\n\t\t\t\t// remove the filter row even if refreshing, because the column might have been moved\r\n\t\t\t\t.find( '.' + tscss.filterRow ).remove();\r\n\t\t\two.filter_initialized = false;\r\n\t\t\tif ( refreshing ) { return; }\r\n\t\t\tfor ( tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ) {\r\n\t\t\t\t$tbody = ts.processTbody( table, $tbodies.eq( tbodyIndex ), true ); // remove tbody\r\n\t\t\t\t$tbody.children().removeClass( wo.filter_filteredRow ).show();\r\n\t\t\t\tts.processTbody( table, $tbody, false ); // restore tbody\r\n\t\t\t}\r\n\t\t\tif ( wo.filter_reset ) {\r\n\t\t\t\t$( document ).undelegate( wo.filter_reset, 'click' + c.namespace + 'filter' );\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\ttsf = ts.filter = {\r\n\r\n\t\t// regex used in filter 'check' functions - not for general use and not documented\r\n\t\tregex: {\r\n\t\t\tregex : /^\\/((?:\\\\\\/|[^\\/])+)\\/([migyu]{0,5})?$/, // regex to test for regex\r\n\t\t\tchild : /tablesorter-childRow/, // child row class name; this gets updated in the script\r\n\t\t\tfiltered : /filtered/, // filtered (hidden) row class name; updated in the script\r\n\t\t\ttype : /undefined|number/, // check type\r\n\t\t\texact : /(^[\\\"\\'=]+)|([\\\"\\'=]+$)/g, // exact match (allow '==')\r\n\t\t\toperators : /[<>=]/g, // replace operators\r\n\t\t\tquery : '(q|query)', // replace filter queries\r\n\t\t\twild01 : /\\?/g, // wild card match 0 or 1\r\n\t\t\twild0More : /\\*/g, // wild care match 0 or more\r\n\t\t\tquote : /\\\"/g,\r\n\t\t\tisNeg1 : /(>=?\\s*-\\d)/,\r\n\t\t\tisNeg2 : /(<=?\\s*\\d)/\r\n\t\t},\r\n\t\t// function( c, data ) { }\r\n\t\t// c = table.config\r\n\t\t// data.$row = jQuery object of the row currently being processed\r\n\t\t// data.$cells = jQuery object of all cells within the current row\r\n\t\t// data.filters = array of filters for all columns ( some may be undefined )\r\n\t\t// data.filter = filter for the current column\r\n\t\t// data.iFilter = same as data.filter, except lowercase ( if wo.filter_ignoreCase is true )\r\n\t\t// data.exact = table cell text ( or parsed data if column parser enabled; may be a number & not a string )\r\n\t\t// data.iExact = same as data.exact, except lowercase ( if wo.filter_ignoreCase is true; may be a number & not a string )\r\n\t\t// data.cache = table cell text from cache, so it has been parsed ( & in all lower case if c.ignoreCase is true )\r\n\t\t// data.cacheArray = An array of parsed content from each table cell in the row being processed\r\n\t\t// data.index = column index; table = table element ( DOM )\r\n\t\t// data.parsed = array ( by column ) of boolean values ( from filter_useParsedData or 'filter-parsed' class )\r\n\t\ttypes: {\r\n\t\t\tor : function( c, data, vars ) {\r\n\t\t\t\t// look for \"|\", but not if it is inside of a regular expression\r\n\t\t\t\tif ( ( tsfRegex.orTest.test( data.iFilter ) || tsfRegex.orSplit.test( data.filter ) ) &&\r\n\t\t\t\t\t// this test for regex has potential to slow down the overall search\r\n\t\t\t\t\t!tsfRegex.regex.test( data.filter ) ) {\r\n\t\t\t\t\tvar indx, filterMatched, query, regex,\r\n\t\t\t\t\t\t// duplicate data but split filter\r\n\t\t\t\t\t\tdata2 = $.extend( {}, data ),\r\n\t\t\t\t\t\tfilter = data.filter.split( tsfRegex.orSplit ),\r\n\t\t\t\t\t\tiFilter = data.iFilter.split( tsfRegex.orSplit ),\r\n\t\t\t\t\t\tlen = filter.length;\r\n\t\t\t\t\tfor ( indx = 0; indx < len; indx++ ) {\r\n\t\t\t\t\t\tdata2.nestedFilters = true;\r\n\t\t\t\t\t\tdata2.filter = '' + ( tsf.parseFilter( c, filter[ indx ], data ) || '' );\r\n\t\t\t\t\t\tdata2.iFilter = '' + ( tsf.parseFilter( c, iFilter[ indx ], data ) || '' );\r\n\t\t\t\t\t\tquery = '(' + ( tsf.parseFilter( c, data2.filter, data ) || '' ) + ')';\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t// use try/catch, because query may not be a valid regex if \"|\" is contained within a partial regex search,\r\n\t\t\t\t\t\t\t// e.g \"/(Alex|Aar\" -> Uncaught SyntaxError: Invalid regular expression: /(/(Alex)/: Unterminated group\r\n\t\t\t\t\t\t\tregex = new RegExp( data.isMatch ? query : '^' + query + '$', c.widgetOptions.filter_ignoreCase ? 'i' : '' );\r\n\t\t\t\t\t\t\t// filterMatched = data2.filter === '' && indx > 0 ? true\r\n\t\t\t\t\t\t\t// look for an exact match with the 'or' unless the 'filter-match' class is found\r\n\t\t\t\t\t\t\tfilterMatched = regex.test( data2.exact ) || tsf.processTypes( c, data2, vars );\r\n\t\t\t\t\t\t\tif ( filterMatched ) {\r\n\t\t\t\t\t\t\t\treturn filterMatched;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} catch ( error ) {\r\n\t\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// may be null from processing types\r\n\t\t\t\t\treturn filterMatched || false;\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t},\r\n\t\t\t// Look for an AND or && operator ( logical and )\r\n\t\t\tand : function( c, data, vars ) {\r\n\t\t\t\tif ( tsfRegex.andTest.test( data.filter ) ) {\r\n\t\t\t\t\tvar indx, filterMatched, result, query, regex,\r\n\t\t\t\t\t\t// duplicate data but split filter\r\n\t\t\t\t\t\tdata2 = $.extend( {}, data ),\r\n\t\t\t\t\t\tfilter = data.filter.split( tsfRegex.andSplit ),\r\n\t\t\t\t\t\tiFilter = data.iFilter.split( tsfRegex.andSplit ),\r\n\t\t\t\t\t\tlen = filter.length;\r\n\t\t\t\t\tfor ( indx = 0; indx < len; indx++ ) {\r\n\t\t\t\t\t\tdata2.nestedFilters = true;\r\n\t\t\t\t\t\tdata2.filter = '' + ( tsf.parseFilter( c, filter[ indx ], data ) || '' );\r\n\t\t\t\t\t\tdata2.iFilter = '' + ( tsf.parseFilter( c, iFilter[ indx ], data ) || '' );\r\n\t\t\t\t\t\tquery = ( '(' + ( tsf.parseFilter( c, data2.filter, data ) || '' ) + ')' )\r\n\t\t\t\t\t\t\t// replace wild cards since /(a*)/i will match anything\r\n\t\t\t\t\t\t\t.replace( tsfRegex.wild01, '\\\\S{1}' ).replace( tsfRegex.wild0More, '\\\\S*' );\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t// use try/catch just in case RegExp is invalid\r\n\t\t\t\t\t\t\tregex = new RegExp( data.isMatch ? query : '^' + query + '$', c.widgetOptions.filter_ignoreCase ? 'i' : '' );\r\n\t\t\t\t\t\t\t// look for an exact match with the 'and' unless the 'filter-match' class is found\r\n\t\t\t\t\t\t\tresult = ( regex.test( data2.exact ) || tsf.processTypes( c, data2, vars ) );\r\n\t\t\t\t\t\t\tif ( indx === 0 ) {\r\n\t\t\t\t\t\t\t\tfilterMatched = result;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tfilterMatched = filterMatched && result;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} catch ( error ) {\r\n\t\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// may be null from processing types\r\n\t\t\t\t\treturn filterMatched || false;\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t},\r\n\t\t\t// Look for regex\r\n\t\t\tregex: function( c, data ) {\r\n\t\t\t\tif ( tsfRegex.regex.test( data.filter ) ) {\r\n\t\t\t\t\tvar matches,\r\n\t\t\t\t\t\t// cache regex per column for optimal speed\r\n\t\t\t\t\t\tregex = data.filter_regexCache[ data.index ] || tsfRegex.regex.exec( data.filter ),\r\n\t\t\t\t\t\tisRegex = regex instanceof RegExp;\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tif ( !isRegex ) {\r\n\t\t\t\t\t\t\t// force case insensitive search if ignoreCase option set?\r\n\t\t\t\t\t\t\t// if ( c.ignoreCase && !regex[2] ) { regex[2] = 'i'; }\r\n\t\t\t\t\t\t\tdata.filter_regexCache[ data.index ] = regex = new RegExp( regex[1], regex[2] );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tmatches = regex.test( data.exact );\r\n\t\t\t\t\t} catch ( error ) {\r\n\t\t\t\t\t\tmatches = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn matches;\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t},\r\n\t\t\t// Look for operators >, >=, < or <=\r\n\t\t\toperators: function( c, data ) {\r\n\t\t\t\t// ignore empty strings... because '' < 10 is true\r\n\t\t\t\tif ( tsfRegex.operTest.test( data.iFilter ) && data.iExact !== '' ) {\r\n\t\t\t\t\tvar cachedValue, result, txt,\r\n\t\t\t\t\t\ttable = c.table,\r\n\t\t\t\t\t\tparsed = data.parsed[ data.index ],\r\n\t\t\t\t\t\tquery = ts.formatFloat( data.iFilter.replace( tsfRegex.operators, '' ), table ),\r\n\t\t\t\t\t\tparser = c.parsers[ data.index ] || {},\r\n\t\t\t\t\t\tsavedSearch = query;\r\n\t\t\t\t\t// parse filter value in case we're comparing numbers ( dates )\r\n\t\t\t\t\tif ( parsed || parser.type === 'numeric' ) {\r\n\t\t\t\t\t\ttxt = $.trim( '' + data.iFilter.replace( tsfRegex.operators, '' ) );\r\n\t\t\t\t\t\tresult = tsf.parseFilter( c, txt, data, true );\r\n\t\t\t\t\t\tquery = ( typeof result === 'number' && result !== '' && !isNaN( result ) ) ? result : query;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// iExact may be numeric - see issue #149;\r\n\t\t\t\t\t// check if cached is defined, because sometimes j goes out of range? ( numeric columns )\r\n\t\t\t\t\tif ( ( parsed || parser.type === 'numeric' ) && !isNaN( query ) &&\r\n\t\t\t\t\t\ttypeof data.cache !== 'undefined' ) {\r\n\t\t\t\t\t\tcachedValue = data.cache;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttxt = isNaN( data.iExact ) ? data.iExact.replace( ts.regex.nondigit, '' ) : data.iExact;\r\n\t\t\t\t\t\tcachedValue = ts.formatFloat( txt, table );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( tsfRegex.gtTest.test( data.iFilter ) ) {\r\n\t\t\t\t\t\tresult = tsfRegex.gteTest.test( data.iFilter ) ? cachedValue >= query : cachedValue > query;\r\n\t\t\t\t\t} else if ( tsfRegex.ltTest.test( data.iFilter ) ) {\r\n\t\t\t\t\t\tresult = tsfRegex.lteTest.test( data.iFilter ) ? cachedValue <= query : cachedValue < query;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// keep showing all rows if nothing follows the operator\r\n\t\t\t\t\tif ( !result && savedSearch === '' ) {\r\n\t\t\t\t\t\tresult = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t},\r\n\t\t\t// Look for a not match\r\n\t\t\tnotMatch: function( c, data ) {\r\n\t\t\t\tif ( tsfRegex.notTest.test( data.iFilter ) ) {\r\n\t\t\t\t\tvar indx,\r\n\t\t\t\t\t\ttxt = data.iFilter.replace( '!', '' ),\r\n\t\t\t\t\t\tfilter = tsf.parseFilter( c, txt, data ) || '';\r\n\t\t\t\t\tif ( tsfRegex.exact.test( filter ) ) {\r\n\t\t\t\t\t\t// look for exact not matches - see #628\r\n\t\t\t\t\t\tfilter = filter.replace( tsfRegex.exact, '' );\r\n\t\t\t\t\t\treturn filter === '' ? true : $.trim( filter ) !== data.iExact;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tindx = data.iExact.search( $.trim( filter ) );\r\n\t\t\t\t\t\treturn filter === '' ? true :\r\n\t\t\t\t\t\t\t// return true if not found\r\n\t\t\t\t\t\t\tdata.anyMatch ? indx < 0 :\r\n\t\t\t\t\t\t\t// return false if found\r\n\t\t\t\t\t\t\t!( c.widgetOptions.filter_startsWith ? indx === 0 : indx >= 0 );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t},\r\n\t\t\t// Look for quotes or equals to get an exact match; ignore type since iExact could be numeric\r\n\t\t\texact: function( c, data ) {\r\n\t\t\t\t/*jshint eqeqeq:false */\r\n\t\t\t\tif ( tsfRegex.exact.test( data.iFilter ) ) {\r\n\t\t\t\t\tvar txt = data.iFilter.replace( tsfRegex.exact, '' ),\r\n\t\t\t\t\t\tfilter = tsf.parseFilter( c, txt, data ) || '';\r\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\r\n\t\t\t\t\treturn data.anyMatch ? $.inArray( filter, data.rowArray ) >= 0 : filter == data.iExact;\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t},\r\n\t\t\t// Look for a range ( using ' to ' or ' - ' ) - see issue #166; thanks matzhu!\r\n\t\t\trange : function( c, data ) {\r\n\t\t\t\tif ( tsfRegex.toTest.test( data.iFilter ) ) {\r\n\t\t\t\t\tvar result, tmp, range1, range2,\r\n\t\t\t\t\t\ttable = c.table,\r\n\t\t\t\t\t\tindex = data.index,\r\n\t\t\t\t\t\tparsed = data.parsed[index],\r\n\t\t\t\t\t\t// make sure the dash is for a range and not indicating a negative number\r\n\t\t\t\t\t\tquery = data.iFilter.split( tsfRegex.toSplit );\r\n\r\n\t\t\t\t\ttmp = query[0].replace( ts.regex.nondigit, '' ) || '';\r\n\t\t\t\t\trange1 = ts.formatFloat( tsf.parseFilter( c, tmp, data ), table );\r\n\t\t\t\t\ttmp = query[1].replace( ts.regex.nondigit, '' ) || '';\r\n\t\t\t\t\trange2 = ts.formatFloat( tsf.parseFilter( c, tmp, data ), table );\r\n\t\t\t\t\t// parse filter value in case we're comparing numbers ( dates )\r\n\t\t\t\t\tif ( parsed || c.parsers[ index ].type === 'numeric' ) {\r\n\t\t\t\t\t\tresult = c.parsers[ index ].format( '' + query[0], table, c.$headers.eq( index ), index );\r\n\t\t\t\t\t\trange1 = ( result !== '' && !isNaN( result ) ) ? result : range1;\r\n\t\t\t\t\t\tresult = c.parsers[ index ].format( '' + query[1], table, c.$headers.eq( index ), index );\r\n\t\t\t\t\t\trange2 = ( result !== '' && !isNaN( result ) ) ? result : range2;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( ( parsed || c.parsers[ index ].type === 'numeric' ) && !isNaN( range1 ) && !isNaN( range2 ) ) {\r\n\t\t\t\t\t\tresult = data.cache;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttmp = isNaN( data.iExact ) ? data.iExact.replace( ts.regex.nondigit, '' ) : data.iExact;\r\n\t\t\t\t\t\tresult = ts.formatFloat( tmp, table );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( range1 > range2 ) {\r\n\t\t\t\t\t\ttmp = range1; range1 = range2; range2 = tmp; // swap\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn ( result >= range1 && result <= range2 ) || ( range1 === '' || range2 === '' );\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t},\r\n\t\t\t// Look for wild card: ? = single, * = multiple, or | = logical OR\r\n\t\t\twild : function( c, data ) {\r\n\t\t\t\tif ( tsfRegex.wildOrTest.test( data.iFilter ) ) {\r\n\t\t\t\t\tvar query = '' + ( tsf.parseFilter( c, data.iFilter, data ) || '' );\r\n\t\t\t\t\t// look for an exact match with the 'or' unless the 'filter-match' class is found\r\n\t\t\t\t\tif ( !tsfRegex.wildTest.test( query ) && data.nestedFilters ) {\r\n\t\t\t\t\t\tquery = data.isMatch ? query : '^(' + query + ')$';\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// parsing the filter may not work properly when using wildcards =/\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\treturn new RegExp(\r\n\t\t\t\t\t\t\tquery.replace( tsfRegex.wild01, '\\\\S{1}' ).replace( tsfRegex.wild0More, '\\\\S*' ),\r\n\t\t\t\t\t\t\tc.widgetOptions.filter_ignoreCase ? 'i' : ''\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t.test( data.exact );\r\n\t\t\t\t\t} catch ( error ) {\r\n\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t},\r\n\t\t\t// fuzzy text search; modified from https://github.com/mattyork/fuzzy ( MIT license )\r\n\t\t\tfuzzy: function( c, data ) {\r\n\t\t\t\tif ( tsfRegex.fuzzyTest.test( data.iFilter ) ) {\r\n\t\t\t\t\tvar indx,\r\n\t\t\t\t\t\tpatternIndx = 0,\r\n\t\t\t\t\t\tlen = data.iExact.length,\r\n\t\t\t\t\t\ttxt = data.iFilter.slice( 1 ),\r\n\t\t\t\t\t\tpattern = tsf.parseFilter( c, txt, data ) || '';\r\n\t\t\t\t\tfor ( indx = 0; indx < len; indx++ ) {\r\n\t\t\t\t\t\tif ( data.iExact[ indx ] === pattern[ patternIndx ] ) {\r\n\t\t\t\t\t\t\tpatternIndx += 1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn patternIndx === pattern.length;\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\t\tinit: function( table ) {\r\n\t\t\t// filter language options\r\n\t\t\tts.language = $.extend( true, {}, {\r\n\t\t\t\tto : 'to',\r\n\t\t\t\tor : 'or',\r\n\t\t\t\tand : 'and'\r\n\t\t\t}, ts.language );\r\n\r\n\t\t\tvar options, string, txt, $header, column, val, fxn, noSelect,\r\n\t\t\t\tc = table.config,\r\n\t\t\t\two = c.widgetOptions,\r\n\t\t\t\tprocessStr = function(prefix, str, suffix) {\r\n\t\t\t\t\tstr = str.trim();\r\n\t\t\t\t\t// don't include prefix/suffix if str is empty\r\n\t\t\t\t\treturn str === '' ? '' : (prefix || '') + str + (suffix || '');\r\n\t\t\t\t};\r\n\t\t\tc.$table.addClass( 'hasFilters' );\r\n\t\t\tc.lastSearch = [];\r\n\r\n\t\t\t// define timers so using clearTimeout won't cause an undefined error\r\n\t\t\two.filter_searchTimer = null;\r\n\t\t\two.filter_initTimer = null;\r\n\t\t\two.filter_formatterCount = 0;\r\n\t\t\two.filter_formatterInit = [];\r\n\t\t\two.filter_anyColumnSelector = '[data-column=\"all\"],[data-column=\"any\"]';\r\n\t\t\two.filter_multipleColumnSelector = '[data-column*=\"-\"],[data-column*=\",\"]';\r\n\r\n\t\t\tval = '\\\\{' + tsfRegex.query + '\\\\}';\r\n\t\t\t$.extend( tsfRegex, {\r\n\t\t\t\tchild : new RegExp( c.cssChildRow ),\r\n\t\t\t\tfiltered : new RegExp( wo.filter_filteredRow ),\r\n\t\t\t\talreadyFiltered : new RegExp( '(\\\\s+(-' + processStr('|', ts.language.or) + processStr('|', ts.language.to) + ')\\\\s+)', 'i' ),\r\n\t\t\t\ttoTest : new RegExp( '\\\\s+(-' + processStr('|', ts.language.to) + ')\\\\s+', 'i' ),\r\n\t\t\t\ttoSplit : new RegExp( '(?:\\\\s+(?:-' + processStr('|', ts.language.to) + ')\\\\s+)', 'gi' ),\r\n\t\t\t\tandTest : new RegExp( '\\\\s+(' + processStr('', ts.language.and, '|') + '&&)\\\\s+', 'i' ),\r\n\t\t\t\tandSplit : new RegExp( '(?:\\\\s+(?:' + processStr('', ts.language.and, '|') + '&&)\\\\s+)', 'gi' ),\r\n\t\t\t\torTest : new RegExp( '(\\\\|' + processStr('|\\\\s+', ts.language.or, '\\\\s+') + ')', 'i' ),\r\n\t\t\t\torSplit : new RegExp( '(?:\\\\|' + processStr('|\\\\s+(?:', ts.language.or, ')\\\\s+') + ')', 'gi' ),\r\n\t\t\t\tiQuery : new RegExp( val, 'i' ),\r\n\t\t\t\tigQuery : new RegExp( val, 'ig' ),\r\n\t\t\t\toperTest : /^[<>]=?/,\r\n\t\t\t\tgtTest : />/,\r\n\t\t\t\tgteTest : />=/,\r\n\t\t\t\tltTest : /</,\r\n\t\t\t\tlteTest : /<=/,\r\n\t\t\t\tnotTest : /^\\!/,\r\n\t\t\t\twildOrTest : /[\\?\\*\\|]/,\r\n\t\t\t\twildTest : /\\?\\*/,\r\n\t\t\t\tfuzzyTest : /^~/,\r\n\t\t\t\texactTest : /[=\\\"\\|!]/\r\n\t\t\t});\r\n\r\n\t\t\t// don't build filter row if columnFilters is false or all columns are set to 'filter-false'\r\n\t\t\t// see issue #156\r\n\t\t\tval = c.$headers.filter( '.filter-false, .parser-false' ).length;\r\n\t\t\tif ( wo.filter_columnFilters !== false && val !== c.$headers.length ) {\r\n\t\t\t\t// build filter row\r\n\t\t\t\ttsf.buildRow( table, c, wo );\r\n\t\t\t}\r\n\r\n\t\t\ttxt = 'addRows updateCell update updateRows updateComplete appendCache filterReset ' +\r\n\t\t\t\t'filterAndSortReset filterResetSaved filterEnd search '.split( ' ' ).join( c.namespace + 'filter ' );\r\n\t\t\tc.$table.bind( txt, function( event, filter ) {\r\n\t\t\t\tval = wo.filter_hideEmpty &&\r\n\t\t\t\t\t$.isEmptyObject( c.cache ) &&\r\n\t\t\t\t\t!( c.delayInit && event.type === 'appendCache' );\r\n\t\t\t\t// hide filter row using the 'filtered' class name\r\n\t\t\t\tc.$table.find( '.' + tscss.filterRow ).toggleClass( wo.filter_filteredRow, val ); // fixes #450\r\n\t\t\t\tif ( !/(search|filter)/.test( event.type ) ) {\r\n\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\ttsf.buildDefault( table, true );\r\n\t\t\t\t}\r\n\t\t\t\t// Add filterAndSortReset - see #1361\r\n\t\t\t\tif ( event.type === 'filterReset' || event.type === 'filterAndSortReset' ) {\r\n\t\t\t\t\tc.$table.find( '.' + tscss.filter ).add( wo.filter_$externalFilters ).val( '' );\r\n\t\t\t\t\tif ( event.type === 'filterAndSortReset' ) {\r\n\t\t\t\t\t\tts.sortReset( this.config, function() {\r\n\t\t\t\t\t\t\ttsf.searching( table, [] );\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttsf.searching( table, [] );\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if ( event.type === 'filterResetSaved' ) {\r\n\t\t\t\t\tts.storage( table, 'tablesorter-filters', '' );\r\n\t\t\t\t} else if ( event.type === 'filterEnd' ) {\r\n\t\t\t\t\ttsf.buildDefault( table, true );\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// send false argument to force a new search; otherwise if the filter hasn't changed,\r\n\t\t\t\t\t// it will return\r\n\t\t\t\t\tfilter = event.type === 'search' ? filter :\r\n\t\t\t\t\t\tevent.type === 'updateComplete' ? c.$table.data( 'lastSearch' ) : '';\r\n\t\t\t\t\tif ( /(update|add)/.test( event.type ) && event.type !== 'updateComplete' ) {\r\n\t\t\t\t\t\t// force a new search since content has changed\r\n\t\t\t\t\t\tc.lastCombinedFilter = null;\r\n\t\t\t\t\t\tc.lastSearch = [];\r\n\t\t\t\t\t\t// update filterFormatters after update (& small delay) - Fixes #1237\r\n\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\tc.$table.triggerHandler( 'filterFomatterUpdate' );\r\n\t\t\t\t\t\t}, 100);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// pass true ( skipFirst ) to prevent the tablesorter.setFilters function from skipping the first\r\n\t\t\t\t\t// input ensures all inputs are updated when a search is triggered on the table\r\n\t\t\t\t\t// $( 'table' ).trigger( 'search', [...] );\r\n\t\t\t\t\ttsf.searching( table, filter, true );\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t});\r\n\r\n\t\t\t// reset button/link\r\n\t\t\tif ( wo.filter_reset ) {\r\n\t\t\t\tif ( wo.filter_reset instanceof $ ) {\r\n\t\t\t\t\t// reset contains a jQuery object, bind to it\r\n\t\t\t\t\two.filter_reset.click( function() {\r\n\t\t\t\t\t\tc.$table.triggerHandler( 'filterReset' );\r\n\t\t\t\t\t});\r\n\t\t\t\t} else if ( $( wo.filter_reset ).length ) {\r\n\t\t\t\t\t// reset is a jQuery selector, use event delegation\r\n\t\t\t\t\t$( document )\r\n\t\t\t\t\t\t.undelegate( wo.filter_reset, 'click' + c.namespace + 'filter' )\r\n\t\t\t\t\t\t.delegate( wo.filter_reset, 'click' + c.namespace + 'filter', function() {\r\n\t\t\t\t\t\t\t// trigger a reset event, so other functions ( filter_formatter ) know when to reset\r\n\t\t\t\t\t\t\tc.$table.triggerHandler( 'filterReset' );\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif ( wo.filter_functions ) {\r\n\t\t\t\tfor ( column = 0; column < c.columns; column++ ) {\r\n\t\t\t\t\tfxn = ts.getColumnData( table, wo.filter_functions, column );\r\n\t\t\t\t\tif ( fxn ) {\r\n\t\t\t\t\t\t// remove 'filter-select' from header otherwise the options added here are replaced with\r\n\t\t\t\t\t\t// all options\r\n\t\t\t\t\t\t$header = c.$headerIndexed[ column ].removeClass( 'filter-select' );\r\n\t\t\t\t\t\t// don't build select if 'filter-false' or 'parser-false' set\r\n\t\t\t\t\t\tnoSelect = !( $header.hasClass( 'filter-false' ) || $header.hasClass( 'parser-false' ) );\r\n\t\t\t\t\t\toptions = '';\r\n\t\t\t\t\t\tif ( fxn === true && noSelect ) {\r\n\t\t\t\t\t\t\ttsf.buildSelect( table, column );\r\n\t\t\t\t\t\t} else if ( typeof fxn === 'object' && noSelect ) {\r\n\t\t\t\t\t\t\t// add custom drop down list\r\n\t\t\t\t\t\t\tfor ( string in fxn ) {\r\n\t\t\t\t\t\t\t\tif ( typeof string === 'string' ) {\r\n\t\t\t\t\t\t\t\t\toptions += options === '' ?\r\n\t\t\t\t\t\t\t\t\t\t'<option value=\"\">' +\r\n\t\t\t\t\t\t\t\t\t\t\t( $header.data( 'placeholder' ) ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t$header.attr( 'data-placeholder' ) ||\r\n\t\t\t\t\t\t\t\t\t\t\t\two.filter_placeholder.select ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t\t\t\t\t) +\r\n\t\t\t\t\t\t\t\t\t\t'</option>' : '';\r\n\t\t\t\t\t\t\t\t\tval = string;\r\n\t\t\t\t\t\t\t\t\ttxt = string;\r\n\t\t\t\t\t\t\t\t\tif ( string.indexOf( wo.filter_selectSourceSeparator ) >= 0 ) {\r\n\t\t\t\t\t\t\t\t\t\tval = string.split( wo.filter_selectSourceSeparator );\r\n\t\t\t\t\t\t\t\t\t\ttxt = val[1];\r\n\t\t\t\t\t\t\t\t\t\tval = val[0];\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\toptions += '<option ' +\r\n\t\t\t\t\t\t\t\t\t\t( txt === val ? '' : 'data-function-name=\"' + string + '\" ' ) +\r\n\t\t\t\t\t\t\t\t\t\t'value=\"' + val + '\">' + txt + '</option>';\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tc.$table\r\n\t\t\t\t\t\t\t\t.find( 'thead' )\r\n\t\t\t\t\t\t\t\t.find( 'select.' + tscss.filter + '[data-column=\"' + column + '\"]' )\r\n\t\t\t\t\t\t\t\t.append( options );\r\n\t\t\t\t\t\t\ttxt = wo.filter_selectSource;\r\n\t\t\t\t\t\t\tfxn = typeof txt === 'function' ? true : ts.getColumnData( table, txt, column );\r\n\t\t\t\t\t\t\tif ( fxn ) {\r\n\t\t\t\t\t\t\t\t// updating so the extra options are appended\r\n\t\t\t\t\t\t\t\ttsf.buildSelect( c.table, column, '', true, $header.hasClass( wo.filter_onlyAvail ) );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// not really updating, but if the column has both the 'filter-select' class &\r\n\t\t\t// filter_functions set to true, it would append the same options twice.\r\n\t\t\ttsf.buildDefault( table, true );\r\n\r\n\t\t\ttsf.bindSearch( table, c.$table.find( '.' + tscss.filter ), true );\r\n\t\t\tif ( wo.filter_external ) {\r\n\t\t\t\ttsf.bindSearch( table, wo.filter_external );\r\n\t\t\t}\r\n\r\n\t\t\tif ( wo.filter_hideFilters ) {\r\n\t\t\t\ttsf.hideFilters( c );\r\n\t\t\t}\r\n\r\n\t\t\t// show processing icon\r\n\t\t\tif ( c.showProcessing ) {\r\n\t\t\t\ttxt = 'filterStart filterEnd '.split( ' ' ).join( c.namespace + 'filter-sp ' );\r\n\t\t\t\tc.$table\r\n\t\t\t\t\t.unbind( txt.replace( ts.regex.spaces, ' ' ) )\r\n\t\t\t\t\t.bind( txt, function( event, columns ) {\r\n\t\t\t\t\t// only add processing to certain columns to all columns\r\n\t\t\t\t\t$header = ( columns ) ?\r\n\t\t\t\t\t\tc.$table\r\n\t\t\t\t\t\t\t.find( '.' + tscss.header )\r\n\t\t\t\t\t\t\t.filter( '[data-column]' )\r\n\t\t\t\t\t\t\t.filter( function() {\r\n\t\t\t\t\t\t\t\treturn columns[ $( this ).data( 'column' ) ] !== '';\r\n\t\t\t\t\t\t\t}) : '';\r\n\t\t\t\t\tts.isProcessing( table, event.type === 'filterStart', columns ? $header : '' );\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// set filtered rows count ( intially unfiltered )\r\n\t\t\tc.filteredRows = c.totalRows;\r\n\r\n\t\t\t// add default values\r\n\t\t\ttxt = 'tablesorter-initialized pagerBeforeInitialized '.split( ' ' ).join( c.namespace + 'filter ' );\r\n\t\t\tc.$table\r\n\t\t\t.unbind( txt.replace( ts.regex.spaces, ' ' ) )\r\n\t\t\t.bind( txt, function() {\r\n\t\t\t\ttsf.completeInit( this );\r\n\t\t\t});\r\n\t\t\t// if filter widget is added after pager has initialized; then set filter init flag\r\n\t\t\tif ( c.pager && c.pager.initialized && !wo.filter_initialized ) {\r\n\t\t\t\tc.$table.triggerHandler( 'filterFomatterUpdate' );\r\n\t\t\t\tsetTimeout( function() {\r\n\t\t\t\t\ttsf.filterInitComplete( c );\r\n\t\t\t\t}, 100 );\r\n\t\t\t} else if ( !wo.filter_initialized ) {\r\n\t\t\t\ttsf.completeInit( table );\r\n\t\t\t}\r\n\t\t},\r\n\t\tcompleteInit: function( table ) {\r\n\t\t\t// redefine 'c' & 'wo' so they update properly inside this callback\r\n\t\t\tvar c = table.config,\r\n\t\t\t\two = c.widgetOptions,\r\n\t\t\t\tfilters = tsf.setDefaults( table, c, wo ) || [];\r\n\t\t\tif ( filters.length ) {\r\n\t\t\t\t// prevent delayInit from triggering a cache build if filters are empty\r\n\t\t\t\tif ( !( c.delayInit && filters.join( '' ) === '' ) ) {\r\n\t\t\t\t\tts.setFilters( table, filters, true );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tc.$table.triggerHandler( 'filterFomatterUpdate' );\r\n\t\t\t// trigger init after setTimeout to prevent multiple filterStart/End/Init triggers\r\n\t\t\tsetTimeout( function() {\r\n\t\t\t\tif ( !wo.filter_initialized ) {\r\n\t\t\t\t\ttsf.filterInitComplete( c );\r\n\t\t\t\t}\r\n\t\t\t}, 100 );\r\n\t\t},\r\n\r\n\t\t// $cell parameter, but not the config, is passed to the filter_formatters,\r\n\t\t// so we have to work with it instead\r\n\t\tformatterUpdated: function( $cell, column ) {\r\n\t\t\t// prevent error if $cell is undefined - see #1056\r\n\t\t\tvar $table = $cell && $cell.closest( 'table' );\r\n\t\t\tvar config = $table.length && $table[0].config,\r\n\t\t\t\two = config && config.widgetOptions;\r\n\t\t\tif ( wo && !wo.filter_initialized ) {\r\n\t\t\t\t// add updates by column since this function\r\n\t\t\t\t// may be called numerous times before initialization\r\n\t\t\t\two.filter_formatterInit[ column ] = 1;\r\n\t\t\t}\r\n\t\t},\r\n\t\tfilterInitComplete: function( c ) {\r\n\t\t\tvar indx, len,\r\n\t\t\t\two = c.widgetOptions,\r\n\t\t\t\tcount = 0,\r\n\t\t\t\tcompleted = function() {\r\n\t\t\t\t\two.filter_initialized = true;\r\n\t\t\t\t\t// update lastSearch - it gets cleared often\r\n\t\t\t\t\tc.lastSearch = c.$table.data( 'lastSearch' );\r\n\t\t\t\t\tc.$table.triggerHandler( 'filterInit', c );\r\n\t\t\t\t\ttsf.findRows( c.table, c.lastSearch || [] );\r\n\t\t\t\t\tif (ts.debug(c, 'filter')) {\r\n\t\t\t\t\t\tconsole.log('Filter >> Widget initialized');\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\tif ( $.isEmptyObject( wo.filter_formatter ) ) {\r\n\t\t\t\tcompleted();\r\n\t\t\t} else {\r\n\t\t\t\tlen = wo.filter_formatterInit.length;\r\n\t\t\t\tfor ( indx = 0; indx < len; indx++ ) {\r\n\t\t\t\t\tif ( wo.filter_formatterInit[ indx ] === 1 ) {\r\n\t\t\t\t\t\tcount++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tclearTimeout( wo.filter_initTimer );\r\n\t\t\t\tif ( !wo.filter_initialized && count === wo.filter_formatterCount ) {\r\n\t\t\t\t\t// filter widget initialized\r\n\t\t\t\t\tcompleted();\r\n\t\t\t\t} else if ( !wo.filter_initialized ) {\r\n\t\t\t\t\t// fall back in case a filter_formatter doesn't call\r\n\t\t\t\t\t// $.tablesorter.filter.formatterUpdated( $cell, column ), and the count is off\r\n\t\t\t\t\two.filter_initTimer = setTimeout( function() {\r\n\t\t\t\t\t\tcompleted();\r\n\t\t\t\t\t}, 500 );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t// encode or decode filters for storage; see #1026\r\n\t\tprocessFilters: function( filters, encode ) {\r\n\t\t\tvar indx,\r\n\t\t\t\t// fixes #1237; previously returning an encoded \"filters\" value\r\n\t\t\t\tresult = [],\r\n\t\t\t\tmode = encode ? encodeURIComponent : decodeURIComponent,\r\n\t\t\t\tlen = filters.length;\r\n\t\t\tfor ( indx = 0; indx < len; indx++ ) {\r\n\t\t\t\tif ( filters[ indx ] ) {\r\n\t\t\t\t\tresult[ indx ] = mode( filters[ indx ] );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn result;\r\n\t\t},\r\n\t\tsetDefaults: function( table, c, wo ) {\r\n\t\t\tvar isArray, saved, indx, col, $filters,\r\n\t\t\t\t// get current ( default ) filters\r\n\t\t\t\tfilters = ts.getFilters( table ) || [];\r\n\t\t\tif ( wo.filter_saveFilters && ts.storage ) {\r\n\t\t\t\tsaved = ts.storage( table, 'tablesorter-filters' ) || [];\r\n\t\t\t\tisArray = $.isArray( saved );\r\n\t\t\t\t// make sure we're not just getting an empty array\r\n\t\t\t\tif ( !( isArray && saved.join( '' ) === '' || !isArray ) ) {\r\n\t\t\t\t\tfilters = tsf.processFilters( saved );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// if no filters saved, then check default settings\r\n\t\t\tif ( filters.join( '' ) === '' ) {\r\n\t\t\t\t// allow adding default setting to external filters\r\n\t\t\t\t$filters = c.$headers.add( wo.filter_$externalFilters )\r\n\t\t\t\t\t.filter( '[' + wo.filter_defaultAttrib + ']' );\r\n\t\t\t\tfor ( indx = 0; indx <= c.columns; indx++ ) {\r\n\t\t\t\t\t// include data-column='all' external filters\r\n\t\t\t\t\tcol = indx === c.columns ? 'all' : indx;\r\n\t\t\t\t\tfilters[ indx ] = $filters\r\n\t\t\t\t\t\t.filter( '[data-column=\"' + col + '\"]' )\r\n\t\t\t\t\t\t.attr( wo.filter_defaultAttrib ) || filters[indx] || '';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tc.$table.data( 'lastSearch', filters );\r\n\t\t\treturn filters;\r\n\t\t},\r\n\t\tparseFilter: function( c, filter, data, parsed ) {\r\n\t\t\treturn parsed || data.parsed[ data.index ] ?\r\n\t\t\t\tc.parsers[ data.index ].format( filter, c.table, [], data.index ) :\r\n\t\t\t\tfilter;\r\n\t\t},\r\n\t\tbuildRow: function( table, c, wo ) {\r\n\t\t\tvar $filter, col, column, $header, makeSelect, disabled, name, ffxn, tmp,\r\n\t\t\t\t// c.columns defined in computeThIndexes()\r\n\t\t\t\tcellFilter = wo.filter_cellFilter,\r\n\t\t\t\tcolumns = c.columns,\r\n\t\t\t\tarry = $.isArray( cellFilter ),\r\n\t\t\t\tbuildFilter = '<tr role=\"search\" class=\"' + tscss.filterRow + ' ' + c.cssIgnoreRow + '\">';\r\n\t\t\tfor ( column = 0; column < columns; column++ ) {\r\n\t\t\t\tif ( c.$headerIndexed[ column ].length ) {\r\n\t\t\t\t\t// account for entire column set with colspan. See #1047\r\n\t\t\t\t\ttmp = c.$headerIndexed[ column ] && c.$headerIndexed[ column ][0].colSpan || 0;\r\n\t\t\t\t\tif ( tmp > 1 ) {\r\n\t\t\t\t\t\tbuildFilter += '<td data-column=\"' + column + '-' + ( column + tmp - 1 ) + '\" colspan=\"' + tmp + '\"';\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tbuildFilter += '<td data-column=\"' + column + '\"';\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( arry ) {\r\n\t\t\t\t\t\tbuildFilter += ( cellFilter[ column ] ? ' class=\"' + cellFilter[ column ] + '\"' : '' );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tbuildFilter += ( cellFilter !== '' ? ' class=\"' + cellFilter + '\"' : '' );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbuildFilter += '></td>';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tc.$filters = $( buildFilter += '</tr>' )\r\n\t\t\t\t.appendTo( c.$table.children( 'thead' ).eq( 0 ) )\r\n\t\t\t\t.children( 'td' );\r\n\t\t\t// build each filter input\r\n\t\t\tfor ( column = 0; column < columns; column++ ) {\r\n\t\t\t\tdisabled = false;\r\n\t\t\t\t// assuming last cell of a column is the main column\r\n\t\t\t\t$header = c.$headerIndexed[ column ];\r\n\t\t\t\tif ( $header && $header.length ) {\r\n\t\t\t\t\t// $filter = c.$filters.filter( '[data-column=\"' + column + '\"]' );\r\n\t\t\t\t\t$filter = tsf.getColumnElm( c, c.$filters, column );\r\n\t\t\t\t\tffxn = ts.getColumnData( table, wo.filter_functions, column );\r\n\t\t\t\t\tmakeSelect = ( wo.filter_functions && ffxn && typeof ffxn !== 'function' ) ||\r\n\t\t\t\t\t\t$header.hasClass( 'filter-select' );\r\n\t\t\t\t\t// get data from jQuery data, metadata, headers option or header class name\r\n\t\t\t\t\tcol = ts.getColumnData( table, c.headers, column );\r\n\t\t\t\t\tdisabled = ts.getData( $header[0], col, 'filter' ) === 'false' ||\r\n\t\t\t\t\t\tts.getData( $header[0], col, 'parser' ) === 'false';\r\n\r\n\t\t\t\t\tif ( makeSelect ) {\r\n\t\t\t\t\t\tbuildFilter = $( '<select>' ).appendTo( $filter );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tffxn = ts.getColumnData( table, wo.filter_formatter, column );\r\n\t\t\t\t\t\tif ( ffxn ) {\r\n\t\t\t\t\t\t\two.filter_formatterCount++;\r\n\t\t\t\t\t\t\tbuildFilter = ffxn( $filter, column );\r\n\t\t\t\t\t\t\t// no element returned, so lets go find it\r\n\t\t\t\t\t\t\tif ( buildFilter && buildFilter.length === 0 ) {\r\n\t\t\t\t\t\t\t\tbuildFilter = $filter.children( 'input' );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// element not in DOM, so lets attach it\r\n\t\t\t\t\t\t\tif ( buildFilter && ( buildFilter.parent().length === 0 ||\r\n\t\t\t\t\t\t\t\t( buildFilter.parent().length && buildFilter.parent()[0] !== $filter[0] ) ) ) {\r\n\t\t\t\t\t\t\t\t$filter.append( buildFilter );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tbuildFilter = $( '<input type=\"search\">' ).appendTo( $filter );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif ( buildFilter ) {\r\n\t\t\t\t\t\t\ttmp = $header.data( 'placeholder' ) ||\r\n\t\t\t\t\t\t\t\t$header.attr( 'data-placeholder' ) ||\r\n\t\t\t\t\t\t\t\two.filter_placeholder.search || '';\r\n\t\t\t\t\t\t\tbuildFilter.attr( 'placeholder', tmp );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( buildFilter ) {\r\n\t\t\t\t\t\t// add filter class name\r\n\t\t\t\t\t\tname = ( $.isArray( wo.filter_cssFilter ) ?\r\n\t\t\t\t\t\t\t( typeof wo.filter_cssFilter[column] !== 'undefined' ? wo.filter_cssFilter[column] || '' : '' ) :\r\n\t\t\t\t\t\t\two.filter_cssFilter ) || '';\r\n\t\t\t\t\t\t// copy data-column from table cell (it will include colspan)\r\n\t\t\t\t\t\tbuildFilter.addClass( tscss.filter + ' ' + name );\r\n\t\t\t\t\t\tname = wo.filter_filterLabel;\r\n\t\t\t\t\t\ttmp = name.match(/{{([^}]+?)}}/g);\r\n\t\t\t\t\t\tif (!tmp) {\r\n\t\t\t\t\t\t\ttmp = [ '{{label}}' ];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t$.each(tmp, function(indx, attr) {\r\n\t\t\t\t\t\t\tvar regex = new RegExp(attr, 'g'),\r\n\t\t\t\t\t\t\t\tdata = $header.attr('data-' + attr.replace(/{{|}}/g, '')),\r\n\t\t\t\t\t\t\t\ttext = typeof data === 'undefined' ? $header.text() : data;\r\n\t\t\t\t\t\t\tname = name.replace( regex, $.trim( text ) );\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tbuildFilter.attr({\r\n\t\t\t\t\t\t\t'data-column': $filter.attr( 'data-column' ),\r\n\t\t\t\t\t\t\t'aria-label': name\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tif ( disabled ) {\r\n\t\t\t\t\t\t\tbuildFilter.attr( 'placeholder', '' ).addClass( tscss.filterDisabled )[0].disabled = true;\r\n\t\t\t\t\t\t}\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\tbindSearch: function( table, $el, internal ) {\r\n\t\t\ttable = $( table )[0];\r\n\t\t\t$el = $( $el ); // allow passing a selector string\r\n\t\t\tif ( !$el.length ) { return; }\r\n\t\t\tvar tmp,\r\n\t\t\t\tc = table.config,\r\n\t\t\t\two = c.widgetOptions,\r\n\t\t\t\tnamespace = c.namespace + 'filter',\r\n\t\t\t\t$ext = wo.filter_$externalFilters;\r\n\t\t\tif ( internal !== true ) {\r\n\t\t\t\t// save anyMatch element\r\n\t\t\t\ttmp = wo.filter_anyColumnSelector + ',' + wo.filter_multipleColumnSelector;\r\n\t\t\t\two.filter_$anyMatch = $el.filter( tmp );\r\n\t\t\t\tif ( $ext && $ext.length ) {\r\n\t\t\t\t\two.filter_$externalFilters = wo.filter_$externalFilters.add( $el );\r\n\t\t\t\t} else {\r\n\t\t\t\t\two.filter_$externalFilters = $el;\r\n\t\t\t\t}\r\n\t\t\t\t// update values ( external filters added after table initialization )\r\n\t\t\t\tts.setFilters( table, c.$table.data( 'lastSearch' ) || [], internal === false );\r\n\t\t\t}\r\n\t\t\t// unbind events\r\n\t\t\ttmp = ( 'keypress keyup keydown search change input '.split( ' ' ).join( namespace + ' ' ) );\r\n\t\t\t$el\r\n\t\t\t// use data attribute instead of jQuery data since the head is cloned without including\r\n\t\t\t// the data/binding\r\n\t\t\t.attr( 'data-lastSearchTime', new Date().getTime() )\r\n\t\t\t.unbind( tmp.replace( ts.regex.spaces, ' ' ) )\r\n\t\t\t.bind( 'keydown' + namespace, function( event ) {\r\n\t\t\t\tif ( event.which === tskeyCodes.escape && !table.config.widgetOptions.filter_resetOnEsc ) {\r\n\t\t\t\t\t// prevent keypress event\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.bind( 'keyup' + namespace, function( event ) {\r\n\t\t\t\two = table.config.widgetOptions; // make sure \"wo\" isn't cached\r\n\t\t\t\tvar column = parseInt( $( this ).attr( 'data-column' ), 10 ),\r\n\t\t\t\t\tliveSearch = typeof wo.filter_liveSearch === 'boolean' ? wo.filter_liveSearch :\r\n\t\t\t\t\t\tts.getColumnData( table, wo.filter_liveSearch, column );\r\n\t\t\t\tif ( typeof liveSearch === 'undefined' ) {\r\n\t\t\t\t\tliveSearch = wo.filter_liveSearch.fallback || false;\r\n\t\t\t\t}\r\n\t\t\t\t$( this ).attr( 'data-lastSearchTime', new Date().getTime() );\r\n\t\t\t\t// emulate what webkit does.... escape clears the filter\r\n\t\t\t\tif ( event.which === tskeyCodes.escape ) {\r\n\t\t\t\t\t// make sure to restore the last value on escape\r\n\t\t\t\t\tthis.value = wo.filter_resetOnEsc ? '' : c.lastSearch[column];\r\n\t\t\t\t\t// don't return if the search value is empty ( all rows need to be revealed )\r\n\t\t\t\t} else if ( this.value !== '' && (\r\n\t\t\t\t\t// liveSearch can contain a min value length; ignore arrow and meta keys, but allow backspace\r\n\t\t\t\t\t( typeof liveSearch === 'number' && this.value.length < liveSearch ) ||\r\n\t\t\t\t\t// let return & backspace continue on, but ignore arrows & non-valid characters\r\n\t\t\t\t\t( event.which !== tskeyCodes.enter && event.which !== tskeyCodes.backSpace &&\r\n\t\t\t\t\t\t( event.which < tskeyCodes.space || ( event.which >= tskeyCodes.left && event.which <= tskeyCodes.down ) ) ) ) ) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t\t// live search\r\n\t\t\t\t} else if ( liveSearch === false ) {\r\n\t\t\t\t\tif ( this.value !== '' && event.which !== tskeyCodes.enter ) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t// change event = no delay; last true flag tells getFilters to skip newest timed input\r\n\t\t\t\ttsf.searching( table, true, true, column );\r\n\t\t\t})\r\n\t\t\t// include change for select - fixes #473\r\n\t\t\t.bind( 'search change keypress input blur '.split( ' ' ).join( namespace + ' ' ), function( event ) {\r\n\t\t\t\t// don't get cached data, in case data-column changes dynamically\r\n\t\t\t\tvar column = parseInt( $( this ).attr( 'data-column' ), 10 ),\r\n\t\t\t\t\teventType = event.type,\r\n\t\t\t\t\tliveSearch = typeof wo.filter_liveSearch === 'boolean' ?\r\n\t\t\t\t\t\two.filter_liveSearch :\r\n\t\t\t\t\t\tts.getColumnData( table, wo.filter_liveSearch, column );\r\n\t\t\t\tif ( table.config.widgetOptions.filter_initialized &&\r\n\t\t\t\t\t// immediate search if user presses enter\r\n\t\t\t\t\t( event.which === tskeyCodes.enter ||\r\n\t\t\t\t\t\t// immediate search if a \"search\" or \"blur\" is triggered on the input\r\n\t\t\t\t\t\t( eventType === 'search' || eventType === 'blur' ) ||\r\n\t\t\t\t\t\t// change & input events must be ignored if liveSearch !== true\r\n\t\t\t\t\t\t( eventType === 'change' || eventType === 'input' ) &&\r\n\t\t\t\t\t\t// prevent search if liveSearch is a number\r\n\t\t\t\t\t\t( liveSearch === true || liveSearch !== true && event.target.nodeName !== 'INPUT' ) &&\r\n\t\t\t\t\t\t// don't allow 'change' or 'input' event to process if the input value\r\n\t\t\t\t\t\t// is the same - fixes #685\r\n\t\t\t\t\t\tthis.value !== c.lastSearch[column]\r\n\t\t\t\t\t)\r\n\t\t\t\t) {\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t// init search with no delay\r\n\t\t\t\t\t$( this ).attr( 'data-lastSearchTime', new Date().getTime() );\r\n\t\t\t\t\ttsf.searching( table, eventType !== 'keypress' || event.which === tskeyCodes.enter, true, column );\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\t\tsearching: function( table, filter, skipFirst, column ) {\r\n\t\t\tvar liveSearch,\r\n\t\t\t\two = table.config.widgetOptions;\r\n\t\t\tif (typeof column === 'undefined') {\r\n\t\t\t\t// no delay\r\n\t\t\t\tliveSearch = false;\r\n\t\t\t} else {\r\n\t\t\t\tliveSearch = typeof wo.filter_liveSearch === 'boolean' ?\r\n\t\t\t\t\two.filter_liveSearch :\r\n\t\t\t\t\t// get column setting, or set to fallback value, or default to false\r\n\t\t\t\t\tts.getColumnData( table, wo.filter_liveSearch, column );\r\n\t\t\t\tif ( typeof liveSearch === 'undefined' ) {\r\n\t\t\t\t\tliveSearch = wo.filter_liveSearch.fallback || false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tclearTimeout( wo.filter_searchTimer );\r\n\t\t\tif ( typeof filter === 'undefined' || filter === true ) {\r\n\t\t\t\t// delay filtering\r\n\t\t\t\two.filter_searchTimer = setTimeout( function() {\r\n\t\t\t\t\ttsf.checkFilters( table, filter, skipFirst );\r\n\t\t\t\t}, liveSearch ? wo.filter_searchDelay : 10 );\r\n\t\t\t} else {\r\n\t\t\t\t// skip delay\r\n\t\t\t\ttsf.checkFilters( table, filter, skipFirst );\r\n\t\t\t}\r\n\t\t},\r\n\t\tequalFilters: function (c, filter1, filter2) {\r\n\t\t\tvar indx,\r\n\t\t\t\tf1 = [],\r\n\t\t\t\tf2 = [],\r\n\t\t\t\tlen = c.columns + 1; // add one to include anyMatch filter\r\n\t\t\tfilter1 = $.isArray(filter1) ? filter1 : [];\r\n\t\t\tfilter2 = $.isArray(filter2) ? filter2 : [];\r\n\t\t\tfor (indx = 0; indx < len; indx++) {\r\n\t\t\t\tf1[indx] = filter1[indx] || '';\r\n\t\t\t\tf2[indx] = filter2[indx] || '';\r\n\t\t\t}\r\n\t\t\treturn f1.join(',') === f2.join(',');\r\n\t\t},\r\n\t\tcheckFilters: function( table, filter, skipFirst ) {\r\n\t\t\tvar c = table.config,\r\n\t\t\t\two = c.widgetOptions,\r\n\t\t\t\tfilterArray = $.isArray( filter ),\r\n\t\t\t\tfilters = ( filterArray ) ? filter : ts.getFilters( table, true ),\r\n\t\t\t\tcurrentFilters = filters || []; // current filter values\r\n\t\t\t// prevent errors if delay init is set\r\n\t\t\tif ( $.isEmptyObject( c.cache ) ) {\r\n\t\t\t\t// update cache if delayInit set & pager has initialized ( after user initiates a search )\r\n\t\t\t\tif ( c.delayInit && ( !c.pager || c.pager && c.pager.initialized ) ) {\r\n\t\t\t\t\tts.updateCache( c, function() {\r\n\t\t\t\t\t\ttsf.checkFilters( table, false, skipFirst );\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t// add filter array back into inputs\r\n\t\t\tif ( filterArray ) {\r\n\t\t\t\tts.setFilters( table, filters, false, skipFirst !== true );\r\n\t\t\t\tif ( !wo.filter_initialized ) {\r\n\t\t\t\t\tc.lastSearch = [];\r\n\t\t\t\t\tc.lastCombinedFilter = '';\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif ( wo.filter_hideFilters ) {\r\n\t\t\t\t// show/hide filter row as needed\r\n\t\t\t\tc.$table\r\n\t\t\t\t\t.find( '.' + tscss.filterRow )\r\n\t\t\t\t\t.triggerHandler( tsf.hideFiltersCheck( c ) ? 'mouseleave' : 'mouseenter' );\r\n\t\t\t}\r\n\t\t\t// return if the last search is the same; but filter === false when updating the search\r\n\t\t\t// see example-widget-filter.html filter toggle buttons\r\n\t\t\tif ( tsf.equalFilters(c, c.lastSearch, currentFilters) ) {\r\n\t\t\t\tif ( filter !== false ) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// force filter refresh\r\n\t\t\t\t\tc.lastCombinedFilter = '';\r\n\t\t\t\t\tc.lastSearch = [];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// define filter inside it is false\r\n\t\t\tfilters = filters || [];\r\n\t\t\t// convert filters to strings - see #1070\r\n\t\t\tfilters = Array.prototype.map ?\r\n\t\t\t\tfilters.map( String ) :\r\n\t\t\t\t// for IE8 & older browsers - maybe not the best method\r\n\t\t\t\tfilters.join( '\\ufffd' ).split( '\\ufffd' );\r\n\r\n\t\t\tif ( wo.filter_initialized ) {\r\n\t\t\t\tc.$table.triggerHandler( 'filterStart', [ filters ] );\r\n\t\t\t}\r\n\t\t\tif ( c.showProcessing ) {\r\n\t\t\t\t// give it time for the processing icon to kick in\r\n\t\t\t\tsetTimeout( function() {\r\n\t\t\t\t\ttsf.findRows( table, filters, currentFilters );\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}, 30 );\r\n\t\t\t} else {\r\n\t\t\t\ttsf.findRows( table, filters, currentFilters );\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t},\r\n\t\thideFiltersCheck: function( c ) {\r\n\t\t\tif (typeof c.widgetOptions.filter_hideFilters === 'function') {\r\n\t\t\t\tvar val = c.widgetOptions.filter_hideFilters( c );\r\n\t\t\t\tif (typeof val === 'boolean') {\r\n\t\t\t\t\treturn val;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn ts.getFilters( c.$table ).join( '' ) === '';\r\n\t\t},\r\n\t\thideFilters: function( c, $table ) {\r\n\t\t\tvar timer;\r\n\t\t\t( $table || c.$table )\r\n\t\t\t\t.find( '.' + tscss.filterRow )\r\n\t\t\t\t.addClass( tscss.filterRowHide )\r\n\t\t\t\t.bind( 'mouseenter mouseleave', function( e ) {\r\n\t\t\t\t\t// save event object - http://bugs.jquery.com/ticket/12140\r\n\t\t\t\t\tvar event = e,\r\n\t\t\t\t\t\t$row = $( this );\r\n\t\t\t\t\tclearTimeout( timer );\r\n\t\t\t\t\ttimer = setTimeout( function() {\r\n\t\t\t\t\t\tif ( /enter|over/.test( event.type ) ) {\r\n\t\t\t\t\t\t\t$row.removeClass( tscss.filterRowHide );\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// don't hide if input has focus\r\n\t\t\t\t\t\t\t// $( ':focus' ) needs jQuery 1.6+\r\n\t\t\t\t\t\t\tif ( $( document.activeElement ).closest( 'tr' )[0] !== $row[0] ) {\r\n\t\t\t\t\t\t\t\t// don't hide row if any filter has a value\r\n\t\t\t\t\t\t\t\t$row.toggleClass( tscss.filterRowHide, tsf.hideFiltersCheck( c ) );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, 200 );\r\n\t\t\t\t})\r\n\t\t\t\t.find( 'input, select' ).bind( 'focus blur', function( e ) {\r\n\t\t\t\t\tvar event = e,\r\n\t\t\t\t\t\t$row = $( this ).closest( 'tr' );\r\n\t\t\t\t\tclearTimeout( timer );\r\n\t\t\t\t\ttimer = setTimeout( function() {\r\n\t\t\t\t\t\tclearTimeout( timer );\r\n\t\t\t\t\t\t// don't hide row if any filter has a value\r\n\t\t\t\t\t\t$row.toggleClass( tscss.filterRowHide, tsf.hideFiltersCheck( c ) && event.type !== 'focus' );\r\n\t\t\t\t\t}, 200 );\r\n\t\t\t\t});\r\n\t\t},\r\n\t\tdefaultFilter: function( filter, mask ) {\r\n\t\t\tif ( filter === '' ) { return filter; }\r\n\t\t\tvar regex = tsfRegex.iQuery,\r\n\t\t\t\tmaskLen = mask.match( tsfRegex.igQuery ).length,\r\n\t\t\t\tquery = maskLen > 1 ? $.trim( filter ).split( /\\s/ ) : [ $.trim( filter ) ],\r\n\t\t\t\tlen = query.length - 1,\r\n\t\t\t\tindx = 0,\r\n\t\t\t\tval = mask;\r\n\t\t\tif ( len < 1 && maskLen > 1 ) {\r\n\t\t\t\t// only one 'word' in query but mask has >1 slots\r\n\t\t\t\tquery[1] = query[0];\r\n\t\t\t}\r\n\t\t\t// replace all {query} with query words...\r\n\t\t\t// if query = 'Bob', then convert mask from '!{query}' to '!Bob'\r\n\t\t\t// if query = 'Bob Joe Frank', then convert mask '{q} OR {q}' to 'Bob OR Joe OR Frank'\r\n\t\t\twhile ( regex.test( val ) ) {\r\n\t\t\t\tval = val.replace( regex, query[indx++] || '' );\r\n\t\t\t\tif ( regex.test( val ) && indx < len && ( query[indx] || '' ) !== '' ) {\r\n\t\t\t\t\tval = mask.replace( regex, val );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn val;\r\n\t\t},\r\n\t\tgetLatestSearch: function( $input ) {\r\n\t\t\tif ( $input ) {\r\n\t\t\t\treturn $input.sort( function( a, b ) {\r\n\t\t\t\t\treturn $( b ).attr( 'data-lastSearchTime' ) - $( a ).attr( 'data-lastSearchTime' );\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\treturn $input || $();\r\n\t\t},\r\n\t\tfindRange: function( c, val, ignoreRanges ) {\r\n\t\t\t// look for multiple columns '1-3,4-6,8' in data-column\r\n\t\t\tvar temp, ranges, range, start, end, singles, i, indx, len,\r\n\t\t\t\tcolumns = [];\r\n\t\t\tif ( /^[0-9]+$/.test( val ) ) {\r\n\t\t\t\t// always return an array\r\n\t\t\t\treturn [ parseInt( val, 10 ) ];\r\n\t\t\t}\r\n\t\t\t// process column range\r\n\t\t\tif ( !ignoreRanges && /-/.test( val ) ) {\r\n\t\t\t\tranges = val.match( /(\\d+)\\s*-\\s*(\\d+)/g );\r\n\t\t\t\tlen = ranges ? ranges.length : 0;\r\n\t\t\t\tfor ( indx = 0; indx < len; indx++ ) {\r\n\t\t\t\t\trange = ranges[indx].split( /\\s*-\\s*/ );\r\n\t\t\t\t\tstart = parseInt( range[0], 10 ) || 0;\r\n\t\t\t\t\tend = parseInt( range[1], 10 ) || ( c.columns - 1 );\r\n\t\t\t\t\tif ( start > end ) {\r\n\t\t\t\t\t\ttemp = start; start = end; end = temp; // swap\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( end >= c.columns ) {\r\n\t\t\t\t\t\tend = c.columns - 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfor ( ; start <= end; start++ ) {\r\n\t\t\t\t\t\tcolumns[ columns.length ] = start;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// remove processed range from val\r\n\t\t\t\t\tval = val.replace( ranges[ indx ], '' );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// process single columns\r\n\t\t\tif ( !ignoreRanges && /,/.test( val ) ) {\r\n\t\t\t\tsingles = val.split( /\\s*,\\s*/ );\r\n\t\t\t\tlen = singles.length;\r\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\r\n\t\t\t\t\tif ( singles[ i ] !== '' ) {\r\n\t\t\t\t\t\tindx = parseInt( singles[ i ], 10 );\r\n\t\t\t\t\t\tif ( indx < c.columns ) {\r\n\t\t\t\t\t\t\tcolumns[ columns.length ] = indx;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// return all columns\r\n\t\t\tif ( !columns.length ) {\r\n\t\t\t\tfor ( indx = 0; indx < c.columns; indx++ ) {\r\n\t\t\t\t\tcolumns[ columns.length ] = indx;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn columns;\r\n\t\t},\r\n\t\tgetColumnElm: function( c, $elements, column ) {\r\n\t\t\t// data-column may contain multiple columns '1-3,5-6,8'\r\n\t\t\t// replaces: c.$filters.filter( '[data-column=\"' + column + '\"]' );\r\n\t\t\treturn $elements.filter( function() {\r\n\t\t\t\tvar cols = tsf.findRange( c, $( this ).attr( 'data-column' ) );\r\n\t\t\t\treturn $.inArray( column, cols ) > -1;\r\n\t\t\t});\r\n\t\t},\r\n\t\tmultipleColumns: function( c, $input ) {\r\n\t\t\t// look for multiple columns '1-3,4-6,8' in data-column\r\n\t\t\tvar wo = c.widgetOptions,\r\n\t\t\t\t// only target 'all' column inputs on initialization\r\n\t\t\t\t// & don't target 'all' column inputs if they don't exist\r\n\t\t\t\ttargets = wo.filter_initialized || !$input.filter( wo.filter_anyColumnSelector ).length,\r\n\t\t\t\tval = $.trim( tsf.getLatestSearch( $input ).attr( 'data-column' ) || '' );\r\n\t\t\treturn tsf.findRange( c, val, !targets );\r\n\t\t},\r\n\t\tprocessTypes: function( c, data, vars ) {\r\n\t\t\tvar ffxn,\r\n\t\t\t\tfilterMatched = null,\r\n\t\t\t\tmatches = null;\r\n\t\t\tfor ( ffxn in tsf.types ) {\r\n\t\t\t\tif ( $.inArray( ffxn, vars.excludeMatch ) < 0 && matches === null ) {\r\n\t\t\t\t\tmatches = tsf.types[ffxn]( c, data, vars );\r\n\t\t\t\t\tif ( matches !== null ) {\r\n\t\t\t\t\t\tdata.matchedOn = ffxn;\r\n\t\t\t\t\t\tfilterMatched = matches;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn filterMatched;\r\n\t\t},\r\n\t\tmatchType: function( c, columnIndex ) {\r\n\t\t\tvar isMatch,\r\n\t\t\t\two = c.widgetOptions,\r\n\t\t\t\t$el = c.$headerIndexed[ columnIndex ];\r\n\t\t\t// filter-exact > filter-match > filter_matchType for type\r\n\t\t\tif ( $el.hasClass( 'filter-exact' ) ) {\r\n\t\t\t\tisMatch = false;\r\n\t\t\t} else if ( $el.hasClass( 'filter-match' ) ) {\r\n\t\t\t\tisMatch = true;\r\n\t\t\t} else {\r\n\t\t\t\t// filter-select is not applied when filter_functions are used, so look for a select\r\n\t\t\t\tif ( wo.filter_columnFilters ) {\r\n\t\t\t\t\t$el = c.$filters\r\n\t\t\t\t\t\t.find( '.' + tscss.filter )\r\n\t\t\t\t\t\t.add( wo.filter_$externalFilters )\r\n\t\t\t\t\t\t.filter( '[data-column=\"' + columnIndex + '\"]' );\r\n\t\t\t\t} else if ( wo.filter_$externalFilters ) {\r\n\t\t\t\t\t$el = wo.filter_$externalFilters.filter( '[data-column=\"' + columnIndex + '\"]' );\r\n\t\t\t\t}\r\n\t\t\t\tisMatch = $el.length ?\r\n\t\t\t\t\tc.widgetOptions.filter_matchType[ ( $el[ 0 ].nodeName || '' ).toLowerCase() ] === 'match' :\r\n\t\t\t\t\t// default to exact, if no inputs found\r\n\t\t\t\t\tfalse;\r\n\t\t\t}\r\n\t\t\treturn isMatch;\r\n\t\t},\r\n\t\tprocessRow: function( c, data, vars ) {\r\n\t\t\tvar result, filterMatched,\r\n\t\t\t\tfxn, ffxn, txt,\r\n\t\t\t\two = c.widgetOptions,\r\n\t\t\t\tshowRow = true,\r\n\t\t\t\thasAnyMatchInput = wo.filter_$anyMatch && wo.filter_$anyMatch.length,\r\n\r\n\t\t\t\t// if wo.filter_$anyMatch data-column attribute is changed dynamically\r\n\t\t\t\t// we don't want to do an \"anyMatch\" search on one column using data\r\n\t\t\t\t// for the entire row - see #998\r\n\t\t\t\tcolumnIndex = wo.filter_$anyMatch && wo.filter_$anyMatch.length ?\r\n\t\t\t\t\t// look for multiple columns '1-3,4-6,8'\r\n\t\t\t\t\ttsf.multipleColumns( c, wo.filter_$anyMatch ) :\r\n\t\t\t\t\t[];\r\n\t\t\tdata.$cells = data.$row.children();\r\n\t\t\tdata.matchedOn = null;\r\n\t\t\tif ( data.anyMatchFlag && columnIndex.length > 1 || ( data.anyMatchFilter && !hasAnyMatchInput ) ) {\r\n\t\t\t\tdata.anyMatch = true;\r\n\t\t\t\tdata.isMatch = true;\r\n\t\t\t\tdata.rowArray = data.$cells.map( function( i ) {\r\n\t\t\t\t\tif ( $.inArray( i, columnIndex ) > -1 || ( data.anyMatchFilter && !hasAnyMatchInput ) ) {\r\n\t\t\t\t\t\tif ( data.parsed[ i ] ) {\r\n\t\t\t\t\t\t\ttxt = data.cacheArray[ i ];\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\ttxt = data.rawArray[ i ];\r\n\t\t\t\t\t\t\ttxt = $.trim( wo.filter_ignoreCase ? txt.toLowerCase() : txt );\r\n\t\t\t\t\t\t\tif ( c.sortLocaleCompare ) {\r\n\t\t\t\t\t\t\t\ttxt = ts.replaceAccents( txt );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn txt;\r\n\t\t\t\t\t}\r\n\t\t\t\t}).get();\r\n\t\t\t\tdata.filter = data.anyMatchFilter;\r\n\t\t\t\tdata.iFilter = data.iAnyMatchFilter;\r\n\t\t\t\tdata.exact = data.rowArray.join( ' ' );\r\n\t\t\t\tdata.iExact = wo.filter_ignoreCase ? data.exact.toLowerCase() : data.exact;\r\n\t\t\t\tdata.cache = data.cacheArray.slice( 0, -1 ).join( ' ' );\r\n\t\t\t\tvars.excludeMatch = vars.noAnyMatch;\r\n\t\t\t\tfilterMatched = tsf.processTypes( c, data, vars );\r\n\t\t\t\tif ( filterMatched !== null ) {\r\n\t\t\t\t\tshowRow = filterMatched;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif ( wo.filter_startsWith ) {\r\n\t\t\t\t\t\tshowRow = false;\r\n\t\t\t\t\t\t// data.rowArray may not contain all columns\r\n\t\t\t\t\t\tcolumnIndex = Math.min( c.columns, data.rowArray.length );\r\n\t\t\t\t\t\twhile ( !showRow && columnIndex > 0 ) {\r\n\t\t\t\t\t\t\tcolumnIndex--;\r\n\t\t\t\t\t\t\tshowRow = showRow || data.rowArray[ columnIndex ].indexOf( data.iFilter ) === 0;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tshowRow = ( data.iExact + data.childRowText ).indexOf( data.iFilter ) >= 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tdata.anyMatch = false;\r\n\t\t\t\t// no other filters to process\r\n\t\t\t\tif ( data.filters.join( '' ) === data.filter ) {\r\n\t\t\t\t\treturn showRow;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfor ( columnIndex = 0; columnIndex < c.columns; columnIndex++ ) {\r\n\t\t\t\tdata.filter = data.filters[ columnIndex ];\r\n\t\t\t\tdata.index = columnIndex;\r\n\r\n\t\t\t\t// filter types to exclude, per column\r\n\t\t\t\tvars.excludeMatch = vars.excludeFilter[ columnIndex ];\r\n\r\n\t\t\t\t// ignore if filter is empty or disabled\r\n\t\t\t\tif ( data.filter ) {\r\n\t\t\t\t\tdata.cache = data.cacheArray[ columnIndex ];\r\n\t\t\t\t\tresult = data.parsed[ columnIndex ] ? data.cache : data.rawArray[ columnIndex ] || '';\r\n\t\t\t\t\tdata.exact = c.sortLocaleCompare ? ts.replaceAccents( result ) : result; // issue #405\r\n\t\t\t\t\tdata.iExact = !tsfRegex.type.test( typeof data.exact ) && wo.filter_ignoreCase ?\r\n\t\t\t\t\t\tdata.exact.toLowerCase() : data.exact;\r\n\t\t\t\t\tdata.isMatch = tsf.matchType( c, columnIndex );\r\n\r\n\t\t\t\t\tresult = showRow; // if showRow is true, show that row\r\n\r\n\t\t\t\t\t// in case select filter option has a different value vs text 'a - z|A through Z'\r\n\t\t\t\t\tffxn = wo.filter_columnFilters ?\r\n\t\t\t\t\t\tc.$filters.add( wo.filter_$externalFilters )\r\n\t\t\t\t\t\t\t.filter( '[data-column=\"' + columnIndex + '\"]' )\r\n\t\t\t\t\t\t\t.find( 'select option:selected' )\r\n\t\t\t\t\t\t\t.attr( 'data-function-name' ) || '' : '';\r\n\t\t\t\t\t// replace accents - see #357\r\n\t\t\t\t\tif ( c.sortLocaleCompare ) {\r\n\t\t\t\t\t\tdata.filter = ts.replaceAccents( data.filter );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// replace column specific default filters - see #1088\r\n\t\t\t\t\tif ( wo.filter_defaultFilter && tsfRegex.iQuery.test( vars.defaultColFilter[ columnIndex ] ) ) {\r\n\t\t\t\t\t\tdata.filter = tsf.defaultFilter( data.filter, vars.defaultColFilter[ columnIndex ] );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// data.iFilter = case insensitive ( if wo.filter_ignoreCase is true ),\r\n\t\t\t\t\t// data.filter = case sensitive\r\n\t\t\t\t\tdata.iFilter = wo.filter_ignoreCase ? ( data.filter || '' ).toLowerCase() : data.filter;\r\n\t\t\t\t\tfxn = vars.functions[ columnIndex ];\r\n\t\t\t\t\tfilterMatched = null;\r\n\t\t\t\t\tif ( fxn ) {\r\n\t\t\t\t\t\tif ( typeof fxn === 'function' ) {\r\n\t\t\t\t\t\t\t// filter callback( exact cell content, parser normalized content,\r\n\t\t\t\t\t\t\t// filter input value, column index, jQuery row object )\r\n\t\t\t\t\t\t\tfilterMatched = fxn( data.exact, data.cache, data.filter, columnIndex, data.$row, c, data );\r\n\t\t\t\t\t\t} else if ( typeof fxn[ ffxn || data.filter ] === 'function' ) {\r\n\t\t\t\t\t\t\t// selector option function\r\n\t\t\t\t\t\t\ttxt = ffxn || data.filter;\r\n\t\t\t\t\t\t\tfilterMatched =\r\n\t\t\t\t\t\t\t\tfxn[ txt ]( data.exact, data.cache, data.filter, columnIndex, data.$row, c, data );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( filterMatched === null ) {\r\n\t\t\t\t\t\t// cycle through the different filters\r\n\t\t\t\t\t\t// filters return a boolean or null if nothing matches\r\n\t\t\t\t\t\tfilterMatched = tsf.processTypes( c, data, vars );\r\n\t\t\t\t\t\t// select with exact match; ignore \"and\" or \"or\" within the text; fixes #1486\r\n\t\t\t\t\t\ttxt = fxn === true && (data.matchedOn === 'and' || data.matchedOn === 'or');\r\n\t\t\t\t\t\tif ( filterMatched !== null && !txt) {\r\n\t\t\t\t\t\t\tresult = filterMatched;\r\n\t\t\t\t\t\t// Look for match, and add child row data for matching\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// check fxn (filter-select in header) after filter types are checked\r\n\t\t\t\t\t\t\t// without this, the filter + jQuery UI selectmenu demo was breaking\r\n\t\t\t\t\t\t\tif ( fxn === true ) {\r\n\t\t\t\t\t\t\t\t// default selector uses exact match unless 'filter-match' class is found\r\n\t\t\t\t\t\t\t\tresult = data.isMatch ?\r\n\t\t\t\t\t\t\t\t\t// data.iExact may be a number\r\n\t\t\t\t\t\t\t\t\t( '' + data.iExact ).search( data.iFilter ) >= 0 :\r\n\t\t\t\t\t\t\t\t\tdata.filter === data.exact;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\ttxt = ( data.iExact + data.childRowText ).indexOf( tsf.parseFilter( c, data.iFilter, data ) );\r\n\t\t\t\t\t\t\t\tresult = ( ( !wo.filter_startsWith && txt >= 0 ) || ( wo.filter_startsWith && txt === 0 ) );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tresult = filterMatched;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tshowRow = ( result ) ? showRow : false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn showRow;\r\n\t\t},\r\n\t\tfindRows: function( table, filters, currentFilters ) {\r\n\t\t\tif (\r\n\t\t\t\ttsf.equalFilters(table.config, table.config.lastSearch, currentFilters) ||\r\n\t\t\t\t!table.config.widgetOptions.filter_initialized\r\n\t\t\t) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar len, norm_rows, rowData, $rows, $row, rowIndex, tbodyIndex, $tbody, columnIndex,\r\n\t\t\t\tisChild, childRow, lastSearch, showRow, showParent, time, val, indx,\r\n\t\t\t\tnotFiltered, searchFiltered, query, injected, res, id, txt,\r\n\t\t\t\tstoredFilters = $.extend( [], filters ),\r\n\t\t\t\tc = table.config,\r\n\t\t\t\two = c.widgetOptions,\r\n\t\t\t\tdebug = ts.debug(c, 'filter'),\r\n\t\t\t\t// data object passed to filters; anyMatch is a flag for the filters\r\n\t\t\t\tdata = {\r\n\t\t\t\t\tanyMatch: false,\r\n\t\t\t\t\tfilters: filters,\r\n\t\t\t\t\t// regex filter type cache\r\n\t\t\t\t\tfilter_regexCache : []\r\n\t\t\t\t},\r\n\t\t\t\tvars = {\r\n\t\t\t\t\t// anyMatch really screws up with these types of filters\r\n\t\t\t\t\tnoAnyMatch: [ 'range', 'operators' ],\r\n\t\t\t\t\t// cache filter variables that use ts.getColumnData in the main loop\r\n\t\t\t\t\tfunctions : [],\r\n\t\t\t\t\texcludeFilter : [],\r\n\t\t\t\t\tdefaultColFilter : [],\r\n\t\t\t\t\tdefaultAnyFilter : ts.getColumnData( table, wo.filter_defaultFilter, c.columns, true ) || ''\r\n\t\t\t\t};\r\n\t\t\t// parse columns after formatter, in case the class is added at that point\r\n\t\t\tdata.parsed = [];\r\n\t\t\tfor ( columnIndex = 0; columnIndex < c.columns; columnIndex++ ) {\r\n\t\t\t\tdata.parsed[ columnIndex ] = wo.filter_useParsedData ||\r\n\t\t\t\t\t// parser has a \"parsed\" parameter\r\n\t\t\t\t\t( c.parsers && c.parsers[ columnIndex ] && c.parsers[ columnIndex ].parsed ||\r\n\t\t\t\t\t// getData may not return 'parsed' if other 'filter-' class names exist\r\n\t\t\t\t\t// ( e.g. <th class=\"filter-select filter-parsed\"> )\r\n\t\t\t\t\tts.getData && ts.getData( c.$headerIndexed[ columnIndex ],\r\n\t\t\t\t\t\tts.getColumnData( table, c.headers, columnIndex ), 'filter' ) === 'parsed' ||\r\n\t\t\t\t\tc.$headerIndexed[ columnIndex ].hasClass( 'filter-parsed' ) );\r\n\r\n\t\t\t\tvars.functions[ columnIndex ] =\r\n\t\t\t\t\tts.getColumnData( table, wo.filter_functions, columnIndex ) ||\r\n\t\t\t\t\tc.$headerIndexed[ columnIndex ].hasClass( 'filter-select' );\r\n\t\t\t\tvars.defaultColFilter[ columnIndex ] =\r\n\t\t\t\t\tts.getColumnData( table, wo.filter_defaultFilter, columnIndex ) || '';\r\n\t\t\t\tvars.excludeFilter[ columnIndex ] =\r\n\t\t\t\t\t( ts.getColumnData( table, wo.filter_excludeFilter, columnIndex, true ) || '' ).split( /\\s+/ );\r\n\t\t\t}\r\n\r\n\t\t\tif ( debug ) {\r\n\t\t\t\tconsole.log( 'Filter >> Starting filter widget search', filters );\r\n\t\t\t\ttime = new Date();\r\n\t\t\t}\r\n\t\t\t// filtered rows count\r\n\t\t\tc.filteredRows = 0;\r\n\t\t\tc.totalRows = 0;\r\n\t\t\tcurrentFilters = ( storedFilters || [] );\r\n\r\n\t\t\tfor ( tbodyIndex = 0; tbodyIndex < c.$tbodies.length; tbodyIndex++ ) {\r\n\t\t\t\t$tbody = ts.processTbody( table, c.$tbodies.eq( tbodyIndex ), true );\r\n\t\t\t\t// skip child rows & widget added ( removable ) rows - fixes #448 thanks to @hempel!\r\n\t\t\t\t// $rows = $tbody.children( 'tr' ).not( c.selectorRemove );\r\n\t\t\t\tcolumnIndex = c.columns;\r\n\t\t\t\t// convert stored rows into a jQuery object\r\n\t\t\t\tnorm_rows = c.cache[ tbodyIndex ].normalized;\r\n\t\t\t\t$rows = $( $.map( norm_rows, function( el ) {\r\n\t\t\t\t\treturn el[ columnIndex ].$row.get();\r\n\t\t\t\t}) );\r\n\r\n\t\t\t\tif ( currentFilters.join('') === '' || wo.filter_serversideFiltering ) {\r\n\t\t\t\t\t$rows\r\n\t\t\t\t\t\t.removeClass( wo.filter_filteredRow )\r\n\t\t\t\t\t\t.not( '.' + c.cssChildRow )\r\n\t\t\t\t\t\t.css( 'display', '' );\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// filter out child rows\r\n\t\t\t\t\t$rows = $rows.not( '.' + c.cssChildRow );\r\n\t\t\t\t\tlen = $rows.length;\r\n\r\n\t\t\t\t\tif ( ( wo.filter_$anyMatch && wo.filter_$anyMatch.length ) ||\r\n\t\t\t\t\t\ttypeof filters[c.columns] !== 'undefined' ) {\r\n\t\t\t\t\t\tdata.anyMatchFlag = true;\r\n\t\t\t\t\t\tdata.anyMatchFilter = '' + (\r\n\t\t\t\t\t\t\tfilters[ c.columns ] ||\r\n\t\t\t\t\t\t\two.filter_$anyMatch && tsf.getLatestSearch( wo.filter_$anyMatch ).val() ||\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tif ( wo.filter_columnAnyMatch ) {\r\n\t\t\t\t\t\t\t// specific columns search\r\n\t\t\t\t\t\t\tquery = data.anyMatchFilter.split( tsfRegex.andSplit );\r\n\t\t\t\t\t\t\tinjected = false;\r\n\t\t\t\t\t\t\tfor ( indx = 0; indx < query.length; indx++ ) {\r\n\t\t\t\t\t\t\t\tres = query[ indx ].split( ':' );\r\n\t\t\t\t\t\t\t\tif ( res.length > 1 ) {\r\n\t\t\t\t\t\t\t\t\t// make the column a one-based index ( non-developers start counting from one :P )\r\n\t\t\t\t\t\t\t\t\tif ( isNaN( res[0] ) ) {\r\n\t\t\t\t\t\t\t\t\t\t$.each( c.headerContent, function( i, txt ) {\r\n\t\t\t\t\t\t\t\t\t\t\t// multiple matches are possible\r\n\t\t\t\t\t\t\t\t\t\t\tif ( txt.toLowerCase().indexOf( res[0] ) > -1 ) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tid = i;\r\n\t\t\t\t\t\t\t\t\t\t\t\tfilters[ id ] = res[1];\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\tid = parseInt( res[0], 10 ) - 1;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tif ( id >= 0 && id < c.columns ) { // if id is an integer\r\n\t\t\t\t\t\t\t\t\t\tfilters[ id ] = res[1];\r\n\t\t\t\t\t\t\t\t\t\tquery.splice( indx, 1 );\r\n\t\t\t\t\t\t\t\t\t\tindx--;\r\n\t\t\t\t\t\t\t\t\t\tinjected = true;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif ( injected ) {\r\n\t\t\t\t\t\t\t\tdata.anyMatchFilter = query.join( ' && ' );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// optimize searching only through already filtered rows - see #313\r\n\t\t\t\t\tsearchFiltered = wo.filter_searchFiltered;\r\n\t\t\t\t\tlastSearch = c.lastSearch || c.$table.data( 'lastSearch' ) || [];\r\n\t\t\t\t\tif ( searchFiltered ) {\r\n\t\t\t\t\t\t// cycle through all filters; include last ( columnIndex + 1 = match any column ). Fixes #669\r\n\t\t\t\t\t\tfor ( indx = 0; indx < columnIndex + 1; indx++ ) {\r\n\t\t\t\t\t\t\tval = filters[indx] || '';\r\n\t\t\t\t\t\t\t// break out of loop if we've already determined not to search filtered rows\r\n\t\t\t\t\t\t\tif ( !searchFiltered ) { indx = columnIndex; }\r\n\t\t\t\t\t\t\t// search already filtered rows if...\r\n\t\t\t\t\t\t\tsearchFiltered = searchFiltered && lastSearch.length &&\r\n\t\t\t\t\t\t\t\t// there are no changes from beginning of filter\r\n\t\t\t\t\t\t\t\tval.indexOf( lastSearch[indx] || '' ) === 0 &&\r\n\t\t\t\t\t\t\t\t// if there is NOT a logical 'or', or range ( 'to' or '-' ) in the string\r\n\t\t\t\t\t\t\t\t!tsfRegex.alreadyFiltered.test( val ) &&\r\n\t\t\t\t\t\t\t\t// if we are not doing exact matches, using '|' ( logical or ) or not '!'\r\n\t\t\t\t\t\t\t\t!tsfRegex.exactTest.test( val ) &&\r\n\t\t\t\t\t\t\t\t// don't search only filtered if the value is negative\r\n\t\t\t\t\t\t\t\t// ( '> -10' => '> -100' will ignore hidden rows )\r\n\t\t\t\t\t\t\t\t!( tsfRegex.isNeg1.test( val ) || tsfRegex.isNeg2.test( val ) ) &&\r\n\t\t\t\t\t\t\t\t// if filtering using a select without a 'filter-match' class ( exact match ) - fixes #593\r\n\t\t\t\t\t\t\t\t!( val !== '' && c.$filters && c.$filters.filter( '[data-column=\"' + indx + '\"]' ).find( 'select' ).length &&\r\n\t\t\t\t\t\t\t\t\t!tsf.matchType( c, indx ) );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tnotFiltered = $rows.not( '.' + wo.filter_filteredRow ).length;\r\n\t\t\t\t\t// can't search when all rows are hidden - this happens when looking for exact matches\r\n\t\t\t\t\tif ( searchFiltered && notFiltered === 0 ) { searchFiltered = false; }\r\n\t\t\t\t\tif ( debug ) {\r\n\t\t\t\t\t\tconsole.log( 'Filter >> Searching through ' +\r\n\t\t\t\t\t\t\t( searchFiltered && notFiltered < len ? notFiltered : 'all' ) + ' rows' );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( data.anyMatchFlag ) {\r\n\t\t\t\t\t\tif ( c.sortLocaleCompare ) {\r\n\t\t\t\t\t\t\t// replace accents\r\n\t\t\t\t\t\t\tdata.anyMatchFilter = ts.replaceAccents( data.anyMatchFilter );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif ( wo.filter_defaultFilter && tsfRegex.iQuery.test( vars.defaultAnyFilter ) ) {\r\n\t\t\t\t\t\t\tdata.anyMatchFilter = tsf.defaultFilter( data.anyMatchFilter, vars.defaultAnyFilter );\r\n\t\t\t\t\t\t\t// clear search filtered flag because default filters are not saved to the last search\r\n\t\t\t\t\t\t\tsearchFiltered = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// make iAnyMatchFilter lowercase unless both filter widget & core ignoreCase options are true\r\n\t\t\t\t\t\t// when c.ignoreCase is true, the cache contains all lower case data\r\n\t\t\t\t\t\tdata.iAnyMatchFilter = !( wo.filter_ignoreCase && c.ignoreCase ) ?\r\n\t\t\t\t\t\t\tdata.anyMatchFilter :\r\n\t\t\t\t\t\t\tdata.anyMatchFilter.toLowerCase();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// loop through the rows\r\n\t\t\t\t\tfor ( rowIndex = 0; rowIndex < len; rowIndex++ ) {\r\n\r\n\t\t\t\t\t\ttxt = $rows[ rowIndex ].className;\r\n\t\t\t\t\t\t// the first row can never be a child row\r\n\t\t\t\t\t\tisChild = rowIndex && tsfRegex.child.test( txt );\r\n\t\t\t\t\t\t// skip child rows & already filtered rows\r\n\t\t\t\t\t\tif ( isChild || ( searchFiltered && tsfRegex.filtered.test( txt ) ) ) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tdata.$row = $rows.eq( rowIndex );\r\n\t\t\t\t\t\tdata.rowIndex = rowIndex;\r\n\t\t\t\t\t\tdata.cacheArray = norm_rows[ rowIndex ];\r\n\t\t\t\t\t\trowData = data.cacheArray[ c.columns ];\r\n\t\t\t\t\t\tdata.rawArray = rowData.raw;\r\n\t\t\t\t\t\tdata.childRowText = '';\r\n\r\n\t\t\t\t\t\tif ( !wo.filter_childByColumn ) {\r\n\t\t\t\t\t\t\ttxt = '';\r\n\t\t\t\t\t\t\t// child row cached text\r\n\t\t\t\t\t\t\tchildRow = rowData.child;\r\n\t\t\t\t\t\t\t// so, if 'table.config.widgetOptions.filter_childRows' is true and there is\r\n\t\t\t\t\t\t\t// a match anywhere in the child row, then it will make the row visible\r\n\t\t\t\t\t\t\t// checked here so the option can be changed dynamically\r\n\t\t\t\t\t\t\tfor ( indx = 0; indx < childRow.length; indx++ ) {\r\n\t\t\t\t\t\t\t\ttxt += ' ' + childRow[indx].join( ' ' ) || '';\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tdata.childRowText = wo.filter_childRows ?\r\n\t\t\t\t\t\t\t\t( wo.filter_ignoreCase ? txt.toLowerCase() : txt ) :\r\n\t\t\t\t\t\t\t\t'';\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tshowRow = false;\r\n\t\t\t\t\t\tshowParent = tsf.processRow( c, data, vars );\r\n\t\t\t\t\t\t$row = rowData.$row;\r\n\r\n\t\t\t\t\t\t// don't pass reference to val\r\n\t\t\t\t\t\tval = showParent ? true : false;\r\n\t\t\t\t\t\tchildRow = rowData.$row.filter( ':gt(0)' );\r\n\t\t\t\t\t\tif ( wo.filter_childRows && childRow.length ) {\r\n\t\t\t\t\t\t\tif ( wo.filter_childByColumn ) {\r\n\t\t\t\t\t\t\t\tif ( !wo.filter_childWithSibs ) {\r\n\t\t\t\t\t\t\t\t\t// hide all child rows\r\n\t\t\t\t\t\t\t\t\tchildRow.addClass( wo.filter_filteredRow );\r\n\t\t\t\t\t\t\t\t\t// if only showing resulting child row, only include parent\r\n\t\t\t\t\t\t\t\t\t$row = $row.eq( 0 );\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t// cycle through each child row\r\n\t\t\t\t\t\t\t\tfor ( indx = 0; indx < childRow.length; indx++ ) {\r\n\t\t\t\t\t\t\t\t\tdata.$row = childRow.eq( indx );\r\n\t\t\t\t\t\t\t\t\tdata.cacheArray = rowData.child[ indx ];\r\n\t\t\t\t\t\t\t\t\tdata.rawArray = data.cacheArray;\r\n\t\t\t\t\t\t\t\t\tval = tsf.processRow( c, data, vars );\r\n\t\t\t\t\t\t\t\t\t// use OR comparison on child rows\r\n\t\t\t\t\t\t\t\t\tshowRow = showRow || val;\r\n\t\t\t\t\t\t\t\t\tif ( !wo.filter_childWithSibs && val ) {\r\n\t\t\t\t\t\t\t\t\t\tchildRow.eq( indx ).removeClass( wo.filter_filteredRow );\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// keep parent row match even if no child matches... see #1020\r\n\t\t\t\t\t\t\tshowRow = showRow || showParent;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tshowRow = val;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t$row\r\n\t\t\t\t\t\t\t.toggleClass( wo.filter_filteredRow, !showRow )[0]\r\n\t\t\t\t\t\t\t.display = showRow ? '' : 'none';\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tc.filteredRows += $rows.not( '.' + wo.filter_filteredRow ).length;\r\n\t\t\t\tc.totalRows += $rows.length;\r\n\t\t\t\tts.processTbody( table, $tbody, false );\r\n\t\t\t}\r\n\t\t\t// lastCombinedFilter is no longer used internally\r\n\t\t\tc.lastCombinedFilter = storedFilters.join(''); // save last search\r\n\t\t\t// don't save 'filters' directly since it may have altered ( AnyMatch column searches )\r\n\t\t\tc.lastSearch = storedFilters;\r\n\t\t\tc.$table.data( 'lastSearch', storedFilters );\r\n\t\t\tif ( wo.filter_saveFilters && ts.storage ) {\r\n\t\t\t\tts.storage( table, 'tablesorter-filters', tsf.processFilters( storedFilters, true ) );\r\n\t\t\t}\r\n\t\t\tif ( debug ) {\r\n\t\t\t\tconsole.log( 'Filter >> Completed search' + ts.benchmark(time) );\r\n\t\t\t}\r\n\t\t\tif ( wo.filter_initialized ) {\r\n\t\t\t\tc.$table.triggerHandler( 'filterBeforeEnd', c );\r\n\t\t\t\tc.$table.triggerHandler( 'filterEnd', c );\r\n\t\t\t}\r\n\t\t\tsetTimeout( function() {\r\n\t\t\t\tts.applyWidget( c.table ); // make sure zebra widget is applied\r\n\t\t\t}, 0 );\r\n\t\t},\r\n\t\tgetOptionSource: function( table, column, onlyAvail ) {\r\n\t\t\ttable = $( table )[0];\r\n\t\t\tvar c = table.config,\r\n\t\t\t\two = c.widgetOptions,\r\n\t\t\t\tarry = false,\r\n\t\t\t\tsource = wo.filter_selectSource,\r\n\t\t\t\tlast = c.$table.data( 'lastSearch' ) || [],\r\n\t\t\t\tfxn = typeof source === 'function' ? true : ts.getColumnData( table, source, column );\r\n\r\n\t\t\tif ( onlyAvail && last[column] !== '' ) {\r\n\t\t\t\tonlyAvail = false;\r\n\t\t\t}\r\n\r\n\t\t\t// filter select source option\r\n\t\t\tif ( fxn === true ) {\r\n\t\t\t\t// OVERALL source\r\n\t\t\t\tarry = source( table, column, onlyAvail );\r\n\t\t\t} else if ( fxn instanceof $ || ( $.type( fxn ) === 'string' && fxn.indexOf( '</option>' ) >= 0 ) ) {\r\n\t\t\t\t// selectSource is a jQuery object or string of options\r\n\t\t\t\treturn fxn;\r\n\t\t\t} else if ( $.isArray( fxn ) ) {\r\n\t\t\t\tarry = fxn;\r\n\t\t\t} else if ( $.type( source ) === 'object' && fxn ) {\r\n\t\t\t\t// custom select source function for a SPECIFIC COLUMN\r\n\t\t\t\tarry = fxn( table, column, onlyAvail );\r\n\t\t\t\t// abort - updating the selects from an external method\r\n\t\t\t\tif (arry === null) {\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif ( arry === false ) {\r\n\t\t\t\t// fall back to original method\r\n\t\t\t\tarry = tsf.getOptions( table, column, onlyAvail );\r\n\t\t\t}\r\n\r\n\t\t\treturn tsf.processOptions( table, column, arry );\r\n\r\n\t\t},\r\n\t\tprocessOptions: function( table, column, arry ) {\r\n\t\t\tif ( !$.isArray( arry ) ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\ttable = $( table )[0];\r\n\t\t\tvar cts, txt, indx, len, parsedTxt, str,\r\n\t\t\t\tc = table.config,\r\n\t\t\t\tvalidColumn = typeof column !== 'undefined' && column !== null && column >= 0 && column < c.columns,\r\n\t\t\t\tdirection = validColumn ? c.$headerIndexed[ column ].hasClass( 'filter-select-sort-desc' ) : false,\r\n\t\t\t\tparsed = [];\r\n\t\t\t// get unique elements and sort the list\r\n\t\t\t// if $.tablesorter.sortText exists ( not in the original tablesorter ),\r\n\t\t\t// then natural sort the list otherwise use a basic sort\r\n\t\t\tarry = $.grep( arry, function( value, indx ) {\r\n\t\t\t\tif ( value.text ) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\treturn $.inArray( value, arry ) === indx;\r\n\t\t\t});\r\n\t\t\tif ( validColumn && c.$headerIndexed[ column ].hasClass( 'filter-select-nosort' ) ) {\r\n\t\t\t\t// unsorted select options\r\n\t\t\t\treturn arry;\r\n\t\t\t} else {\r\n\t\t\t\tlen = arry.length;\r\n\t\t\t\t// parse select option values\r\n\t\t\t\tfor ( indx = 0; indx < len; indx++ ) {\r\n\t\t\t\t\ttxt = arry[ indx ];\r\n\t\t\t\t\t// check for object\r\n\t\t\t\t\tstr = txt.text ? txt.text : txt;\r\n\t\t\t\t\t// sortNatural breaks if you don't pass it strings\r\n\t\t\t\t\tparsedTxt = ( validColumn && c.parsers && c.parsers.length &&\r\n\t\t\t\t\t\tc.parsers[ column ].format( str, table, [], column ) || str ).toString();\r\n\t\t\t\t\tparsedTxt = c.widgetOptions.filter_ignoreCase ? parsedTxt.toLowerCase() : parsedTxt;\r\n\t\t\t\t\t// parse array data using set column parser; this DOES NOT pass the original\r\n\t\t\t\t\t// table cell to the parser format function\r\n\t\t\t\t\tif ( txt.text ) {\r\n\t\t\t\t\t\ttxt.parsed = parsedTxt;\r\n\t\t\t\t\t\tparsed[ parsed.length ] = txt;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tparsed[ parsed.length ] = {\r\n\t\t\t\t\t\t\ttext : txt,\r\n\t\t\t\t\t\t\t// check parser length - fixes #934\r\n\t\t\t\t\t\t\tparsed : parsedTxt\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t// sort parsed select options\r\n\t\t\t\tcts = c.textSorter || '';\r\n\t\t\t\tparsed.sort( function( a, b ) {\r\n\t\t\t\t\tvar x = direction ? b.parsed : a.parsed,\r\n\t\t\t\t\t\ty = direction ? a.parsed : b.parsed;\r\n\t\t\t\t\tif ( validColumn && typeof cts === 'function' ) {\r\n\t\t\t\t\t\t// custom OVERALL text sorter\r\n\t\t\t\t\t\treturn cts( x, y, true, column, table );\r\n\t\t\t\t\t} else if ( validColumn && typeof cts === 'object' && cts.hasOwnProperty( column ) ) {\r\n\t\t\t\t\t\t// custom text sorter for a SPECIFIC COLUMN\r\n\t\t\t\t\t\treturn cts[column]( x, y, true, column, table );\r\n\t\t\t\t\t} else if ( ts.sortNatural ) {\r\n\t\t\t\t\t\t// fall back to natural sort\r\n\t\t\t\t\t\treturn ts.sortNatural( x, y );\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// using an older version! do a basic sort\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t});\r\n\t\t\t\t// rebuild arry from sorted parsed data\r\n\t\t\t\tarry = [];\r\n\t\t\t\tlen = parsed.length;\r\n\t\t\t\tfor ( indx = 0; indx < len; indx++ ) {\r\n\t\t\t\t\tarry[ arry.length ] = parsed[indx];\r\n\t\t\t\t}\r\n\t\t\t\treturn arry;\r\n\t\t\t}\r\n\t\t},\r\n\t\tgetOptions: function( table, column, onlyAvail ) {\r\n\t\t\ttable = $( table )[0];\r\n\t\t\tvar rowIndex, tbodyIndex, len, row, cache, indx, child, childLen,\r\n\t\t\t\tc = table.config,\r\n\t\t\t\two = c.widgetOptions,\r\n\t\t\t\tarry = [];\r\n\t\t\tfor ( tbodyIndex = 0; tbodyIndex < c.$tbodies.length; tbodyIndex++ ) {\r\n\t\t\t\tcache = c.cache[tbodyIndex];\r\n\t\t\t\tlen = c.cache[tbodyIndex].normalized.length;\r\n\t\t\t\t// loop through the rows\r\n\t\t\t\tfor ( rowIndex = 0; rowIndex < len; rowIndex++ ) {\r\n\t\t\t\t\t// get cached row from cache.row ( old ) or row data object\r\n\t\t\t\t\t// ( new; last item in normalized array )\r\n\t\t\t\t\trow = cache.row ?\r\n\t\t\t\t\t\tcache.row[ rowIndex ] :\r\n\t\t\t\t\t\tcache.normalized[ rowIndex ][ c.columns ].$row[0];\r\n\t\t\t\t\t// check if has class filtered\r\n\t\t\t\t\tif ( onlyAvail && row.className.match( wo.filter_filteredRow ) ) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// get non-normalized cell content\r\n\t\t\t\t\tif ( wo.filter_useParsedData ||\r\n\t\t\t\t\t\tc.parsers[column].parsed ||\r\n\t\t\t\t\t\tc.$headerIndexed[column].hasClass( 'filter-parsed' ) ) {\r\n\t\t\t\t\t\tarry[ arry.length ] = '' + cache.normalized[ rowIndex ][ column ];\r\n\t\t\t\t\t\t// child row parsed data\r\n\t\t\t\t\t\tif ( wo.filter_childRows && wo.filter_childByColumn ) {\r\n\t\t\t\t\t\t\tchildLen = cache.normalized[ rowIndex ][ c.columns ].$row.length - 1;\r\n\t\t\t\t\t\t\tfor ( indx = 0; indx < childLen; indx++ ) {\r\n\t\t\t\t\t\t\t\tarry[ arry.length ] = '' + cache.normalized[ rowIndex ][ c.columns ].child[ indx ][ column ];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// get raw cached data instead of content directly from the cells\r\n\t\t\t\t\t\tarry[ arry.length ] = cache.normalized[ rowIndex ][ c.columns ].raw[ column ];\r\n\t\t\t\t\t\t// child row unparsed data\r\n\t\t\t\t\t\tif ( wo.filter_childRows && wo.filter_childByColumn ) {\r\n\t\t\t\t\t\t\tchildLen = cache.normalized[ rowIndex ][ c.columns ].$row.length;\r\n\t\t\t\t\t\t\tfor ( indx = 1; indx < childLen; indx++ ) {\r\n\t\t\t\t\t\t\t\tchild = cache.normalized[ rowIndex ][ c.columns ].$row.eq( indx ).children().eq( column );\r\n\t\t\t\t\t\t\t\tarry[ arry.length ] = '' + ts.getElementText( c, child, column );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn arry;\r\n\t\t},\r\n\t\tbuildSelect: function( table, column, arry, updating, onlyAvail ) {\r\n\t\t\ttable = $( table )[0];\r\n\t\t\tcolumn = parseInt( column, 10 );\r\n\t\t\tif ( !table.config.cache || $.isEmptyObject( table.config.cache ) ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar indx, val, txt, t, $filters, $filter, option,\r\n\t\t\t\tc = table.config,\r\n\t\t\t\two = c.widgetOptions,\r\n\t\t\t\tnode = c.$headerIndexed[ column ],\r\n\t\t\t\t// t.data( 'placeholder' ) won't work in jQuery older than 1.4.3\r\n\t\t\t\toptions = '<option value=\"\">' +\r\n\t\t\t\t\t( node.data( 'placeholder' ) ||\r\n\t\t\t\t\t\tnode.attr( 'data-placeholder' ) ||\r\n\t\t\t\t\t\two.filter_placeholder.select || ''\r\n\t\t\t\t\t) + '</option>',\r\n\t\t\t\t// Get curent filter value\r\n\t\t\t\tcurrentValue = c.$table\r\n\t\t\t\t\t.find( 'thead' )\r\n\t\t\t\t\t.find( 'select.' + tscss.filter + '[data-column=\"' + column + '\"]' )\r\n\t\t\t\t\t.val();\r\n\r\n\t\t\t// nothing included in arry ( external source ), so get the options from\r\n\t\t\t// filter_selectSource or column data\r\n\t\t\tif ( typeof arry === 'undefined' || arry === '' ) {\r\n\t\t\t\tarry = tsf.getOptionSource( table, column, onlyAvail );\r\n\t\t\t\t// abort, selects are updated by an external method\r\n\t\t\t\tif (arry === null) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif ( $.isArray( arry ) ) {\r\n\t\t\t\t// build option list\r\n\t\t\t\tfor ( indx = 0; indx < arry.length; indx++ ) {\r\n\t\t\t\t\toption = arry[ indx ];\r\n\t\t\t\t\tif ( option.text ) {\r\n\t\t\t\t\t\t// OBJECT!! add data-function-name in case the value is set in filter_functions\r\n\t\t\t\t\t\toption['data-function-name'] = typeof option.value === 'undefined' ? option.text : option.value;\r\n\r\n\t\t\t\t\t\t// support jQuery < v1.8, otherwise the below code could be shortened to\r\n\t\t\t\t\t\t// options += $( '<option>', option )[ 0 ].outerHTML;\r\n\t\t\t\t\t\toptions += '<option';\r\n\t\t\t\t\t\tfor ( val in option ) {\r\n\t\t\t\t\t\t\tif ( option.hasOwnProperty( val ) && val !== 'text' ) {\r\n\t\t\t\t\t\t\t\toptions += ' ' + val + '=\"' + option[ val ].replace( tsfRegex.quote, '"' ) + '\"';\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif ( !option.value ) {\r\n\t\t\t\t\t\t\toptions += ' value=\"' + option.text.replace( tsfRegex.quote, '"' ) + '\"';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\toptions += '>' + option.text.replace( tsfRegex.quote, '"' ) + '</option>';\r\n\t\t\t\t\t\t// above code is needed in jQuery < v1.8\r\n\r\n\t\t\t\t\t\t// make sure we don't turn an object into a string (objects without a \"text\" property)\r\n\t\t\t\t\t} else if ( '' + option !== '[object Object]' ) {\r\n\t\t\t\t\t\ttxt = option = ( '' + option ).replace( tsfRegex.quote, '"' );\r\n\t\t\t\t\t\tval = txt;\r\n\t\t\t\t\t\t// allow including a symbol in the selectSource array\r\n\t\t\t\t\t\t// 'a-z|A through Z' so that 'a-z' becomes the option value\r\n\t\t\t\t\t\t// and 'A through Z' becomes the option text\r\n\t\t\t\t\t\tif ( txt.indexOf( wo.filter_selectSourceSeparator ) >= 0 ) {\r\n\t\t\t\t\t\t\tt = txt.split( wo.filter_selectSourceSeparator );\r\n\t\t\t\t\t\t\tval = t[0];\r\n\t\t\t\t\t\t\ttxt = t[1];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// replace quotes - fixes #242 & ignore empty strings\r\n\t\t\t\t\t\t// see http://stackoverflow.com/q/14990971/145346\r\n\t\t\t\t\t\toptions += option !== '' ?\r\n\t\t\t\t\t\t\t'<option ' +\r\n\t\t\t\t\t\t\t\t( val === txt ? '' : 'data-function-name=\"' + option + '\" ' ) +\r\n\t\t\t\t\t\t\t\t'value=\"' + val + '\">' + txt +\r\n\t\t\t\t\t\t\t'</option>' : '';\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t// clear arry so it doesn't get appended twice\r\n\t\t\t\tarry = [];\r\n\t\t\t}\r\n\r\n\t\t\t// update all selects in the same column ( clone thead in sticky headers &\r\n\t\t\t// any external selects ) - fixes 473\r\n\t\t\t$filters = ( c.$filters ? c.$filters : c.$table.children( 'thead' ) )\r\n\t\t\t\t.find( '.' + tscss.filter );\r\n\t\t\tif ( wo.filter_$externalFilters ) {\r\n\t\t\t\t$filters = $filters && $filters.length ?\r\n\t\t\t\t\t$filters.add( wo.filter_$externalFilters ) :\r\n\t\t\t\t\two.filter_$externalFilters;\r\n\t\t\t}\r\n\t\t\t$filter = $filters.filter( 'select[data-column=\"' + column + '\"]' );\r\n\r\n\t\t\t// make sure there is a select there!\r\n\t\t\tif ( $filter.length ) {\r\n\t\t\t\t$filter[ updating ? 'html' : 'append' ]( options );\r\n\t\t\t\tif ( !$.isArray( arry ) ) {\r\n\t\t\t\t\t// append options if arry is provided externally as a string or jQuery object\r\n\t\t\t\t\t// options ( default value ) was already added\r\n\t\t\t\t\t$filter.append( arry ).val( currentValue );\r\n\t\t\t\t}\r\n\t\t\t\t$filter.val( currentValue );\r\n\t\t\t}\r\n\t\t},\r\n\t\tbuildDefault: function( table, updating ) {\r\n\t\t\tvar columnIndex, $header, noSelect,\r\n\t\t\t\tc = table.config,\r\n\t\t\t\two = c.widgetOptions,\r\n\t\t\t\tcolumns = c.columns;\r\n\t\t\t// build default select dropdown\r\n\t\t\tfor ( columnIndex = 0; columnIndex < columns; columnIndex++ ) {\r\n\t\t\t\t$header = c.$headerIndexed[columnIndex];\r\n\t\t\t\tnoSelect = !( $header.hasClass( 'filter-false' ) || $header.hasClass( 'parser-false' ) );\r\n\t\t\t\t// look for the filter-select class; build/update it if found\r\n\t\t\t\tif ( ( $header.hasClass( 'filter-select' ) ||\r\n\t\t\t\t\tts.getColumnData( table, wo.filter_functions, columnIndex ) === true ) && noSelect ) {\r\n\t\t\t\t\ttsf.buildSelect( table, columnIndex, '', updating, $header.hasClass( wo.filter_onlyAvail ) );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// filter regex variable\r\n\ttsfRegex = tsf.regex;\r\n\r\n\tts.getFilters = function( table, getRaw, setFilters, skipFirst ) {\r\n\t\tvar i, $filters, $column, cols,\r\n\t\t\tfilters = [],\r\n\t\t\tc = table ? $( table )[0].config : '',\r\n\t\t\two = c ? c.widgetOptions : '';\r\n\t\tif ( ( getRaw !== true && wo && !wo.filter_columnFilters ) ||\r\n\t\t\t// setFilters called, but last search is exactly the same as the current\r\n\t\t\t// fixes issue #733 & #903 where calling update causes the input values to reset\r\n\t\t\t( $.isArray(setFilters) && tsf.equalFilters(c, setFilters, c.lastSearch) )\r\n\t\t) {\r\n\t\t\treturn $( table ).data( 'lastSearch' ) || [];\r\n\t\t}\r\n\t\tif ( c ) {\r\n\t\t\tif ( c.$filters ) {\r\n\t\t\t\t$filters = c.$filters.find( '.' + tscss.filter );\r\n\t\t\t}\r\n\t\t\tif ( wo.filter_$externalFilters ) {\r\n\t\t\t\t$filters = $filters && $filters.length ?\r\n\t\t\t\t\t$filters.add( wo.filter_$externalFilters ) :\r\n\t\t\t\t\two.filter_$externalFilters;\r\n\t\t\t}\r\n\t\t\tif ( $filters && $filters.length ) {\r\n\t\t\t\tfilters = setFilters || [];\r\n\t\t\t\tfor ( i = 0; i < c.columns + 1; i++ ) {\r\n\t\t\t\t\tcols = ( i === c.columns ?\r\n\t\t\t\t\t\t// 'all' columns can now include a range or set of columms ( data-column='0-2,4,6-7' )\r\n\t\t\t\t\t\two.filter_anyColumnSelector + ',' + wo.filter_multipleColumnSelector :\r\n\t\t\t\t\t\t'[data-column=\"' + i + '\"]' );\r\n\t\t\t\t\t$column = $filters.filter( cols );\r\n\t\t\t\t\tif ( $column.length ) {\r\n\t\t\t\t\t\t// move the latest search to the first slot in the array\r\n\t\t\t\t\t\t$column = tsf.getLatestSearch( $column );\r\n\t\t\t\t\t\tif ( $.isArray( setFilters ) ) {\r\n\t\t\t\t\t\t\t// skip first ( latest input ) to maintain cursor position while typing\r\n\t\t\t\t\t\t\tif ( skipFirst && $column.length > 1 ) {\r\n\t\t\t\t\t\t\t\t$column = $column.slice( 1 );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif ( i === c.columns ) {\r\n\t\t\t\t\t\t\t\t// prevent data-column='all' from filling data-column='0,1' ( etc )\r\n\t\t\t\t\t\t\t\tcols = $column.filter( wo.filter_anyColumnSelector );\r\n\t\t\t\t\t\t\t\t$column = cols.length ? cols : $column;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t$column\r\n\t\t\t\t\t\t\t\t.val( setFilters[ i ] )\r\n\t\t\t\t\t\t\t\t// must include a namespace here; but not c.namespace + 'filter'?\r\n\t\t\t\t\t\t\t\t.trigger( 'change' + c.namespace );\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tfilters[i] = $column.val() || '';\r\n\t\t\t\t\t\t\t// don't change the first... it will move the cursor\r\n\t\t\t\t\t\t\tif ( i === c.columns ) {\r\n\t\t\t\t\t\t\t\t// don't update range columns from 'all' setting\r\n\t\t\t\t\t\t\t\t$column\r\n\t\t\t\t\t\t\t\t\t.slice( 1 )\r\n\t\t\t\t\t\t\t\t\t.filter( '[data-column*=\"' + $column.attr( 'data-column' ) + '\"]' )\r\n\t\t\t\t\t\t\t\t\t.val( filters[ i ] );\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t$column\r\n\t\t\t\t\t\t\t\t\t.slice( 1 )\r\n\t\t\t\t\t\t\t\t\t.val( filters[ i ] );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// save any match input dynamically\r\n\t\t\t\t\t\tif ( i === c.columns && $column.length ) {\r\n\t\t\t\t\t\t\two.filter_$anyMatch = $column;\r\n\t\t\t\t\t\t}\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\treturn filters;\r\n\t};\r\n\r\n\tts.setFilters = function( table, filter, apply, skipFirst ) {\r\n\t\tvar c = table ? $( table )[0].config : '',\r\n\t\t\tvalid = ts.getFilters( table, true, filter, skipFirst );\r\n\t\t// default apply to \"true\"\r\n\t\tif ( typeof apply === 'undefined' ) {\r\n\t\t\tapply = true;\r\n\t\t}\r\n\t\tif ( c && apply ) {\r\n\t\t\t// ensure new set filters are applied, even if the search is the same\r\n\t\t\tc.lastCombinedFilter = null;\r\n\t\t\tc.lastSearch = [];\r\n\t\t\ttsf.searching( c.table, filter, skipFirst );\r\n\t\t\tc.$table.triggerHandler( 'filterFomatterUpdate' );\r\n\t\t}\r\n\t\treturn valid.length !== 0;\r\n\t};\r\n\r\n})( jQuery );\r\n\r\n/*! Widget: stickyHeaders - updated 9/27/2017 (v2.29.0) *//*\n * Requires tablesorter v2.8+ and jQuery 1.4.3+\n * by Rob Garrison\n */\n;(function ($, window) {\n\t'use strict';\n\tvar ts = $.tablesorter || {};\n\n\t$.extend(ts.css, {\n\t\tsticky : 'tablesorter-stickyHeader', // stickyHeader\n\t\tstickyVis : 'tablesorter-sticky-visible',\n\t\tstickyHide: 'tablesorter-sticky-hidden',\n\t\tstickyWrap: 'tablesorter-sticky-wrapper'\n\t});\n\n\t// Add a resize event to table headers\n\tts.addHeaderResizeEvent = function(table, disable, settings) {\n\t\ttable = $(table)[0]; // make sure we're using a dom element\n\t\tif ( !table.config ) { return; }\n\t\tvar defaults = {\n\t\t\t\ttimer : 250\n\t\t\t},\n\t\t\toptions = $.extend({}, defaults, settings),\n\t\t\tc = table.config,\n\t\t\two = c.widgetOptions,\n\t\t\tcheckSizes = function( triggerEvent ) {\n\t\t\t\tvar index, headers, $header, sizes, width, height,\n\t\t\t\t\tlen = c.$headers.length;\n\t\t\t\two.resize_flag = true;\n\t\t\t\theaders = [];\n\t\t\t\tfor ( index = 0; index < len; index++ ) {\n\t\t\t\t\t$header = c.$headers.eq( index );\n\t\t\t\t\tsizes = $header.data( 'savedSizes' ) || [ 0, 0 ]; // fixes #394\n\t\t\t\t\twidth = $header[0].offsetWidth;\n\t\t\t\t\theight = $header[0].offsetHeight;\n\t\t\t\t\tif ( width !== sizes[0] || height !== sizes[1] ) {\n\t\t\t\t\t\t$header.data( 'savedSizes', [ width, height ] );\n\t\t\t\t\t\theaders.push( $header[0] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif ( headers.length && triggerEvent !== false ) {\n\t\t\t\t\tc.$table.triggerHandler( 'resize', [ headers ] );\n\t\t\t\t}\n\t\t\t\two.resize_flag = false;\n\t\t\t};\n\t\tclearInterval(wo.resize_timer);\n\t\tif (disable) {\n\t\t\two.resize_flag = false;\n\t\t\treturn false;\n\t\t}\n\t\tcheckSizes( false );\n\t\two.resize_timer = setInterval(function() {\n\t\t\tif (wo.resize_flag) { return; }\n\t\t\tcheckSizes();\n\t\t}, options.timer);\n\t};\n\n\tfunction getStickyOffset(c, wo) {\n\t\tvar $el = isNaN(wo.stickyHeaders_offset) ? $(wo.stickyHeaders_offset) : [];\n\t\treturn $el.length ?\n\t\t\t$el.height() || 0 :\n\t\t\tparseInt(wo.stickyHeaders_offset, 10) || 0;\n\t}\n\n\t// Sticky headers based on this awesome article:\n\t// http://css-tricks.com/13465-persistent-headers/\n\t// and https://github.com/jmosbech/StickyTableHeaders by Jonas Mosbech\n\t// **************************\n\tts.addWidget({\n\t\tid: 'stickyHeaders',\n\t\tpriority: 54, // sticky widget must be initialized after the filter & before pager widget!\n\t\toptions: {\n\t\t\tstickyHeaders : '', // extra class name added to the sticky header row\n\t\t\tstickyHeaders_appendTo : null, // jQuery selector or object to phycially attach the sticky headers\n\t\t\tstickyHeaders_attachTo : null, // jQuery selector or object to attach scroll listener to (overridden by xScroll & yScroll settings)\n\t\t\tstickyHeaders_xScroll : null, // jQuery selector or object to monitor horizontal scroll position (defaults: xScroll > attachTo > window)\n\t\t\tstickyHeaders_yScroll : null, // jQuery selector or object to monitor vertical scroll position (defaults: yScroll > attachTo > window)\n\t\t\tstickyHeaders_offset : 0, // number or jquery selector targeting the position:fixed element\n\t\t\tstickyHeaders_filteredToTop: true, // scroll table top into view after filtering\n\t\t\tstickyHeaders_cloneId : '-sticky', // added to table ID, if it exists\n\t\t\tstickyHeaders_addResizeEvent : true, // trigger 'resize' event on headers\n\t\t\tstickyHeaders_includeCaption : true, // if false and a caption exist, it won't be included in the sticky header\n\t\t\tstickyHeaders_zIndex : 2 // The zIndex of the stickyHeaders, allows the user to adjust this to their needs\n\t\t},\n\t\tformat: function(table, c, wo) {\n\t\t\t// filter widget doesn't initialize on an empty table. Fixes #449\n\t\t\tif ( c.$table.hasClass('hasStickyHeaders') || ($.inArray('filter', c.widgets) >= 0 && !c.$table.hasClass('hasFilters')) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar index, len, $t,\n\t\t\t\t$table = c.$table,\n\t\t\t\t// add position: relative to attach element, hopefully it won't cause trouble.\n\t\t\t\t$attach = $(wo.stickyHeaders_attachTo || wo.stickyHeaders_appendTo),\n\t\t\t\tnamespace = c.namespace + 'stickyheaders ',\n\t\t\t\t// element to watch for the scroll event\n\t\t\t\t$yScroll = $(wo.stickyHeaders_yScroll || wo.stickyHeaders_attachTo || window),\n\t\t\t\t$xScroll = $(wo.stickyHeaders_xScroll || wo.stickyHeaders_attachTo || window),\n\t\t\t\t$thead = $table.children('thead:first'),\n\t\t\t\t$header = $thead.children('tr').not('.sticky-false').children(),\n\t\t\t\t$tfoot = $table.children('tfoot'),\n\t\t\t\tstickyOffset = getStickyOffset(c, wo),\n\t\t\t\t// is this table nested? If so, find parent sticky header wrapper (div, not table)\n\t\t\t\t$nestedSticky = $table.parent().closest('.' + ts.css.table).hasClass('hasStickyHeaders') ?\n\t\t\t\t\t$table.parent().closest('table.tablesorter')[0].config.widgetOptions.$sticky.parent() : [],\n\t\t\t\tnestedStickyTop = $nestedSticky.length ? $nestedSticky.height() : 0,\n\t\t\t\t// clone table, then wrap to make sticky header\n\t\t\t\t$stickyTable = wo.$sticky = $table.clone()\n\t\t\t\t\t.addClass('containsStickyHeaders ' + ts.css.sticky + ' ' + wo.stickyHeaders + ' ' + c.namespace.slice(1) + '_extra_table' )\n\t\t\t\t\t.wrap('<div class=\"' + ts.css.stickyWrap + '\">'),\n\t\t\t\t$stickyWrap = $stickyTable.parent()\n\t\t\t\t\t.addClass(ts.css.stickyHide)\n\t\t\t\t\t.css({\n\t\t\t\t\t\tposition : $attach.length ? 'absolute' : 'fixed',\n\t\t\t\t\t\tpadding : parseInt( $stickyTable.parent().parent().css('padding-left'), 10 ),\n\t\t\t\t\t\ttop : stickyOffset + nestedStickyTop,\n\t\t\t\t\t\tleft : 0,\n\t\t\t\t\t\tvisibility : 'hidden',\n\t\t\t\t\t\tzIndex : wo.stickyHeaders_zIndex || 2\n\t\t\t\t\t}),\n\t\t\t\t$stickyThead = $stickyTable.children('thead:first'),\n\t\t\t\t$stickyCells,\n\t\t\t\tlaststate = '',\n\t\t\t\tsetWidth = function($orig, $clone) {\n\t\t\t\t\tvar index, width, border, $cell, $this,\n\t\t\t\t\t\t$cells = $orig.filter(':visible'),\n\t\t\t\t\t\tlen = $cells.length;\n\t\t\t\t\tfor ( index = 0; index < len; index++ ) {\n\t\t\t\t\t\t$cell = $clone.filter(':visible').eq(index);\n\t\t\t\t\t\t$this = $cells.eq(index);\n\t\t\t\t\t\t// code from https://github.com/jmosbech/StickyTableHeaders\n\t\t\t\t\t\tif ($this.css('box-sizing') === 'border-box') {\n\t\t\t\t\t\t\twidth = $this.outerWidth();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif ($cell.css('border-collapse') === 'collapse') {\n\t\t\t\t\t\t\t\tif (window.getComputedStyle) {\n\t\t\t\t\t\t\t\t\twidth = parseFloat( window.getComputedStyle($this[0], null).width );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// ie8 only\n\t\t\t\t\t\t\t\t\tborder = parseFloat( $this.css('border-width') );\n\t\t\t\t\t\t\t\t\twidth = $this.outerWidth() - parseFloat( $this.css('padding-left') ) - parseFloat( $this.css('padding-right') ) - border;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twidth = $this.width();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$cell.css({\n\t\t\t\t\t\t\t'width': width,\n\t\t\t\t\t\t\t'min-width': width,\n\t\t\t\t\t\t\t'max-width': width\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tgetLeftPosition = function(yWindow) {\n\t\t\t\t\tif (yWindow === false && $nestedSticky.length) {\n\t\t\t\t\t\treturn $table.position().left;\n\t\t\t\t\t}\n\t\t\t\t\treturn $attach.length ?\n\t\t\t\t\t\tparseInt($attach.css('padding-left'), 10) || 0 :\n\t\t\t\t\t\t$table.offset().left - parseInt($table.css('margin-left'), 10) - $(window).scrollLeft();\n\t\t\t\t},\n\t\t\t\tresizeHeader = function() {\n\t\t\t\t\t$stickyWrap.css({\n\t\t\t\t\t\tleft : getLeftPosition(),\n\t\t\t\t\t\twidth: $table.outerWidth()\n\t\t\t\t\t});\n\t\t\t\t\tsetWidth( $table, $stickyTable );\n\t\t\t\t\tsetWidth( $header, $stickyCells );\n\t\t\t\t},\n\t\t\t\tscrollSticky = function( resizing ) {\n\t\t\t\t\tif (!$table.is(':visible')) { return; } // fixes #278\n\t\t\t\t\t// Detect nested tables - fixes #724\n\t\t\t\t\tnestedStickyTop = $nestedSticky.length ? $nestedSticky.offset().top - $yScroll.scrollTop() + $nestedSticky.height() : 0;\n\t\t\t\t\tvar tmp,\n\t\t\t\t\t\toffset = $table.offset(),\n\t\t\t\t\t\tstickyOffset = getStickyOffset(c, wo),\n\t\t\t\t\t\tyWindow = $.isWindow( $yScroll[0] ), // $.isWindow needs jQuery 1.4.3\n\t\t\t\t\t\tyScroll = yWindow ?\n\t\t\t\t\t\t\t$yScroll.scrollTop() :\n\t\t\t\t\t\t\t// use parent sticky position if nested AND inside of a scrollable element - see #1512\n\t\t\t\t\t\t\t$nestedSticky.length ? parseInt($nestedSticky[0].style.top, 10) : $yScroll.offset().top,\n\t\t\t\t\t\tattachTop = $attach.length ? yScroll : $yScroll.scrollTop(),\n\t\t\t\t\t\tcaptionHeight = wo.stickyHeaders_includeCaption ? 0 : $table.children( 'caption' ).height() || 0,\n\t\t\t\t\t\tscrollTop = attachTop + stickyOffset + nestedStickyTop - captionHeight,\n\t\t\t\t\t\ttableHeight = $table.height() - ($stickyWrap.height() + ($tfoot.height() || 0)) - captionHeight,\n\t\t\t\t\t\tisVisible = ( scrollTop > offset.top ) && ( scrollTop < offset.top + tableHeight ) ? 'visible' : 'hidden',\n\t\t\t\t\t\tstate = isVisible === 'visible' ? ts.css.stickyVis : ts.css.stickyHide,\n\t\t\t\t\t\tneedsUpdating = !$stickyWrap.hasClass( state ),\n\t\t\t\t\t\tcssSettings = { visibility : isVisible };\n\t\t\t\t\tif ($attach.length) {\n\t\t\t\t\t\t// attached sticky headers always need updating\n\t\t\t\t\t\tneedsUpdating = true;\n\t\t\t\t\t\tcssSettings.top = yWindow ? scrollTop - $attach.offset().top : $attach.scrollTop();\n\t\t\t\t\t}\n\t\t\t\t\t// adjust when scrolling horizontally - fixes issue #143\n\t\t\t\t\ttmp = getLeftPosition(yWindow);\n\t\t\t\t\tif (tmp !== parseInt($stickyWrap.css('left'), 10)) {\n\t\t\t\t\t\tneedsUpdating = true;\n\t\t\t\t\t\tcssSettings.left = tmp;\n\t\t\t\t\t}\n\t\t\t\t\tcssSettings.top = ( cssSettings.top || 0 ) +\n\t\t\t\t\t\t// If nested AND inside of a scrollable element, only add parent sticky height\n\t\t\t\t\t\t(!yWindow && $nestedSticky.length ? $nestedSticky.height() : stickyOffset + nestedStickyTop);\n\t\t\t\t\tif (needsUpdating) {\n\t\t\t\t\t\t$stickyWrap\n\t\t\t\t\t\t\t.removeClass( ts.css.stickyVis + ' ' + ts.css.stickyHide )\n\t\t\t\t\t\t\t.addClass( state )\n\t\t\t\t\t\t\t.css(cssSettings);\n\t\t\t\t\t}\n\t\t\t\t\tif (isVisible !== laststate || resizing) {\n\t\t\t\t\t\t// make sure the column widths match\n\t\t\t\t\t\tresizeHeader();\n\t\t\t\t\t\tlaststate = isVisible;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t// only add a position relative if a position isn't already defined\n\t\t\tif ($attach.length && !$attach.css('position')) {\n\t\t\t\t$attach.css('position', 'relative');\n\t\t\t}\n\t\t\t// fix clone ID, if it exists - fixes #271\n\t\t\tif ($stickyTable.attr('id')) { $stickyTable[0].id += wo.stickyHeaders_cloneId; }\n\t\t\t// clear out cloned table, except for sticky header\n\t\t\t// include caption & filter row (fixes #126 & #249) - don't remove cells to get correct cell indexing\n\t\t\t$stickyTable.find('> thead:gt(0), tr.sticky-false').hide();\n\t\t\t$stickyTable.find('> tbody, > tfoot').remove();\n\t\t\t$stickyTable.find('caption').toggle(wo.stickyHeaders_includeCaption);\n\t\t\t// issue #172 - find td/th in sticky header\n\t\t\t$stickyCells = $stickyThead.children().children();\n\t\t\t$stickyTable.css({ height:0, width:0, margin: 0 });\n\t\t\t// remove resizable block\n\t\t\t$stickyCells.find('.' + ts.css.resizer).remove();\n\t\t\t// update sticky header class names to match real header after sorting\n\t\t\t$table\n\t\t\t\t.addClass('hasStickyHeaders')\n\t\t\t\t.bind('pagerComplete' + namespace, function() {\n\t\t\t\t\tresizeHeader();\n\t\t\t\t});\n\n\t\t\tts.bindEvents(table, $stickyThead.children().children('.' + ts.css.header));\n\n\t\t\tif (wo.stickyHeaders_appendTo) {\n\t\t\t\t$(wo.stickyHeaders_appendTo).append( $stickyWrap );\n\t\t\t} else {\n\t\t\t\t// add stickyheaders AFTER the table. If the table is selected by ID, the original one (first) will be returned.\n\t\t\t\t$table.after( $stickyWrap );\n\t\t\t}\n\n\t\t\t// onRenderHeader is defined, we need to do something about it (fixes #641)\n\t\t\tif (c.onRenderHeader) {\n\t\t\t\t$t = $stickyThead.children('tr').children();\n\t\t\t\tlen = $t.length;\n\t\t\t\tfor ( index = 0; index < len; index++ ) {\n\t\t\t\t\t// send second parameter\n\t\t\t\t\tc.onRenderHeader.apply( $t.eq( index ), [ index, c, $stickyTable ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\t// make it sticky!\n\t\t\t$xScroll.add($yScroll)\n\t\t\t\t.unbind( ('scroll resize '.split(' ').join( namespace )).replace(/\\s+/g, ' ') )\n\t\t\t\t.bind('scroll resize '.split(' ').join( namespace ), function( event ) {\n\t\t\t\t\tscrollSticky( event.type === 'resize' );\n\t\t\t\t});\n\t\t\tc.$table\n\t\t\t\t.unbind('stickyHeadersUpdate' + namespace)\n\t\t\t\t.bind('stickyHeadersUpdate' + namespace, function() {\n\t\t\t\t\tscrollSticky( true );\n\t\t\t\t});\n\n\t\t\tif (wo.stickyHeaders_addResizeEvent) {\n\t\t\t\tts.addHeaderResizeEvent(table);\n\t\t\t}\n\n\t\t\t// look for filter widget\n\t\t\tif ($table.hasClass('hasFilters') && wo.filter_columnFilters) {\n\t\t\t\t// scroll table into view after filtering, if sticky header is active - #482\n\t\t\t\t$table.bind('filterEnd' + namespace, function() {\n\t\t\t\t\t// $(':focus') needs jQuery 1.6+\n\t\t\t\t\tvar $td = $(document.activeElement).closest('td'),\n\t\t\t\t\t\tcolumn = $td.parent().children().index($td);\n\t\t\t\t\t// only scroll if sticky header is active\n\t\t\t\t\tif ($stickyWrap.hasClass(ts.css.stickyVis) && wo.stickyHeaders_filteredToTop) {\n\t\t\t\t\t\t// scroll to original table (not sticky clone)\n\t\t\t\t\t\twindow.scrollTo(0, $table.position().top);\n\t\t\t\t\t\t// give same input/select focus; check if c.$filters exists; fixes #594\n\t\t\t\t\t\tif (column >= 0 && c.$filters) {\n\t\t\t\t\t\t\tc.$filters.eq(column).find('a, select, input').filter(':visible').focus();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tts.filter.bindSearch( $table, $stickyCells.find('.' + ts.css.filter) );\n\t\t\t\t// support hideFilters\n\t\t\t\tif (wo.filter_hideFilters) {\n\t\t\t\t\tts.filter.hideFilters(c, $stickyTable);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// resize table (Firefox)\n\t\t\tif (wo.stickyHeaders_addResizeEvent) {\n\t\t\t\t$table.bind('resize' + c.namespace + 'stickyheaders', function() {\n\t\t\t\t\tresizeHeader();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// make sure sticky is visible if page is partially scrolled\n\t\t\tscrollSticky( true );\n\t\t\t$table.triggerHandler('stickyHeadersInit');\n\n\t\t},\n\t\tremove: function(table, c, wo) {\n\t\t\tvar namespace = c.namespace + 'stickyheaders ';\n\t\t\tc.$table\n\t\t\t\t.removeClass('hasStickyHeaders')\n\t\t\t\t.unbind( ('pagerComplete resize filterEnd stickyHeadersUpdate '.split(' ').join(namespace)).replace(/\\s+/g, ' ') )\n\t\t\t\t.next('.' + ts.css.stickyWrap).remove();\n\t\t\tif (wo.$sticky && wo.$sticky.length) { wo.$sticky.remove(); } // remove cloned table\n\t\t\t$(window)\n\t\t\t\t.add(wo.stickyHeaders_xScroll)\n\t\t\t\t.add(wo.stickyHeaders_yScroll)\n\t\t\t\t.add(wo.stickyHeaders_attachTo)\n\t\t\t\t.unbind( ('scroll resize '.split(' ').join(namespace)).replace(/\\s+/g, ' ') );\n\t\t\tts.addHeaderResizeEvent(table, true);\n\t\t}\n\t});\n\n})(jQuery, window);\n\r\n/*! Widget: resizable - updated 2018-03-26 (v2.30.2) */\n/*jshint browser:true, jquery:true, unused:false */\n;(function ($, window) {\n\t'use strict';\n\tvar ts = $.tablesorter || {};\n\n\t$.extend(ts.css, {\n\t\tresizableContainer : 'tablesorter-resizable-container',\n\t\tresizableHandle : 'tablesorter-resizable-handle',\n\t\tresizableNoSelect : 'tablesorter-disableSelection',\n\t\tresizableStorage : 'tablesorter-resizable'\n\t});\n\n\t// Add extra scroller css\n\t$(function() {\n\t\tvar s = '<style>' +\n\t\t\t'body.' + ts.css.resizableNoSelect + ' { -ms-user-select: none; -moz-user-select: -moz-none;' +\n\t\t\t\t'-khtml-user-select: none; -webkit-user-select: none; user-select: none; }' +\n\t\t\t'.' + ts.css.resizableContainer + ' { position: relative; height: 1px; }' +\n\t\t\t// make handle z-index > than stickyHeader z-index, so the handle stays above sticky header\n\t\t\t'.' + ts.css.resizableHandle + ' { position: absolute; display: inline-block; width: 8px;' +\n\t\t\t\t'top: 1px; cursor: ew-resize; z-index: 3; user-select: none; -moz-user-select: none; }' +\n\t\t\t'</style>';\n\t\t$('head').append(s);\n\t});\n\n\tts.resizable = {\n\t\tinit : function( c, wo ) {\n\t\t\tif ( c.$table.hasClass( 'hasResizable' ) ) { return; }\n\t\t\tc.$table.addClass( 'hasResizable' );\n\n\t\t\tvar noResize, $header, column, storedSizes, tmp,\n\t\t\t\t$table = c.$table,\n\t\t\t\t$parent = $table.parent(),\n\t\t\t\tmarginTop = parseInt( $table.css( 'margin-top' ), 10 ),\n\n\t\t\t// internal variables\n\t\t\tvars = wo.resizable_vars = {\n\t\t\t\tuseStorage : ts.storage && wo.resizable !== false,\n\t\t\t\t$wrap : $parent,\n\t\t\t\tmouseXPosition : 0,\n\t\t\t\t$target : null,\n\t\t\t\t$next : null,\n\t\t\t\toverflow : $parent.css('overflow') === 'auto' ||\n\t\t\t\t\t$parent.css('overflow') === 'scroll' ||\n\t\t\t\t\t$parent.css('overflow-x') === 'auto' ||\n\t\t\t\t\t$parent.css('overflow-x') === 'scroll',\n\t\t\t\tstoredSizes : []\n\t\t\t};\n\n\t\t\t// set default widths\n\t\t\tts.resizableReset( c.table, true );\n\n\t\t\t// now get measurements!\n\t\t\tvars.tableWidth = $table.width();\n\t\t\t// attempt to autodetect\n\t\t\tvars.fullWidth = Math.abs( $parent.width() - vars.tableWidth ) < 20;\n\n\t\t\t/*\n\t\t\t// Hacky method to determine if table width is set to 'auto'\n\t\t\t// http://stackoverflow.com/a/20892048/145346\n\t\t\tif ( !vars.fullWidth ) {\n\t\t\t\ttmp = $table.width();\n\t\t\t\t$header = $table.wrap('<span>').parent(); // temp variable\n\t\t\t\tstoredSizes = parseInt( $table.css( 'margin-left' ), 10 ) || 0;\n\t\t\t\t$table.css( 'margin-left', storedSizes + 50 );\n\t\t\t\tvars.tableWidth = $header.width() > tmp ? 'auto' : tmp;\n\t\t\t\t$table.css( 'margin-left', storedSizes ? storedSizes : '' );\n\t\t\t\t$header = null;\n\t\t\t\t$table.unwrap('<span>');\n\t\t\t}\n\t\t\t*/\n\n\t\t\tif ( vars.useStorage && vars.overflow ) {\n\t\t\t\t// save table width\n\t\t\t\tts.storage( c.table, 'tablesorter-table-original-css-width', vars.tableWidth );\n\t\t\t\ttmp = ts.storage( c.table, 'tablesorter-table-resized-width' ) || 'auto';\n\t\t\t\tts.resizable.setWidth( $table, tmp, true );\n\t\t\t}\n\t\t\two.resizable_vars.storedSizes = storedSizes = ( vars.useStorage ?\n\t\t\t\tts.storage( c.table, ts.css.resizableStorage ) :\n\t\t\t\t[] ) || [];\n\t\t\tts.resizable.setWidths( c, wo, storedSizes );\n\t\t\tts.resizable.updateStoredSizes( c, wo );\n\n\t\t\two.$resizable_container = $( '<div class=\"' + ts.css.resizableContainer + '\">' )\n\t\t\t\t.css({ top : marginTop })\n\t\t\t\t.insertBefore( $table );\n\t\t\t// add container\n\t\t\tfor ( column = 0; column < c.columns; column++ ) {\n\t\t\t\t$header = c.$headerIndexed[ column ];\n\t\t\t\ttmp = ts.getColumnData( c.table, c.headers, column );\n\t\t\t\tnoResize = ts.getData( $header, tmp, 'resizable' ) === 'false';\n\t\t\t\tif ( !noResize ) {\n\t\t\t\t\t$( '<div class=\"' + ts.css.resizableHandle + '\">' )\n\t\t\t\t\t\t.appendTo( wo.$resizable_container )\n\t\t\t\t\t\t.attr({\n\t\t\t\t\t\t\t'data-column' : column,\n\t\t\t\t\t\t\t'unselectable' : 'on'\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.data( 'header', $header )\n\t\t\t\t\t\t.bind( 'selectstart', false );\n\t\t\t\t}\n\t\t\t}\n\t\t\tts.resizable.bindings( c, wo );\n\t\t},\n\n\t\tupdateStoredSizes : function( c, wo ) {\n\t\t\tvar column, $header,\n\t\t\t\tlen = c.columns,\n\t\t\t\tvars = wo.resizable_vars;\n\t\t\tvars.storedSizes = [];\n\t\t\tfor ( column = 0; column < len; column++ ) {\n\t\t\t\t$header = c.$headerIndexed[ column ];\n\t\t\t\tvars.storedSizes[ column ] = $header.is(':visible') ? $header.width() : 0;\n\t\t\t}\n\t\t},\n\n\t\tsetWidth : function( $el, width, overflow ) {\n\t\t\t// overflow tables need min & max width set as well\n\t\t\t$el.css({\n\t\t\t\t'width' : width,\n\t\t\t\t'min-width' : overflow ? width : '',\n\t\t\t\t'max-width' : overflow ? width : ''\n\t\t\t});\n\t\t},\n\n\t\tsetWidths : function( c, wo, storedSizes ) {\n\t\t\tvar column, $temp,\n\t\t\t\tvars = wo.resizable_vars,\n\t\t\t\t$extra = $( c.namespace + '_extra_headers' ),\n\t\t\t\t$col = c.$table.children( 'colgroup' ).children( 'col' );\n\t\t\tstoredSizes = storedSizes || vars.storedSizes || [];\n\t\t\t// process only if table ID or url match\n\t\t\tif ( storedSizes.length ) {\n\t\t\t\tfor ( column = 0; column < c.columns; column++ ) {\n\t\t\t\t\t// set saved resizable widths\n\t\t\t\t\tts.resizable.setWidth( c.$headerIndexed[ column ], storedSizes[ column ], vars.overflow );\n\t\t\t\t\tif ( $extra.length ) {\n\t\t\t\t\t\t// stickyHeaders needs to modify min & max width as well\n\t\t\t\t\t\t$temp = $extra.eq( column ).add( $col.eq( column ) );\n\t\t\t\t\t\tts.resizable.setWidth( $temp, storedSizes[ column ], vars.overflow );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t$temp = $( c.namespace + '_extra_table' );\n\t\t\t\tif ( $temp.length && !ts.hasWidget( c.table, 'scroller' ) ) {\n\t\t\t\t\tts.resizable.setWidth( $temp, c.$table.outerWidth(), vars.overflow );\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tsetHandlePosition : function( c, wo ) {\n\t\t\tvar startPosition,\n\t\t\t\ttableHeight = c.$table.height(),\n\t\t\t\t$handles = wo.$resizable_container.children(),\n\t\t\t\thandleCenter = Math.floor( $handles.width() / 2 );\n\n\t\t\tif ( ts.hasWidget( c.table, 'scroller' ) ) {\n\t\t\t\ttableHeight = 0;\n\t\t\t\tc.$table.closest( '.' + ts.css.scrollerWrap ).children().each(function() {\n\t\t\t\t\tvar $this = $(this);\n\t\t\t\t\t// center table has a max-height set\n\t\t\t\t\ttableHeight += $this.filter('[style*=\"height\"]').length ? $this.height() : $this.children('table').height();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif ( !wo.resizable_includeFooter && c.$table.children('tfoot').length ) {\n\t\t\t\ttableHeight -= c.$table.children('tfoot').height();\n\t\t\t}\n\t\t\t// subtract out table left position from resizable handles. Fixes #864\n\t\t\t// jQuery v3.3.0+ appears to include the start position with the $header.position().left; see #1544\n\t\t\tstartPosition = parseFloat($.fn.jquery) >= 3.3 ? 0 : c.$table.position().left;\n\t\t\t$handles.each( function() {\n\t\t\t\tvar $this = $(this),\n\t\t\t\t\tcolumn = parseInt( $this.attr( 'data-column' ), 10 ),\n\t\t\t\t\tcolumns = c.columns - 1,\n\t\t\t\t\t$header = $this.data( 'header' );\n\t\t\t\tif ( !$header ) { return; } // see #859\n\t\t\t\tif (\n\t\t\t\t\t!$header.is(':visible') ||\n\t\t\t\t\t( !wo.resizable_addLastColumn && ts.resizable.checkVisibleColumns(c, column) )\n\t\t\t\t) {\n\t\t\t\t\t$this.hide();\n\t\t\t\t} else if ( column < columns || column === columns && wo.resizable_addLastColumn ) {\n\t\t\t\t\t$this.css({\n\t\t\t\t\t\tdisplay: 'inline-block',\n\t\t\t\t\t\theight : tableHeight,\n\t\t\t\t\t\tleft : $header.position().left - startPosition + $header.outerWidth() - handleCenter\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\t// Fixes #1485\n\t\tcheckVisibleColumns: function( c, column ) {\n\t\t\tvar i,\n\t\t\t\tlen = 0;\n\t\t\tfor ( i = column + 1; i < c.columns; i++ ) {\n\t\t\t\tlen += c.$headerIndexed[i].is( ':visible' ) ? 1 : 0;\n\t\t\t}\n\t\t\treturn len === 0;\n\t\t},\n\n\t\t// prevent text selection while dragging resize bar\n\t\ttoggleTextSelection : function( c, wo, toggle ) {\n\t\t\tvar namespace = c.namespace + 'tsresize';\n\t\t\two.resizable_vars.disabled = toggle;\n\t\t\t$( 'body' ).toggleClass( ts.css.resizableNoSelect, toggle );\n\t\t\tif ( toggle ) {\n\t\t\t\t$( 'body' )\n\t\t\t\t\t.attr( 'unselectable', 'on' )\n\t\t\t\t\t.bind( 'selectstart' + namespace, false );\n\t\t\t} else {\n\t\t\t\t$( 'body' )\n\t\t\t\t\t.removeAttr( 'unselectable' )\n\t\t\t\t\t.unbind( 'selectstart' + namespace );\n\t\t\t}\n\t\t},\n\n\t\tbindings : function( c, wo ) {\n\t\t\tvar namespace = c.namespace + 'tsresize';\n\t\t\two.$resizable_container.children().bind( 'mousedown', function( event ) {\n\t\t\t\t// save header cell and mouse position\n\t\t\t\tvar column,\n\t\t\t\t\tvars = wo.resizable_vars,\n\t\t\t\t\t$extras = $( c.namespace + '_extra_headers' ),\n\t\t\t\t\t$header = $( event.target ).data( 'header' );\n\n\t\t\t\tcolumn = parseInt( $header.attr( 'data-column' ), 10 );\n\t\t\t\tvars.$target = $header = $header.add( $extras.filter('[data-column=\"' + column + '\"]') );\n\t\t\t\tvars.target = column;\n\n\t\t\t\t// if table is not as wide as it's parent, then resize the table\n\t\t\t\tvars.$next = event.shiftKey || wo.resizable_targetLast ?\n\t\t\t\t\t$header.parent().children().not( '.resizable-false' ).filter( ':last' ) :\n\t\t\t\t\t$header.nextAll( ':not(.resizable-false)' ).eq( 0 );\n\n\t\t\t\tcolumn = parseInt( vars.$next.attr( 'data-column' ), 10 );\n\t\t\t\tvars.$next = vars.$next.add( $extras.filter('[data-column=\"' + column + '\"]') );\n\t\t\t\tvars.next = column;\n\n\t\t\t\tvars.mouseXPosition = event.pageX;\n\t\t\t\tts.resizable.updateStoredSizes( c, wo );\n\t\t\t\tts.resizable.toggleTextSelection(c, wo, true );\n\t\t\t});\n\n\t\t\t$( document )\n\t\t\t\t.bind( 'mousemove' + namespace, function( event ) {\n\t\t\t\t\tvar vars = wo.resizable_vars;\n\t\t\t\t\t// ignore mousemove if no mousedown\n\t\t\t\t\tif ( !vars.disabled || vars.mouseXPosition === 0 || !vars.$target ) { return; }\n\t\t\t\t\tif ( wo.resizable_throttle ) {\n\t\t\t\t\t\tclearTimeout( vars.timer );\n\t\t\t\t\t\tvars.timer = setTimeout( function() {\n\t\t\t\t\t\t\tts.resizable.mouseMove( c, wo, event );\n\t\t\t\t\t\t}, isNaN( wo.resizable_throttle ) ? 5 : wo.resizable_throttle );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tts.resizable.mouseMove( c, wo, event );\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.bind( 'mouseup' + namespace, function() {\n\t\t\t\t\tif (!wo.resizable_vars.disabled) { return; }\n\t\t\t\t\tts.resizable.toggleTextSelection( c, wo, false );\n\t\t\t\t\tts.resizable.stopResize( c, wo );\n\t\t\t\t\tts.resizable.setHandlePosition( c, wo );\n\t\t\t\t});\n\n\t\t\t// resizeEnd event triggered by scroller widget\n\t\t\t$( window ).bind( 'resize' + namespace + ' resizeEnd' + namespace, function() {\n\t\t\t\tts.resizable.setHandlePosition( c, wo );\n\t\t\t});\n\n\t\t\t// right click to reset columns to default widths\n\t\t\tc.$table\n\t\t\t\t.bind( 'columnUpdate pagerComplete resizableUpdate '.split( ' ' ).join( namespace + ' ' ), function() {\n\t\t\t\t\tts.resizable.setHandlePosition( c, wo );\n\t\t\t\t})\n\t\t\t\t.bind( 'resizableReset' + namespace, function() {\n\t\t\t\t\tts.resizableReset( c.table );\n\t\t\t\t})\n\t\t\t\t.find( 'thead:first' )\n\t\t\t\t.add( $( c.namespace + '_extra_table' ).find( 'thead:first' ) )\n\t\t\t\t.bind( 'contextmenu' + namespace, function() {\n\t\t\t\t\t// $.isEmptyObject() needs jQuery 1.4+; allow right click if already reset\n\t\t\t\t\tvar allowClick = wo.resizable_vars.storedSizes.length === 0;\n\t\t\t\t\tts.resizableReset( c.table );\n\t\t\t\t\tts.resizable.setHandlePosition( c, wo );\n\t\t\t\t\two.resizable_vars.storedSizes = [];\n\t\t\t\t\treturn allowClick;\n\t\t\t\t});\n\n\t\t},\n\n\t\tmouseMove : function( c, wo, event ) {\n\t\t\tif ( wo.resizable_vars.mouseXPosition === 0 || !wo.resizable_vars.$target ) { return; }\n\t\t\t// resize columns\n\t\t\tvar column,\n\t\t\t\ttotal = 0,\n\t\t\t\tvars = wo.resizable_vars,\n\t\t\t\t$next = vars.$next,\n\t\t\t\ttar = vars.storedSizes[ vars.target ],\n\t\t\t\tleftEdge = event.pageX - vars.mouseXPosition;\n\t\t\tif ( vars.overflow ) {\n\t\t\t\tif ( tar + leftEdge > 0 ) {\n\t\t\t\t\tvars.storedSizes[ vars.target ] += leftEdge;\n\t\t\t\t\tts.resizable.setWidth( vars.$target, vars.storedSizes[ vars.target ], true );\n\t\t\t\t\t// update the entire table width\n\t\t\t\t\tfor ( column = 0; column < c.columns; column++ ) {\n\t\t\t\t\t\ttotal += vars.storedSizes[ column ];\n\t\t\t\t\t}\n\t\t\t\t\tts.resizable.setWidth( c.$table.add( $( c.namespace + '_extra_table' ) ), total );\n\t\t\t\t}\n\t\t\t\tif ( !$next.length ) {\n\t\t\t\t\t// if expanding right-most column, scroll the wrapper\n\t\t\t\t\tvars.$wrap[0].scrollLeft = c.$table.width();\n\t\t\t\t}\n\t\t\t} else if ( vars.fullWidth ) {\n\t\t\t\tvars.storedSizes[ vars.target ] += leftEdge;\n\t\t\t\tvars.storedSizes[ vars.next ] -= leftEdge;\n\t\t\t\tts.resizable.setWidths( c, wo );\n\t\t\t} else {\n\t\t\t\tvars.storedSizes[ vars.target ] += leftEdge;\n\t\t\t\tts.resizable.setWidths( c, wo );\n\t\t\t}\n\t\t\tvars.mouseXPosition = event.pageX;\n\t\t\t// dynamically update sticky header widths\n\t\t\tc.$table.triggerHandler('stickyHeadersUpdate');\n\t\t},\n\n\t\tstopResize : function( c, wo ) {\n\t\t\tvar vars = wo.resizable_vars;\n\t\t\tts.resizable.updateStoredSizes( c, wo );\n\t\t\tif ( vars.useStorage ) {\n\t\t\t\t// save all column widths\n\t\t\t\tts.storage( c.table, ts.css.resizableStorage, vars.storedSizes );\n\t\t\t\tts.storage( c.table, 'tablesorter-table-resized-width', c.$table.width() );\n\t\t\t}\n\t\t\tvars.mouseXPosition = 0;\n\t\t\tvars.$target = vars.$next = null;\n\t\t\t// will update stickyHeaders, just in case, see #912\n\t\t\tc.$table.triggerHandler('stickyHeadersUpdate');\n\t\t\tc.$table.triggerHandler('resizableComplete');\n\t\t}\n\t};\n\n\t// this widget saves the column widths if\n\t// $.tablesorter.storage function is included\n\t// **************************\n\tts.addWidget({\n\t\tid: 'resizable',\n\t\tpriority: 40,\n\t\toptions: {\n\t\t\tresizable : true, // save column widths to storage\n\t\t\tresizable_addLastColumn : false,\n\t\t\tresizable_includeFooter: true,\n\t\t\tresizable_widths : [],\n\t\t\tresizable_throttle : false, // set to true (5ms) or any number 0-10 range\n\t\t\tresizable_targetLast : false\n\t\t},\n\t\tinit: function(table, thisWidget, c, wo) {\n\t\t\tts.resizable.init( c, wo );\n\t\t},\n\t\tformat: function( table, c, wo ) {\n\t\t\tts.resizable.setHandlePosition( c, wo );\n\t\t},\n\t\tremove: function( table, c, wo, refreshing ) {\n\t\t\tif (wo.$resizable_container) {\n\t\t\t\tvar namespace = c.namespace + 'tsresize';\n\t\t\t\tc.$table.add( $( c.namespace + '_extra_table' ) )\n\t\t\t\t\t.removeClass('hasResizable')\n\t\t\t\t\t.children( 'thead' )\n\t\t\t\t\t.unbind( 'contextmenu' + namespace );\n\n\t\t\t\two.$resizable_container.remove();\n\t\t\t\tts.resizable.toggleTextSelection( c, wo, false );\n\t\t\t\tts.resizableReset( table, refreshing );\n\t\t\t\t$( document ).unbind( 'mousemove' + namespace + ' mouseup' + namespace );\n\t\t\t}\n\t\t}\n\t});\n\n\tts.resizableReset = function( table, refreshing ) {\n\t\t$( table ).each(function() {\n\t\t\tvar index, $t,\n\t\t\t\tc = this.config,\n\t\t\t\two = c && c.widgetOptions,\n\t\t\t\tvars = wo.resizable_vars;\n\t\t\tif ( table && c && c.$headerIndexed.length ) {\n\t\t\t\t// restore the initial table width\n\t\t\t\tif ( vars.overflow && vars.tableWidth ) {\n\t\t\t\t\tts.resizable.setWidth( c.$table, vars.tableWidth, true );\n\t\t\t\t\tif ( vars.useStorage ) {\n\t\t\t\t\t\tts.storage( table, 'tablesorter-table-resized-width', vars.tableWidth );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor ( index = 0; index < c.columns; index++ ) {\n\t\t\t\t\t$t = c.$headerIndexed[ index ];\n\t\t\t\t\tif ( wo.resizable_widths && wo.resizable_widths[ index ] ) {\n\t\t\t\t\t\tts.resizable.setWidth( $t, wo.resizable_widths[ index ], vars.overflow );\n\t\t\t\t\t} else if ( !$t.hasClass( 'resizable-false' ) ) {\n\t\t\t\t\t\t// don't clear the width of any column that is not resizable\n\t\t\t\t\t\tts.resizable.setWidth( $t, '', vars.overflow );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// reset stickyHeader widths\n\t\t\t\tc.$table.triggerHandler( 'stickyHeadersUpdate' );\n\t\t\t\tif ( ts.storage && !refreshing ) {\n\t\t\t\t\tts.storage( this, ts.css.resizableStorage, [] );\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\n})( jQuery, window );\n\r\n/*! Widget: saveSort - updated 2018-03-19 (v2.30.1) *//*\n* Requires tablesorter v2.16+\n* by Rob Garrison\n*/\n;(function ($) {\n\t'use strict';\n\tvar ts = $.tablesorter || {};\n\n\tfunction getStoredSortList(c) {\n\t\tvar stored = ts.storage( c.table, 'tablesorter-savesort' );\n\t\treturn (stored && stored.hasOwnProperty('sortList') && $.isArray(stored.sortList)) ? stored.sortList : [];\n\t}\n\n\tfunction sortListChanged(c, sortList) {\n\t\treturn (sortList || getStoredSortList(c)).join(',') !== c.sortList.join(',');\n\t}\n\n\t// this widget saves the last sort only if the\n\t// saveSort widget option is true AND the\n\t// $.tablesorter.storage function is included\n\t// **************************\n\tts.addWidget({\n\t\tid: 'saveSort',\n\t\tpriority: 20,\n\t\toptions: {\n\t\t\tsaveSort : true\n\t\t},\n\t\tinit: function(table, thisWidget, c, wo) {\n\t\t\t// run widget format before all other widgets are applied to the table\n\t\t\tthisWidget.format(table, c, wo, true);\n\t\t},\n\t\tformat: function(table, c, wo, init) {\n\t\t\tvar time,\n\t\t\t\t$table = c.$table,\n\t\t\t\tsaveSort = wo.saveSort !== false, // make saveSort active/inactive; default to true\n\t\t\t\tsortList = { 'sortList' : c.sortList },\n\t\t\t\tdebug = ts.debug(c, 'saveSort');\n\t\t\tif (debug) {\n\t\t\t\ttime = new Date();\n\t\t\t}\n\t\t\tif ($table.hasClass('hasSaveSort')) {\n\t\t\t\tif (saveSort && table.hasInitialized && ts.storage && sortListChanged(c)) {\n\t\t\t\t\tts.storage( table, 'tablesorter-savesort', sortList );\n\t\t\t\t\tif (debug) {\n\t\t\t\t\t\tconsole.log('saveSort >> Saving last sort: ' + c.sortList + ts.benchmark(time));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// set table sort on initial run of the widget\n\t\t\t\t$table.addClass('hasSaveSort');\n\t\t\t\tsortList = '';\n\t\t\t\t// get data\n\t\t\t\tif (ts.storage) {\n\t\t\t\t\tsortList = getStoredSortList(c);\n\t\t\t\t\tif (debug) {\n\t\t\t\t\t\tconsole.log('saveSort >> Last sort loaded: \"' + sortList + '\"' + ts.benchmark(time));\n\t\t\t\t\t}\n\t\t\t\t\t$table.bind('saveSortReset', function(event) {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\tts.storage( table, 'tablesorter-savesort', '' );\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t// init is true when widget init is run, this will run this widget before all other widgets have initialized\n\t\t\t\t// this method allows using this widget in the original tablesorter plugin; but then it will run all widgets twice.\n\t\t\t\tif (init && sortList && sortList.length > 0) {\n\t\t\t\t\tc.sortList = sortList;\n\t\t\t\t} else if (table.hasInitialized && sortList && sortList.length > 0) {\n\t\t\t\t\t// update sort change\n\t\t\t\t\tif (sortListChanged(c, sortList)) {\n\t\t\t\t\t\tts.sortOn(c, sortList);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tremove: function(table, c) {\n\t\t\tc.$table.removeClass('hasSaveSort');\n\t\t\t// clear storage\n\t\t\tif (ts.storage) { ts.storage( table, 'tablesorter-savesort', '' ); }\n\t\t}\n\t});\n\n})(jQuery);\nreturn jQuery.tablesorter;}));\r\n","/* !\n * @author Sean Coker <hello@sean.is>\n * @version 1.15.0\n * @url http://sean.is/poppin/tags\n * @license MIT\n * @description Taggle is a dependency-less tagging library\n */\n\n// @todo remove bower from next major version\n\n(function(root, factory) {\n 'use strict';\n var libName = 'Taggle';\n\n /* global define, module */\n if (typeof define === 'function' && define.amd) {\n define([], function() {\n var module = factory();\n root[libName] = module;\n return module;\n });\n }\n else if (typeof module === 'object' && module.exports) {\n module.exports = root[libName] = factory();\n }\n else {\n root[libName] = factory();\n }\n}(this, function() {\n 'use strict';\n /////////////////////\n // Default options //\n /////////////////////\n\n var noop = function() {};\n var retTrue = function() {\n return true;\n };\n var BACKSPACE = 8;\n var DELETE = 46;\n var COMMA = 188;\n var TAB = 9;\n var ENTER = 13;\n var ARROW_LEFT = 37;\n var ARROW_RIGHT = 39;\n\n var DEFAULTS = {\n /**\n * Class names to be added on each tag entered\n * @type {String}\n */\n additionalTagClasses: '',\n\n /**\n * Allow duplicate tags to be entered in the field?\n * @type {Boolean}\n */\n allowDuplicates: false,\n\n /**\n * Allow the saving of a tag on blur, rather than it being\n * removed.\n *\n * @type {Boolean}\n */\n saveOnBlur: false,\n\n /**\n * Clear the input value when blurring.\n *\n * @type {Boolean}\n */\n clearOnBlur: true,\n\n /**\n * Class name that will be added onto duplicate existant tag\n * @type {String}\n * @todo\n * @deprecated can be handled by onBeforeTagAdd\n */\n duplicateTagClass: '',\n\n /**\n * Class added to the container div when focused\n * @type {String}\n */\n containerFocusClass: 'active',\n\n /**\n * Should the input be focused when the container is clicked?\n * @type {Bool}\n */\n focusInputOnContainerClick: true,\n\n /**\n * Name added to the hidden inputs within each tag\n * @type {String}\n */\n hiddenInputName: 'taggles[]',\n\n /**\n * Tags that should be preloaded in the div on load\n * @type {Array}\n */\n tags: [],\n\n /**\n * The default delimeter character to split tags on\n * @type {String}\n * @todo Change this to just \"delimiter: ','\"\n */\n delimeter: ',',\n delimiter: '',\n\n /**\n * Add an ID to each of the tags.\n * @type {Boolean}\n * @todo\n * @deprecated make this the default in next version\n */\n attachTagId: false,\n\n /**\n * Tags that the user will be restricted to\n * @type {Array}\n */\n allowedTags: [],\n\n /**\n * Tags that the user will not be able to add\n * @type {Array}\n */\n disallowedTags: [],\n\n /**\n * Spaces will be removed from the tags by default\n * @type {Boolean}\n */\n trimTags: true,\n\n /**\n * Limit the number of tags that can be added\n * @type {Number}\n */\n maxTags: null,\n\n /**\n * If within a form, you can specify the tab index flow\n * @type {Number}\n * @todo make 0 in next update\n */\n tabIndex: 1,\n\n /**\n * Placeholder string to be placed in an empty taggle field\n * @type {String}\n */\n placeholder: 'Enter tags...',\n\n /**\n * Keycodes that will add a tag\n * @type {Array}\n */\n submitKeys: [COMMA, TAB, ENTER],\n\n /**\n * Preserve case of tags being added ie\n * \"tag\" is different than \"Tag\"\n * @type {Boolean}\n */\n preserveCase: false,\n\n // @todo bind callback hooks to instance\n\n /**\n * Function hook called with the to-be-added input DOM element.\n *\n * @param {HTMLElement} input The input element to be added\n */\n inputFormatter: noop,\n\n /**\n * Function hook called with the to-be-added tag DOM element.\n * Use this function to edit the list item before it is appended\n * to the DOM\n * @param {HTMLElement} li The list item to be added\n */\n tagFormatter: noop,\n\n /**\n * Function hook called before a tag is added. Return false\n * to prevent tag from being added\n * @param {String} tag The tag to be added\n */\n onBeforeTagAdd: noop,\n\n /**\n * Function hook called when a tag is added\n * @param {Event} event Event triggered when tag was added\n * @param {String} tag The tag added\n */\n onTagAdd: noop,\n\n /**\n * Function hook called before a tag is removed. Return false\n * to prevent tag from being removed\n * @param {String} tag The tag to be removed\n */\n onBeforeTagRemove: retTrue,\n\n /**\n * Function hook called when a tag is removed\n * @param {Event} event Event triggered when tag was removed\n * @param {String} tag The tag removed\n */\n onTagRemove: noop\n };\n\n //////////////////////\n // Helper functions //\n //////////////////////\n\n function _extend() {\n var master = arguments[0];\n for (var i = 1, l = arguments.length; i < l; i++) {\n var object = arguments[i];\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n master[key] = object[key];\n }\n }\n }\n\n return master;\n }\n\n function _isArray(arr) {\n if (Array.isArray) {\n return Array.isArray(arr);\n }\n return Object.prototype.toString.call(arr) === '[object Array]';\n }\n\n function _on(element, eventName, handler) {\n if (element.addEventListener) {\n element.addEventListener(eventName, handler, false);\n }\n else if (element.attachEvent) {\n element.attachEvent('on' + eventName, handler);\n }\n else {\n element['on' + eventName] = handler;\n }\n }\n\n function _off(element, eventName, handler) {\n if (element.removeEventListener) {\n element.removeEventListener(eventName, handler, false);\n }\n else if (element.detachEvent) {\n element.detachEvent('on' + eventName, handler);\n }\n else {\n element['on' + eventName] = null;\n }\n }\n\n function _trim(str) {\n return str.replace(/^\\s+|\\s+$/g, '');\n }\n\n function _setText(el, text) {\n if (window.attachEvent && !window.addEventListener) { // <= IE8\n el.innerText = text;\n }\n else {\n el.textContent = text;\n }\n }\n\n function _clamp(val, min, max) {\n return Math.min(Math.max(val, min), max);\n }\n\n /**\n * Constructor\n * @param {Mixed} el ID of an element or the actual element\n * @param {Object} options\n */\n var Taggle = function(el, options) {\n // @todo also check that option type is correct #106\n // @todo uncomment this in next major version\n // for (var key in (options || {})) {\n // if (!DEFAULTS.hasOwnProperty(key)) {\n // throw new Error('\"' + key + '\" is not a valid option.');\n // }\n // }\n\n this.settings = _extend({}, DEFAULTS, options);\n this.measurements = {\n container: {\n rect: null,\n style: null,\n padding: null\n }\n };\n this.container = el;\n this.tag = {\n values: [],\n elements: []\n };\n this.list = document.createElement('ul');\n this.inputLi = document.createElement('li');\n this.input = document.createElement('input');\n this.sizer = document.createElement('div');\n this.pasting = false;\n this.placeholder = null;\n this.data = null;\n\n if (this.settings.placeholder) {\n this.placeholder = document.createElement('span');\n }\n\n if (typeof el === 'string') {\n this.container = document.getElementById(el);\n }\n\n this._id = 0;\n this._backspacePressed = false;\n this._inputPosition = 0;\n this._closeEvents = [];\n this._closeButtons = [];\n this._setMeasurements();\n this._setupTextarea();\n this._attachEvents();\n };\n\n /**\n * Gets all the layout measurements up front\n */\n Taggle.prototype._setMeasurements = function() {\n this.measurements.container.rect = this.container.getBoundingClientRect();\n this.measurements.container.style = window.getComputedStyle(this.container);\n\n var style = this.measurements.container.style;\n var lpad = parseInt(style['padding-left'] || style.paddingLeft, 10);\n var rpad = parseInt(style['padding-right'] || style.paddingRight, 10);\n var lborder = parseInt(style['border-left-width'] || style.borderLeftWidth, 10);\n var rborder = parseInt(style['border-right-width'] || style.borderRightWidth, 10);\n\n this.measurements.container.padding = lpad + rpad + lborder + rborder;\n };\n\n /**\n * Setup the div container for tags to be entered\n */\n Taggle.prototype._setupTextarea = function() {\n var fontSize;\n\n this.list.className = 'taggle_list';\n this.input.type = 'text';\n // Make sure no left/right padding messes with the input sizing\n this.input.style.paddingLeft = 0;\n this.input.style.paddingRight = 0;\n this.input.className = 'taggle_input';\n this.input.tabIndex = this.settings.tabIndex;\n this.sizer.className = 'taggle_sizer';\n\n if (this.settings.tags.length) {\n for (var i = 0, len = this.settings.tags.length; i < len; i++) {\n var taggle = this._createTag(this.settings.tags[i], this.tag.values.length);\n this.list.appendChild(taggle);\n }\n }\n\n if (this.placeholder) {\n this._hidePlaceholder();\n this.placeholder.classList.add('taggle_placeholder');\n this.container.appendChild(this.placeholder);\n _setText(this.placeholder, this.settings.placeholder);\n\n if (!this.settings.tags.length) {\n this._showPlaceholder();\n }\n }\n\n var formattedInput = this.settings.inputFormatter(this.input);\n if (formattedInput) {\n this.input = formattedInput;\n }\n\n this.inputLi.appendChild(this.input);\n this.list.appendChild(this.inputLi);\n this.container.appendChild(this.list);\n this.container.appendChild(this.sizer);\n fontSize = window.getComputedStyle(this.input).fontSize;\n this.sizer.style.fontSize = fontSize;\n };\n\n /**\n * Attaches neccessary events\n */\n Taggle.prototype._attachEvents = function() {\n var self = this;\n\n if (this._eventsAttached) {\n return false;\n }\n\n this._eventsAttached = true;\n\n function containerClick() {\n self.input.focus();\n }\n\n if (this.settings.focusInputOnContainerClick) {\n this._handleContainerClick = containerClick.bind(this);\n _on(this.container, 'click', this._handleContainerClick);\n }\n\n this._handleFocus = this._setFocusStateForContainer.bind(this);\n this._handleBlur = this._blurEvent.bind(this);\n this._handleKeydown = this._keydownEvents.bind(this);\n this._handleKeyup = this._keyupEvents.bind(this);\n\n _on(this.input, 'focus', this._handleFocus);\n _on(this.input, 'blur', this._handleBlur);\n _on(this.input, 'keydown', this._handleKeydown);\n _on(this.input, 'keyup', this._handleKeyup);\n\n return true;\n };\n\n Taggle.prototype._detachEvents = function() {\n if (!this._eventsAttached) {\n return false;\n }\n\n var self = this;\n\n this._eventsAttached = false;\n\n _off(this.container, 'click', this._handleContainerClick);\n _off(this.input, 'focus', this._handleFocus);\n _off(this.input, 'blur', this._handleBlur);\n _off(this.input, 'keydown', this._handleKeydown);\n _off(this.input, 'keyup', this._handleKeyup);\n\n this._closeButtons.forEach(function(button, i) {\n var eventFn = self._closeEvents[i];\n\n _off(button, 'click', eventFn);\n });\n\n return true;\n };\n\n /**\n * Resizes the hidden input where user types to fill in the\n * width of the div\n */\n Taggle.prototype._fixInputWidth = function() {\n this._setMeasurements();\n this._setInputWidth();\n };\n\n /**\n * Returns whether or not the specified tag text can be added\n * @param {Event} e event causing the potentially added tag\n * @param {String} text tag value\n * @return {Boolean}\n */\n Taggle.prototype._canAdd = function(e, text) {\n if (!text) {\n return false;\n }\n var limit = this.settings.maxTags;\n if (limit !== null && limit <= this.getTagValues().length) {\n return false;\n }\n\n if (this.settings.onBeforeTagAdd(e, text) === false) {\n return false;\n }\n\n if (!this.settings.allowDuplicates && this._hasDupes(text)) {\n return false;\n }\n\n var sensitive = this.settings.preserveCase;\n var allowed = this.settings.allowedTags;\n\n if (allowed.length && !this._tagIsInArray(text, allowed, sensitive)) {\n return false;\n }\n\n var disallowed = this.settings.disallowedTags;\n if (disallowed.length && this._tagIsInArray(text, disallowed, sensitive)) {\n return false;\n }\n\n return true;\n };\n\n /**\n * Returns whether a string is in an array based on case sensitivity\n *\n * @param {String} text string to search for\n * @param {Array} arr array of strings to search through\n * @param {Boolean} caseSensitive\n * @return {Boolean}\n */\n Taggle.prototype._tagIsInArray = function(text, arr, caseSensitive) {\n if (caseSensitive) {\n return arr.indexOf(text) !== -1;\n }\n\n var lowercased = [].slice.apply(arr).map(function(str) {\n return str.toLowerCase();\n });\n\n return lowercased.indexOf(text) !== -1;\n };\n\n /**\n * Appends tag with its corresponding input to the list\n * @param {Event} e\n * @param {String} text\n * @param {Number} index\n */\n Taggle.prototype._add = function(e, text, index) {\n var self = this;\n var values = text || '';\n var delimiter = this.settings.delimiter || this.settings.delimeter;\n\n if (typeof text !== 'string') {\n values = this.input.value;\n\n if (this.settings.trimTags) {\n if (values[0] === delimiter) {\n values = values.replace(delimiter, '');\n }\n values = _trim(values);\n }\n }\n\n values.split(delimiter).map(function(val) {\n if (self.settings.trimTags) {\n val = _trim(val);\n }\n return self._formatTag(val);\n }).forEach(function(val) {\n if (!self._canAdd(e, val)) {\n return;\n }\n\n var currentTagLength = self.tag.values.length;\n var tagIndex = _clamp(index || currentTagLength, 0, currentTagLength);\n var li = self._createTag(val, tagIndex);\n var lis = self.list.children;\n var lastLi = lis[tagIndex];\n self.list.insertBefore(li, lastLi);\n\n\n val = self.tag.values[tagIndex];\n\n self.settings.onTagAdd(e, val);\n\n self.input.value = '';\n self._fixInputWidth();\n self._setFocusStateForContainer();\n });\n };\n\n /**\n * Removes last tag if it has already been probed\n * @param {Event} e\n */\n Taggle.prototype._checkPrevOrNextTag = function(e) {\n e = e || window.event;\n\n var taggles = this.container.querySelectorAll('.taggle');\n var prevTagIndex = _clamp(this._inputPosition - 1, 0, taggles.length - 1);\n var nextTagIndex = _clamp(this._inputPosition, 0, taggles.length - 1);\n var index = prevTagIndex;\n\n if (e.keyCode === DELETE) {\n index = nextTagIndex;\n }\n\n var targetTaggle = taggles[index];\n var hotClass = 'taggle_hot';\n var isDeleteOrBackspace = [BACKSPACE, DELETE].indexOf(e.keyCode) !== -1;\n\n // prevent holding backspace from deleting all tags\n if (this.input.value === '' && isDeleteOrBackspace && !this._backspacePressed) {\n if (targetTaggle.classList.contains(hotClass)) {\n this._backspacePressed = true;\n this._remove(targetTaggle, e);\n this._fixInputWidth();\n this._setFocusStateForContainer();\n }\n else {\n targetTaggle.classList.add(hotClass);\n }\n }\n else if (targetTaggle.classList.contains(hotClass)) {\n targetTaggle.classList.remove(hotClass);\n }\n };\n\n /**\n * Setter for the hidden input.\n * @param {Number} width\n */\n Taggle.prototype._setInputWidth = function() {\n var width = this.sizer.getBoundingClientRect().width;\n var max = this.measurements.container.rect.width - this.measurements.container.padding;\n var size = parseInt(this.sizer.style.fontSize, 10);\n\n // 1.5 just seems to be a good multiplier here\n var newWidth = Math.round(_clamp(width + (size * 1.5), 10, max));\n\n this.input.style.width = newWidth + 'px';\n };\n\n /**\n * Checks global tags array if provided tag exists\n * @param {String} text\n * @return {Boolean}\n */\n Taggle.prototype._hasDupes = function(text) {\n var needle = this.tag.values.indexOf(text);\n var tagglelist = this.container.querySelector('.taggle_list');\n var dupes;\n\n if (this.settings.duplicateTagClass) {\n dupes = tagglelist.querySelectorAll('.' + this.settings.duplicateTagClass);\n for (var i = 0, len = dupes.length; i < len; i++) {\n dupes[i].classList.remove(this.settings.duplicateTagClass);\n }\n }\n\n // if found\n if (needle > -1) {\n if (this.settings.duplicateTagClass) {\n tagglelist.childNodes[needle].classList.add(this.settings.duplicateTagClass);\n }\n return true;\n }\n\n return false;\n };\n\n /**\n * Checks whether or not the key pressed is acceptable\n * @param {Number} key code\n * @return {Boolean}\n */\n Taggle.prototype._isConfirmKey = function(key) {\n var confirmKey = false;\n\n if (this.settings.submitKeys.indexOf(key) > -1) {\n confirmKey = true;\n }\n\n return confirmKey;\n };\n\n // Event handlers\n\n /**\n * Handles focus state of div container.\n */\n Taggle.prototype._setFocusStateForContainer = function() {\n this._fixInputWidth();\n\n if (!this.container.classList.contains(this.settings.containerFocusClass)) {\n this.container.classList.add(this.settings.containerFocusClass);\n }\n\n this._hidePlaceholder();\n };\n\n /**\n * Runs all the events that need to happen on a blur\n * @param {Event} e\n */\n Taggle.prototype._blurEvent = function(e) {\n if (this.container.classList.contains(this.settings.containerFocusClass)) {\n this.container.classList.remove(this.settings.containerFocusClass);\n }\n\n if (this.settings.saveOnBlur) {\n e = e || window.event;\n\n this._setInputWidth();\n\n if (this.input.value !== '') {\n this._confirmValidTagEvent(e);\n return;\n }\n\n if (this.tag.values.length) {\n this._checkPrevOrNextTag(e);\n }\n }\n else if (this.settings.clearOnBlur) {\n this.input.value = '';\n this._setInputWidth();\n }\n\n if (!this.tag.values.length && !this.input.value) {\n this._showPlaceholder();\n }\n };\n\n /**\n * Runs all the events that need to run on keydown\n * @param {Event} e\n */\n Taggle.prototype._keydownEvents = function(e) {\n e = e || window.event;\n\n var key = e.keyCode;\n this.pasting = false;\n\n this._setInputWidth();\n\n if (key === 86 && e.metaKey) {\n this.pasting = true;\n }\n\n if (this._isConfirmKey(key) && this.input.value !== '') {\n this._confirmValidTagEvent(e);\n return;\n }\n\n if (this.tag.values.length) {\n this._checkPrevOrNextTag(e);\n }\n };\n\n /**\n * Runs all the events that need to run on keyup\n * @param {Event} e\n */\n Taggle.prototype._keyupEvents = function(e) {\n e = e || window.event;\n\n this._backspacePressed = false;\n\n if ([ARROW_LEFT, ARROW_RIGHT].indexOf(e.keyCode) !== -1) {\n this._moveInput(e.keyCode);\n return;\n }\n\n _setText(this.sizer, this.input.value);\n\n // If we break to a new line because the text is too long\n // and decide to delete everything, we should resize the input\n // so it falls back inline\n if (!this.input.value) {\n this._setInputWidth();\n }\n\n if (this.pasting && this.input.value !== '') {\n this._add(e);\n this.pasting = false;\n }\n };\n\n Taggle.prototype._moveInput = function(direction) {\n var currentIndex = this._inputPosition;\n\n switch (direction) {\n case ARROW_LEFT: {\n var leftNewIndex = _clamp(this._inputPosition - 1, 0, this.tag.values.length);\n var leftIndexChanged = currentIndex !== leftNewIndex;\n\n this._inputPosition = leftNewIndex;\n\n if (leftIndexChanged) {\n this.list.insertBefore(this.inputLi, this.list.childNodes[leftNewIndex] || null);\n this.input.focus();\n }\n break;\n }\n\n case ARROW_RIGHT: {\n var rightNewIndex = _clamp(this._inputPosition + 1, 0, this.tag.values.length);\n var rightIndexChanged = currentIndex !== rightNewIndex;\n\n this._inputPosition = rightNewIndex;\n\n if (rightIndexChanged) {\n this.list.insertBefore(this.inputLi, this.list.childNodes[rightNewIndex + 1] || null);\n this.input.focus();\n }\n break;\n }\n\n default:\n break;\n }\n };\n\n /**\n * Confirms the inputted value to be converted to a tag\n * @param {Event} e\n */\n Taggle.prototype._confirmValidTagEvent = function(e) {\n e = e || window.event;\n\n // prevents from jumping out of textarea\n if (e.preventDefault) {\n e.preventDefault();\n }\n else {\n e.returnValue = false;\n }\n\n this._add(e, null, this._inputPosition);\n };\n\n Taggle.prototype._createTag = function(text, index) {\n var li = document.createElement('li');\n var close = document.createElement('button');\n var hidden = document.createElement('input');\n var span = document.createElement('span');\n\n text = this._formatTag(text);\n\n _setText(close, '×');\n close.className = 'close';\n // IE8 does not allow you to modify the `type` property directly.\n close.setAttribute('type', 'button');\n\n var eventFn = this._remove.bind(this, close);\n\n _on(close, 'click', eventFn);\n\n _setText(span, text);\n span.className = 'taggle_text';\n\n li.className = 'taggle ' + this.settings.additionalTagClasses;\n\n hidden.type = 'hidden';\n hidden.value = text;\n hidden.name = this.settings.hiddenInputName;\n\n li.appendChild(span);\n li.appendChild(close);\n li.appendChild(hidden);\n\n var formatted = this.settings.tagFormatter(li);\n\n if (typeof formatted !== 'undefined') {\n li = formatted;\n }\n\n if (!(li instanceof HTMLElement) || !(li.localName === 'li' || li.tagName === 'LI')) {\n throw new Error('tagFormatter must return an li element');\n }\n\n if (this.settings.attachTagId) {\n this._id += 1;\n\n text = {\n text: text,\n id: this._id\n };\n }\n\n this.tag.values.splice(index, 0, text);\n this.tag.elements.splice(index, 0, li);\n this._closeEvents.splice(index, 0, eventFn);\n this._closeButtons.splice(index, 0, close);\n this._inputPosition = _clamp(this._inputPosition + 1, 0, this.tag.values.length);\n\n return li;\n };\n\n Taggle.prototype._showPlaceholder = function() {\n if (this.placeholder) {\n this.placeholder.style.opacity = 1;\n this.placeholder.setAttribute('aria-hidden', 'false');\n }\n };\n\n Taggle.prototype._hidePlaceholder = function() {\n if (this.placeholder) {\n this.placeholder.style.opacity = 0;\n this.placeholder.setAttribute('aria-hidden', 'true');\n }\n };\n\n /**\n * Removes tag from the tags collection\n * @param {li} li List item to remove\n * @param {Event} e\n */\n Taggle.prototype._remove = function(li, e) {\n var self = this;\n var text;\n var elem;\n var index;\n\n if (li.tagName.toLowerCase() !== 'li') {\n li = li.parentNode;\n }\n\n elem = (li.tagName.toLowerCase() === 'a') ? li.parentNode : li;\n index = this.tag.elements.indexOf(elem);\n\n text = this.tag.values[index];\n\n function done(error) {\n if (error) {\n return;\n }\n\n var eventFn = self._closeEvents[index];\n var button = self._closeButtons[index];\n\n _off(button, 'click', eventFn);\n\n li.parentNode.removeChild(li);\n\n // Going to assume the indicies match for now\n self.tag.elements.splice(index, 1);\n self.tag.values.splice(index, 1);\n\n self._closeEvents.splice(index, 1);\n self._closeButtons.splice(index, 1);\n\n self.settings.onTagRemove(e, text);\n\n if (index < self._inputPosition) {\n self._inputPosition = _clamp(self._inputPosition - 1, 0, self.tag.values.length);\n }\n\n self._setFocusStateForContainer();\n }\n\n var ret = this.settings.onBeforeTagRemove(e, text, done);\n\n if (!ret) {\n return;\n }\n\n done();\n };\n\n /**\n * Format the text for a tag\n * @param {String} text Tag text\n * @return {String}\n */\n Taggle.prototype._formatTag = function(text) {\n return this.settings.preserveCase ? text : text.toLowerCase();\n };\n\n Taggle.prototype._isIndexInRange = function(index) {\n return index >= 0 && index <= this.tag.values.length - 1;\n };\n\n Taggle.prototype.getTags = function() {\n return {\n elements: this.getTagElements(),\n values: this.getTagValues()\n };\n };\n\n // @todo\n // @deprecated use getTags().elements\n Taggle.prototype.getTagElements = function() {\n return [].slice.apply(this.tag.elements);\n };\n\n // @todo\n // @deprecated use getTags().values\n Taggle.prototype.getTagValues = function() {\n return [].slice.apply(this.tag.values);\n };\n\n Taggle.prototype.getInput = function() {\n return this.input;\n };\n\n Taggle.prototype.getContainer = function() {\n return this.container;\n };\n\n Taggle.prototype.add = function(text, index) {\n var isArr = _isArray(text);\n\n if (isArr) {\n var startingIndex = index;\n\n for (var i = 0, len = text.length; i < len; i++) {\n if (typeof text[i] === 'string') {\n this._add(null, text[i], startingIndex);\n\n if (!isNaN(startingIndex)) {\n startingIndex += 1;\n }\n }\n }\n }\n else {\n this._add(null, text, index);\n }\n\n return this;\n };\n\n Taggle.prototype.edit = function(text, index) {\n if (typeof text !== 'string') {\n throw new Error('First edit argument must be of type string');\n }\n\n if (typeof index !== 'number') {\n throw new Error('Second edit argument must be a number');\n }\n\n if (!this._isIndexInRange(index)) {\n throw new Error('Edit index should be between 0 and ' + this.tag.values.length - 1);\n }\n\n var textValue = this.tag.values[index];\n\n if (typeof textValue === 'string') {\n this.tag.values[index] = text;\n }\n else {\n this.tag.values[index].text = text;\n }\n\n _setText(this.tag.elements[index], text);\n\n return this;\n };\n\n Taggle.prototype.move = function(currentIndex, destinationIndex) {\n if (typeof currentIndex !== 'number' || typeof destinationIndex !== 'number') {\n throw new Error('Both arguments must be numbers');\n }\n\n if (!this._isIndexInRange(currentIndex)) {\n throw new Error('First index should be between 0 and ' + this.tag.values.length - 1);\n }\n\n if (!this._isIndexInRange(destinationIndex)) {\n throw new Error('Second index should be between 0 and ' + this.tag.values.length - 1);\n }\n\n if (currentIndex === destinationIndex) {\n return this;\n }\n\n var value = this.tag.values[currentIndex];\n var element = this.tag.elements[currentIndex];\n var lastElement = this.tag.elements[destinationIndex];\n var eventFn = this._closeEvents[currentIndex];\n var closeButton = this._closeButtons[currentIndex];\n\n this.tag.values.splice(currentIndex, 1);\n this.tag.elements.splice(currentIndex, 1);\n this._closeEvents.splice(currentIndex, 1);\n this._closeButtons.splice(currentIndex, 1);\n\n this.tag.values.splice(destinationIndex, 0, value);\n this.tag.elements.splice(destinationIndex, 0, element);\n this._closeEvents.splice(currentIndex, 0, eventFn);\n this._closeButtons.splice(currentIndex, 0, closeButton);\n\n this.list.insertBefore(element, lastElement.nextSibling);\n\n return this;\n };\n\n Taggle.prototype.remove = function(text, all) {\n var len = this.tag.values.length - 1;\n var found = false;\n\n while (len > -1) {\n var tagText = this.tag.values[len];\n if (this.settings.attachTagId) {\n tagText = tagText.text;\n }\n\n if (tagText === text) {\n found = true;\n this._remove(this.tag.elements[len]);\n }\n\n if (found && !all) {\n break;\n }\n\n len--;\n }\n\n return this;\n };\n\n Taggle.prototype.removeAll = function() {\n for (var i = this.tag.values.length - 1; i >= 0; i--) {\n this._remove(this.tag.elements[i]);\n }\n\n this._showPlaceholder();\n\n return this;\n };\n\n Taggle.prototype.setOptions = function(options) {\n this.settings = _extend({}, this.settings, options || {});\n\n return this;\n };\n\n Taggle.prototype.enable = function() {\n var buttons = [].slice.call(this.container.querySelectorAll('button'));\n var inputs = [].slice.call(this.container.querySelectorAll('input'));\n\n buttons.concat(inputs).forEach(function(el) {\n el.removeAttribute('disabled');\n });\n\n return this;\n };\n\n Taggle.prototype.disable = function() {\n var buttons = [].slice.call(this.container.querySelectorAll('button'));\n var inputs = [].slice.call(this.container.querySelectorAll('input'));\n\n buttons.concat(inputs).forEach(function(el) {\n el.setAttribute('disabled', '');\n });\n\n return this;\n };\n\n Taggle.prototype.setData = function(data) {\n this.data = data;\n\n return this;\n };\n\n Taggle.prototype.getData = function() {\n return this.data;\n };\n\n Taggle.prototype.attachEvents = function() {\n var self = this;\n\n var attached = this._attachEvents();\n\n if (attached) {\n this._closeButtons.forEach(function(button, i) {\n var eventFn = self._closeEvents[i];\n\n _on(button, 'click', eventFn);\n });\n }\n\n return this;\n };\n\n Taggle.prototype.removeEvents = function() {\n this._detachEvents();\n\n return this;\n };\n\n return Taggle;\n}));\n","/*jslint devel: true, bitwise: true, regexp: true, browser: true, confusion: true, unparam: true, eqeq: true, white: true, nomen: true, plusplus: true, maxerr: 50, indent: 4 */\r\n/*globals jQuery,Color,define */\r\n\r\n/*!\r\n * ColorPicker\r\n *\r\n * Copyright (c) 2011-2017 Martijn W. van der Lee\r\n * Licensed under the MIT.\r\n */\r\n/* Full-featured colorpicker for jQueryUI with full theming support.\r\n * Most images from jPicker by Christopher T. Tillman.\r\n * Sourcecode created from scratch by Martijn W. van der Lee.\r\n */\r\n(function( factory ) {\r\n\tif ( typeof define === \"function\" && define.amd ) {\r\n\r\n\t\t// AMD. Register as an anonymous module.\r\n\t\tdefine([\r\n\t\t\t\"jquery\"\r\n\t\t], factory );\r\n\t} else {\r\n\r\n\t\t// Browser globals\r\n\t\tfactory( jQuery );\r\n\t}\r\n} (function ($) {\r\n\t\"use strict\";\r\n\r\n\tvar _colorpicker_index = 0,\r\n\r\n\t\t_container_popup = '<div class=\"ui-colorpicker ui-colorpicker-dialog ui-dialog ui-widget ui-widget-content ui-corner-all\" style=\"display: none;\"></div>',\r\n\t\t_container_inlineFrame = '<div class=\"ui-colorpicker ui-colorpicker-inline ui-dialog ui-widget ui-widget-content ui-corner-all\"></div>',\r\n\t\t_container_inline = '<div class=\"ui-colorpicker ui-colorpicker-inline\"></div>',\r\n\r\n\t\t_intToHex = function (dec) {\r\n\t\t\tvar result = Math.round(dec).toString(16);\r\n\t\t\tif (result.length === 1) {\r\n\t\t\t\tresult = ('0' + result);\r\n\t\t\t}\r\n\t\t\treturn result.toLowerCase();\r\n\t\t},\r\n\t\t\r\n\t\t_keycode = {\r\n\t\t\tisPrint: function(keycode) {\r\n\t\t\t\treturn keycode == 32\t\t\t\t\t\t// spacebar\r\n\t\t\t\t\t|| (keycode >= 48 && keycode <= 57)\t\t// number keys\r\n\t\t\t\t\t|| (keycode >= 65 && keycode <= 90)\t\t// letter keys\r\n\t\t\t\t\t|| (keycode >= 96 && keycode <= 111)\t// numpad keys\r\n\t\t\t\t\t|| (keycode >= 186 && keycode < 192)\t// ;=,-./` (in order)\r\n\t\t\t\t\t|| (keycode >= 219 && keycode < 222);\t// [\\]' (in order)\r\n\t\t\t},\t\t\t\r\n\t\t\tisHex: function(keycode) {\r\n\t\t\t\treturn (keycode >= 48 && keycode <= 57)\t\t// number keys\r\n\t\t\t\t\t|| (keycode >= 96 && keycode <= 105)\t// numpad keys\r\n\t\t\t\t\t|| (keycode >= 65 && keycode <= 70);\t// a-f\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_layoutTable = function(layout, callback) {\r\n\t\t\tvar bitmap,\r\n\t\t\t\tx, y,\r\n\t\t\t\twidth, height,\r\n\t\t\t\tcolumns, rows,\r\n\t\t\t\tindex,\r\n\t\t\t\tcell,\r\n\t\t\t\thtml,\r\n\t\t\t\tw, h,\r\n\t\t\t\tcolspan,\r\n\t\t\t\twalked;\r\n\r\n\t\t\tlayout.sort(function(a, b) {\r\n\t\t\t\tif (a.pos[1] === b.pos[1]) {\r\n\t\t\t\t\treturn a.pos[0] - b.pos[0];\r\n\t\t\t\t}\r\n\t\t\t\treturn a.pos[1] - b.pos[1];\r\n\t\t\t});\r\n\r\n\t\t\t// Determine dimensions of the table\r\n\t\t\twidth = 0;\r\n\t\t\theight = 0;\r\n\t\t\t$.each (layout, function(index, part) {\r\n\t\t\t\twidth = Math.max(width, part.pos[0] + part.pos[2]);\r\n\t\t\t\theight = Math.max(height, part.pos[1] + part.pos[3]);\r\n\t\t\t});\r\n\r\n\t\t\t// Initialize bitmap\r\n\t\t\tbitmap = [];\r\n\t\t\tfor (x = 0; x < width; ++x) {\r\n\t\t\t\tbitmap.push([]);\r\n\t\t\t}\r\n\r\n\t\t\t// Mark rows and columns which have layout assigned\r\n\t\t\trows\t= [];\r\n\t\t\tcolumns = [];\r\n\t\t\t$.each(layout, function(index, part) {\r\n\t\t\t\t// mark columns\r\n\t\t\t\tfor (x = 0; x < part.pos[2]; x += 1) {\r\n\t\t\t\t\tcolumns[part.pos[0] + x] = true;\r\n\t\t\t\t}\r\n\t\t\t\tfor (y = 0; y < part.pos[3]; y += 1) {\r\n\t\t\t\t\trows[part.pos[1] + y] = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// Generate the table\r\n\t\t\thtml = '';\r\n\t\t\tcell = layout[index = 0];\r\n\t\t\tfor (y = 0; y < height; ++y) {\r\n\t\t\t\thtml += '<tr>';\r\n x = 0;\r\n while (x < width) {\r\n\t\t\t\t\tif (typeof cell !== 'undefined' && x === cell.pos[0] && y === cell.pos[1]) {\r\n\t\t\t\t\t\t// Create a \"real\" cell\r\n\t\t\t\t\t\thtml += callback(cell, x, y);\r\n\r\n\t\t\t\t\t\tfor (h = 0; h < cell.pos[3]; h +=1) {\r\n\t\t\t\t\t\t\tfor (w = 0; w < cell.pos[2]; w +=1) {\r\n\t\t\t\t\t\t\t\tbitmap[x + w][y + h] = true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tx += cell.pos[2];\r\n\t\t\t\t\t\tcell = layout[++index];\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// Fill in the gaps\r\n\t\t\t\t\t\tcolspan = 0;\r\n\t\t\t\t\t\twalked = false;\r\n\r\n\t\t\t\t\t\twhile (x < width && bitmap[x][y] === undefined && (cell === undefined || y < cell.pos[1] || (y === cell.pos[1] && x < cell.pos[0]))) {\r\n\t\t\t\t\t\t\tif (columns[x] === true) {\r\n\t\t\t\t\t\t\t\tcolspan += 1;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\twalked = true;\r\n\t\t\t\t\t\t\tx += 1;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (colspan > 0) {\r\n\t\t\t\t\t\t\thtml += '<td colspan=\"'+colspan+'\"></td>';\r\n\t\t\t\t\t\t} else if (!walked) {\r\n\t\t\t\t\t\t\tx += 1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\thtml += '</tr>';\r\n\t\t\t}\r\n\r\n\t\t\treturn '<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\"><tbody>' + html + '</tbody></table>';\r\n\t\t};\r\n\r\n\t$.colorpicker = new function() {\r\n\t\tthis.regional = {\r\n\t\t\t'':\t{\r\n\t\t\t\tok:\t\t\t\t'OK',\r\n\t\t\t\tcancel:\t\t\t'Cancel',\r\n\t\t\t\tnone:\t\t\t'None',\r\n\t\t\t\tbutton:\t\t\t'Color',\r\n\t\t\t\ttitle:\t\t\t'Pick a color',\r\n\t\t\t\ttransparent:\t'Transparent',\r\n\t\t\t\thsvH:\t\t\t'H',\r\n\t\t\t\thsvS:\t\t\t'S',\r\n\t\t\t\thsvV:\t\t\t'V',\r\n\t\t\t\trgbR:\t\t\t'R',\r\n\t\t\t\trgbG:\t\t\t'G',\r\n\t\t\t\trgbB:\t\t\t'B',\r\n\t\t\t\tlabL:\t\t\t'L',\r\n\t\t\t\tlabA:\t\t\t'a',\r\n\t\t\t\tlabB:\t\t\t'b',\r\n\t\t\t\thslH:\t\t\t'H',\r\n\t\t\t\thslS:\t\t\t'S',\r\n\t\t\t\thslL:\t\t\t'L',\r\n\t\t\t\tcmykC:\t\t\t'C',\r\n\t\t\t\tcmykM:\t\t\t'M',\r\n\t\t\t\tcmykY:\t\t\t'Y',\r\n\t\t\t\tcmykK:\t\t\t'K',\r\n\t\t\t\talphaA:\t\t\t'A'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.swatchesNames = {\r\n\t\t\t'html':\t\t'HTML'\r\n\t\t};\r\n\r\n\t\tthis.swatches = {\r\n\t\t\t'html':\t[\r\n\t\t\t\t{name: 'black',\t\t\t\t\tr: 0, g: 0, b: 0},\r\n\t\t\t\t{name: 'dimgray',\t\t\t\tr: 0.4117647058823529, g: 0.4117647058823529, b: 0.4117647058823529},\r\n\t\t\t\t{name: 'gray',\t\t\t\t\tr: 0.5019607843137255, g: 0.5019607843137255, b: 0.5019607843137255},\r\n\t\t\t\t{name: 'darkgray',\t\t\t\tr: 0.6627450980392157, g: 0.6627450980392157, b: 0.6627450980392157},\r\n\t\t\t\t{name: 'silver',\t\t\t\tr: 0.7529411764705882, g: 0.7529411764705882, b: 0.7529411764705882},\r\n\t\t\t\t{name: 'lightgrey',\t\t\t\tr: 0.8274509803921568, g: 0.8274509803921568, b: 0.8274509803921568},\r\n\t\t\t\t{name: 'gainsboro',\t\t\t\tr: 0.8627450980392157, g: 0.8627450980392157, b: 0.8627450980392157},\r\n\t\t\t\t{name: 'whitesmoke',\t\t\tr: 0.9607843137254902, g: 0.9607843137254902, b: 0.9607843137254902},\r\n\t\t\t\t{name: 'white',\t\t\t\t\tr: 1, g: 1, b: 1},\r\n\t\t\t\t{name: 'rosybrown',\t\t\t\tr: 0.7372549019607844, g: 0.5607843137254902, b: 0.5607843137254902},\r\n\t\t\t\t{name: 'indianred',\t\t\t\tr: 0.803921568627451, g: 0.3607843137254902, b: 0.3607843137254902},\r\n\t\t\t\t{name: 'brown',\t\t\t\t\tr: 0.6470588235294118, g: 0.16470588235294117, b: 0.16470588235294117},\r\n\t\t\t\t{name: 'firebrick',\t\t\t\tr: 0.6980392156862745, g: 0.13333333333333333, b: 0.13333333333333333},\r\n\t\t\t\t{name: 'lightcoral',\t\t\tr: 0.9411764705882353, g: 0.5019607843137255, b: 0.5019607843137255},\r\n\t\t\t\t{name: 'maroon',\t\t\t\tr: 0.5019607843137255, g: 0, b: 0},\r\n\t\t\t\t{name: 'darkred',\t\t\t\tr: 0.5450980392156862, g: 0, b: 0},\r\n\t\t\t\t{name: 'red',\t\t\t\t\tr: 1, g: 0, b: 0},\r\n\t\t\t\t{name: 'snow',\t\t\t\t\tr: 1, g: 0.9803921568627451, b: 0.9803921568627451},\r\n\t\t\t\t{name: 'salmon',\t\t\t\tr: 0.9803921568627451, g: 0.5019607843137255, b: 0.4470588235294118},\r\n\t\t\t\t{name: 'mistyrose',\t\t\t\tr: 1, g: 0.8941176470588236, b: 0.8823529411764706},\r\n\t\t\t\t{name: 'tomato',\t\t\t\tr: 1, g: 0.38823529411764707, b: 0.2784313725490196},\r\n\t\t\t\t{name: 'darksalmon',\t\t\tr: 0.9137254901960784, g: 0.5882352941176471, b: 0.47843137254901963},\r\n\t\t\t\t{name: 'orangered',\t\t\t\tr: 1, g: 0.27058823529411763, b: 0},\r\n\t\t\t\t{name: 'coral',\t\t\t\t\tr: 1, g: 0.4980392156862745, b: 0.3137254901960784},\r\n\t\t\t\t{name: 'lightsalmon',\t\t\tr: 1, g: 0.6274509803921569, b: 0.47843137254901963},\r\n\t\t\t\t{name: 'sienna',\t\t\t\tr: 0.6274509803921569, g: 0.3215686274509804, b: 0.17647058823529413},\r\n\t\t\t\t{name: 'seashell',\t\t\t\tr: 1, g: 0.9607843137254902, b: 0.9333333333333333},\r\n\t\t\t\t{name: 'chocolate',\t\t\t\tr: 0.8235294117647058, g: 0.4117647058823529, b: 0.11764705882352941},\r\n\t\t\t\t{name: 'saddlebrown',\t\t\tr: 0.5450980392156862, g: 0.27058823529411763, b: 0.07450980392156863},\r\n\t\t\t\t{name: 'sandybrown',\t\t\tr: 0.9568627450980393, g: 0.6431372549019608, b: 0.3764705882352941},\r\n\t\t\t\t{name: 'peachpuff',\t\t\t\tr: 1, g: 0.8549019607843137, b: 0.7254901960784313},\r\n\t\t\t\t{name: 'peru',\t\t\t\t\tr: 0.803921568627451, g: 0.5215686274509804, b: 0.24705882352941178},\r\n\t\t\t\t{name: 'linen',\t\t\t\t\tr: 0.9803921568627451, g: 0.9411764705882353, b: 0.9019607843137255},\r\n\t\t\t\t{name: 'darkorange',\t\t\tr: 1, g: 0.5490196078431373, b: 0},\r\n\t\t\t\t{name: 'bisque',\t\t\t\tr: 1, g: 0.8941176470588236, b: 0.7686274509803922},\r\n\t\t\t\t{name: 'burlywood',\t\t\t\tr: 0.8705882352941177, g: 0.7215686274509804, b: 0.5294117647058824},\r\n\t\t\t\t{name: 'tan',\t\t\t\t\tr: 0.8235294117647058, g: 0.7058823529411765, b: 0.5490196078431373},\r\n\t\t\t\t{name: 'antiquewhite',\t\t\tr: 0.9803921568627451, g: 0.9215686274509803, b: 0.8431372549019608},\r\n\t\t\t\t{name: 'navajowhite',\t\t\tr: 1, g: 0.8705882352941177, b: 0.6784313725490196},\r\n\t\t\t\t{name: 'blanchedalmond',\t\tr: 1, g: 0.9215686274509803, b: 0.803921568627451},\r\n\t\t\t\t{name: 'papayawhip',\t\t\tr: 1, g: 0.9372549019607843, b: 0.8352941176470589},\r\n\t\t\t\t{name: 'orange',\t\t\t\tr: 1, g: 0.6470588235294118, b: 0},\r\n\t\t\t\t{name: 'moccasin',\t\t\t\tr: 1, g: 0.8941176470588236, b: 0.7098039215686275},\r\n\t\t\t\t{name: 'wheat',\t\t\t\t\tr: 0.9607843137254902, g: 0.8705882352941177, b: 0.7019607843137254},\r\n\t\t\t\t{name: 'oldlace',\t\t\t\tr: 0.9921568627450981, g: 0.9607843137254902, b: 0.9019607843137255},\r\n\t\t\t\t{name: 'floralwhite',\t\t\tr: 1, g: 0.9803921568627451, b: 0.9411764705882353},\r\n\t\t\t\t{name: 'goldenrod',\t\t\t\tr: 0.8549019607843137, g: 0.6470588235294118, b: 0.12549019607843137},\r\n\t\t\t\t{name: 'darkgoldenrod',\t\t\tr: 0.7215686274509804, g: 0.5254901960784314, b: 0.043137254901960784},\r\n\t\t\t\t{name: 'cornsilk',\t\t\t\tr: 1, g: 0.9725490196078431, b: 0.8627450980392157},\r\n\t\t\t\t{name: 'gold',\t\t\t\t\tr: 1, g: 0.8431372549019608, b: 0},\r\n\t\t\t\t{name: 'palegoldenrod',\t\t\tr: 0.9333333333333333, g: 0.9098039215686274, b: 0.6666666666666666},\r\n\t\t\t\t{name: 'khaki',\t\t\t\t\tr: 0.9411764705882353, g: 0.9019607843137255, b: 0.5490196078431373},\r\n\t\t\t\t{name: 'lemonchiffon',\t\t\tr: 1, g: 0.9803921568627451, b: 0.803921568627451},\r\n\t\t\t\t{name: 'darkkhaki',\t\t\t\tr: 0.7411764705882353, g: 0.7176470588235294, b: 0.4196078431372549},\r\n\t\t\t\t{name: 'beige',\t\t\t\t\tr: 0.9607843137254902, g: 0.9607843137254902, b: 0.8627450980392157},\r\n\t\t\t\t{name: 'lightgoldenrodyellow',\tr: 0.9803921568627451, g: 0.9803921568627451, b: 0.8235294117647058},\r\n\t\t\t\t{name: 'olive',\t\t\t\t\tr: 0.5019607843137255, g: 0.5019607843137255, b: 0},\r\n\t\t\t\t{name: 'yellow',\t\t\t\tr: 1, g: 1, b: 0},\r\n\t\t\t\t{name: 'lightyellow',\t\t\tr: 1, g: 1, b: 0.8784313725490196},\r\n\t\t\t\t{name: 'ivory',\t\t\t\t\tr: 1, g: 1, b: 0.9411764705882353},\r\n\t\t\t\t{name: 'olivedrab',\t\t\t\tr: 0.4196078431372549, g: 0.5568627450980392, b: 0.13725490196078433},\r\n\t\t\t\t{name: 'yellowgreen',\t\t\tr: 0.6039215686274509, g: 0.803921568627451, b: 0.19607843137254902},\r\n\t\t\t\t{name: 'darkolivegreen',\t\tr: 0.3333333333333333, g: 0.4196078431372549, b: 0.1843137254901961},\r\n\t\t\t\t{name: 'greenyellow',\t\t\tr: 0.6784313725490196, g: 1, b: 0.1843137254901961},\r\n\t\t\t\t{name: 'lawngreen',\t\t\t\tr: 0.48627450980392156, g: 0.9882352941176471, b: 0},\r\n\t\t\t\t{name: 'chartreuse',\t\t\tr: 0.4980392156862745, g: 1, b: 0},\r\n\t\t\t\t{name: 'darkseagreen',\t\t\tr: 0.5607843137254902, g: 0.7372549019607844, b: 0.5607843137254902},\r\n\t\t\t\t{name: 'forestgreen',\t\t\tr: 0.13333333333333333, g: 0.5450980392156862, b: 0.13333333333333333},\r\n\t\t\t\t{name: 'limegreen',\t\t\t\tr: 0.19607843137254902, g: 0.803921568627451, b: 0.19607843137254902},\r\n\t\t\t\t{name: 'lightgreen',\t\t\tr: 0.5647058823529412, g: 0.9333333333333333, b: 0.5647058823529412},\r\n\t\t\t\t{name: 'palegreen',\t\t\t\tr: 0.596078431372549, g: 0.984313725490196, b: 0.596078431372549},\r\n\t\t\t\t{name: 'darkgreen',\t\t\t\tr: 0, g: 0.39215686274509803, b: 0},\r\n\t\t\t\t{name: 'green',\t\t\t\t\tr: 0, g: 0.5019607843137255, b: 0},\r\n\t\t\t\t{name: 'lime',\t\t\t\t\tr: 0, g: 1, b: 0},\r\n\t\t\t\t{name: 'honeydew',\t\t\t\tr: 0.9411764705882353, g: 1, b: 0.9411764705882353},\r\n\t\t\t\t{name: 'mediumseagreen',\t\tr: 0.23529411764705882, g: 0.7019607843137254, b: 0.44313725490196076},\r\n\t\t\t\t{name: 'seagreen',\t\t\t\tr: 0.1803921568627451, g: 0.5450980392156862, b: 0.3411764705882353},\r\n\t\t\t\t{name: 'springgreen',\t\t\tr: 0, g: 1, b: 0.4980392156862745},\r\n\t\t\t\t{name: 'mintcream',\t\t\t\tr: 0.9607843137254902, g: 1, b: 0.9803921568627451},\r\n\t\t\t\t{name: 'mediumspringgreen',\t\tr: 0, g: 0.9803921568627451, b: 0.6039215686274509},\r\n\t\t\t\t{name: 'mediumaquamarine',\t\tr: 0.4, g: 0.803921568627451, b: 0.6666666666666666},\r\n\t\t\t\t{name: 'aquamarine',\t\t\tr: 0.4980392156862745, g: 1, b: 0.8313725490196079},\r\n\t\t\t\t{name: 'turquoise',\t\t\t\tr: 0.25098039215686274, g: 0.8784313725490196, b: 0.8156862745098039},\r\n\t\t\t\t{name: 'lightseagreen',\t\t\tr: 0.12549019607843137, g: 0.6980392156862745, b: 0.6666666666666666},\r\n\t\t\t\t{name: 'mediumturquoise',\t\tr: 0.2823529411764706, g: 0.8196078431372549, b: 0.8},\r\n\t\t\t\t{name: 'darkslategray',\t\t\tr: 0.1843137254901961, g: 0.30980392156862746, b: 0.30980392156862746},\r\n\t\t\t\t{name: 'paleturquoise',\t\t\tr: 0.6862745098039216, g: 0.9333333333333333, b: 0.9333333333333333},\r\n\t\t\t\t{name: 'teal',\t\t\t\t\tr: 0, g: 0.5019607843137255, b: 0.5019607843137255},\r\n\t\t\t\t{name: 'darkcyan',\t\t\t\tr: 0, g: 0.5450980392156862, b: 0.5450980392156862},\r\n\t\t\t\t{name: 'darkturquoise',\t\t\tr: 0, g: 0.807843137254902, b: 0.8196078431372549},\r\n\t\t\t\t{name: 'aqua',\t\t\t\t\tr: 0, g: 1, b: 1},\r\n\t\t\t\t{name: 'cyan',\t\t\t\t\tr: 0, g: 1, b: 1},\r\n\t\t\t\t{name: 'lightcyan',\t\t\t\tr: 0.8784313725490196, g: 1, b: 1},\r\n\t\t\t\t{name: 'azure',\t\t\t\t\tr: 0.9411764705882353, g: 1, b: 1},\r\n\t\t\t\t{name: 'cadetblue',\t\t\t\tr: 0.37254901960784315, g: 0.6196078431372549, b: 0.6274509803921569},\r\n\t\t\t\t{name: 'powderblue',\t\t\tr: 0.6901960784313725, g: 0.8784313725490196, b: 0.9019607843137255},\r\n\t\t\t\t{name: 'lightblue',\t\t\t\tr: 0.6784313725490196, g: 0.8470588235294118, b: 0.9019607843137255},\r\n\t\t\t\t{name: 'deepskyblue',\t\t\tr: 0, g: 0.7490196078431373, b: 1},\r\n\t\t\t\t{name: 'skyblue',\t\t\t\tr: 0.5294117647058824, g: 0.807843137254902, b: 0.9215686274509803},\r\n\t\t\t\t{name: 'lightskyblue',\t\t\tr: 0.5294117647058824, g: 0.807843137254902, b: 0.9803921568627451},\r\n\t\t\t\t{name: 'steelblue',\t\t\t\tr: 0.27450980392156865, g: 0.5098039215686274, b: 0.7058823529411765},\r\n\t\t\t\t{name: 'aliceblue',\t\t\t\tr: 0.9411764705882353, g: 0.9725490196078431, b: 1},\r\n\t\t\t\t{name: 'dodgerblue',\t\t\tr: 0.11764705882352941, g: 0.5647058823529412, b: 1},\r\n\t\t\t\t{name: 'slategray',\t\t\t\tr: 0.4392156862745098, g: 0.5019607843137255, b: 0.5647058823529412},\r\n\t\t\t\t{name: 'lightslategray',\t\tr: 0.4666666666666667, g: 0.5333333333333333, b: 0.6},\r\n\t\t\t\t{name: 'lightsteelblue',\t\tr: 0.6901960784313725, g: 0.7686274509803922, b: 0.8705882352941177},\r\n\t\t\t\t{name: 'cornflowerblue',\t\tr: 0.39215686274509803, g: 0.5843137254901961, b: 0.9294117647058824},\r\n\t\t\t\t{name: 'royalblue',\t\t\t\tr: 0.2549019607843137, g: 0.4117647058823529, b: 0.8823529411764706},\r\n\t\t\t\t{name: 'midnightblue',\t\t\tr: 0.09803921568627451, g: 0.09803921568627451, b: 0.4392156862745098},\r\n\t\t\t\t{name: 'lavender',\t\t\t\tr: 0.9019607843137255, g: 0.9019607843137255, b: 0.9803921568627451},\r\n\t\t\t\t{name: 'navy',\t\t\t\t\tr: 0, g: 0, b: 0.5019607843137255},\r\n\t\t\t\t{name: 'darkblue',\t\t\t\tr: 0, g: 0, b: 0.5450980392156862},\r\n\t\t\t\t{name: 'mediumblue',\t\t\tr: 0, g: 0, b: 0.803921568627451},\r\n\t\t\t\t{name: 'blue',\t\t\t\t\tr: 0, g: 0, b: 1},\r\n\t\t\t\t{name: 'ghostwhite',\t\t\tr: 0.9725490196078431, g: 0.9725490196078431, b: 1},\r\n\t\t\t\t{name: 'darkslateblue',\t\t\tr: 0.2823529411764706, g: 0.23921568627450981, b: 0.5450980392156862},\r\n\t\t\t\t{name: 'slateblue',\t\t\t\tr: 0.41568627450980394, g: 0.35294117647058826, b: 0.803921568627451},\r\n\t\t\t\t{name: 'mediumslateblue',\t\tr: 0.4823529411764706, g: 0.40784313725490196, b: 0.9333333333333333},\r\n\t\t\t\t{name: 'mediumpurple',\t\t\tr: 0.5764705882352941, g: 0.4392156862745098, b: 0.8588235294117647},\r\n\t\t\t\t{name: 'blueviolet',\t\t\tr: 0.5411764705882353, g: 0.16862745098039217, b: 0.8862745098039215},\r\n\t\t\t\t{name: 'indigo',\t\t\t\tr: 0.29411764705882354, g: 0, b: 0.5098039215686274},\r\n\t\t\t\t{name: 'darkorchid',\t\t\tr: 0.6, g: 0.19607843137254902, b: 0.8},\r\n\t\t\t\t{name: 'darkviolet',\t\t\tr: 0.5803921568627451, g: 0, b: 0.8274509803921568},\r\n\t\t\t\t{name: 'mediumorchid',\t\t\tr: 0.7294117647058823, g: 0.3333333333333333, b: 0.8274509803921568},\r\n\t\t\t\t{name: 'thistle',\t\t\t\tr: 0.8470588235294118, g: 0.7490196078431373, b: 0.8470588235294118},\r\n\t\t\t\t{name: 'plum',\t\t\t\t\tr: 0.8666666666666667, g: 0.6274509803921569, b: 0.8666666666666667},\r\n\t\t\t\t{name: 'violet',\t\t\t\tr: 0.9333333333333333, g: 0.5098039215686274, b: 0.9333333333333333},\r\n\t\t\t\t{name: 'purple',\t\t\t\tr: 0.5019607843137255, g: 0, b: 0.5019607843137255},\r\n\t\t\t\t{name: 'darkmagenta',\t\t\tr: 0.5450980392156862, g: 0, b: 0.5450980392156862},\r\n\t\t\t\t{name: 'magenta',\t\t\t\tr: 1, g: 0, b: 1},\r\n\t\t\t\t{name: 'fuchsia',\t\t\t\tr: 1, g: 0, b: 1},\r\n\t\t\t\t{name: 'orchid',\t\t\t\tr: 0.8549019607843137, g: 0.4392156862745098, b: 0.8392156862745098},\r\n\t\t\t\t{name: 'mediumvioletred',\t\tr: 0.7803921568627451, g: 0.08235294117647059, b: 0.5215686274509804},\r\n\t\t\t\t{name: 'deeppink',\t\t\t\tr: 1, g: 0.0784313725490196, b: 0.5764705882352941},\r\n\t\t\t\t{name: 'hotpink',\t\t\t\tr: 1, g: 0.4117647058823529, b: 0.7058823529411765},\r\n\t\t\t\t{name: 'palevioletred',\t\t\tr: 0.8588235294117647, g: 0.4392156862745098, b: 0.5764705882352941},\r\n\t\t\t\t{name: 'lavenderblush',\t\t\tr: 1, g: 0.9411764705882353, b: 0.9607843137254902},\r\n\t\t\t\t{name: 'crimson',\t\t\t\tr: 0.8627450980392157, g: 0.0784313725490196, b: 0.23529411764705882},\r\n\t\t\t\t{name: 'pink',\t\t\t\t\tr: 1, g: 0.7529411764705882, b: 0.796078431372549},\r\n\t\t\t\t{name: 'lightpink',\t\t\t\tr: 1, g: 0.7137254901960784, b: 0.7568627450980392}\r\n\t\t\t]\r\n\t\t};\r\n\r\n\t\tthis.writers = {\r\n\t\t\t'#HEX':\t\tfunction(color, that) {\r\n\t\t\t\t\t\t\treturn that._formatColor('#rxgxbx', color);\r\n\t\t\t\t\t\t}\r\n\t\t,\t'#HEX3':\tfunction(color, that) {\r\n\t\t\t\t\t\t\tvar hex3 = $.colorpicker.writers.HEX3(color);\r\n\t\t\t\t\t\t\treturn hex3 === false? false : '#'+hex3;\r\n\t\t\t\t\t\t}\r\n\t\t,\t'HEX':\t\tfunction(color, that) {\r\n\t\t\t\t\t\t\treturn that._formatColor('rxgxbx', color);\r\n\t\t\t\t\t\t}\r\n\t\t,\t'HEX3':\t\tfunction(color, that) {\r\n\t\t\t\t\t\t\tvar rgb = color.getRGB(),\r\n\t\t\t\t\t\t\t\tr = Math.round(rgb.r * 255),\r\n\t\t\t\t\t\t\t\tg = Math.round(rgb.g * 255),\r\n\t\t\t\t\t\t\t\tb = Math.round(rgb.b * 255);\r\n\r\n\t\t\t\t\t\t\tif (((r >>> 4) === (r &= 0xf))\r\n\t\t\t\t\t\t\t && ((g >>> 4) === (g &= 0xf))\r\n\t\t\t\t\t\t\t && ((b >>> 4) === (b &= 0xf))) {\r\n\t\t\t\t\t\t\t\treturn r.toString(16)+g.toString(16)+b.toString(16);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t,\t'#HEXA':\tfunction(color, that) {\r\n\t\t\t\t\t\t\treturn that._formatColor('#rxgxbxax', color);\r\n\t\t\t\t\t\t}\t\t\t\t\t\t\r\n\t\t,\t'#HEXA4':\tfunction(color, that) {\r\n\t\t\t\t\t\t\tvar hexa4 = $.colorpicker.writers.HEXA4(color, that);\r\n\t\t\t\t\t\t\treturn hexa4 === false? false : '#'+hexa4;\r\n\t\t\t\t\t\t}\t\t\t\t\t\t\r\n\t\t,\t'HEXA':\tfunction(color, that) {\r\n\t\t\t\t\t\t\treturn that._formatColor('rxgxbxax', color);\r\n\t\t\t\t\t\t}\t\t\r\n\t\t,\t'HEXA4':\t\tfunction(color, that) {\r\n\t\t\t\t\t\t\tvar a = Math.round(color.getAlpha() * 255);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tif ((a >>> 4) === (a &= 0xf)) {\r\n\t\t\t\t\t\t\t\treturn $.colorpicker.writers.HEX3(color, that)+a.toString(16);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\t\t\t\t\t\t\r\n\t\t,\t'RGB':\t\tfunction(color, that) {\r\n\t\t\t\t\t\t\treturn color.getAlpha() >= 1\r\n\t\t\t\t\t\t\t\t\t? that._formatColor('rgb(rd,gd,bd)', color)\r\n\t\t\t\t\t\t\t\t\t: false;\r\n\t\t\t\t\t\t}\r\n\t\t,\t'RGBA':\t\tfunction(color, that) {\r\n\t\t\t\t\t\t\treturn that._formatColor('rgba(rd,gd,bd,af)', color);\r\n\t\t\t\t\t\t}\r\n\t\t,\t'RGB%':\t\tfunction(color, that) {\r\n\t\t\t\t\t\t\treturn color.getAlpha() >= 1\r\n\t\t\t\t\t\t\t\t\t? that._formatColor('rgb(rp%,gp%,bp%)', color)\r\n\t\t\t\t\t\t\t\t\t: false;\r\n\t\t\t\t\t\t}\r\n\t\t,\t'RGBA%':\tfunction(color, that) {\r\n\t\t\t\t\t\t\treturn that._formatColor('rgba(rp%,gp%,bp%,af)', color);\r\n\t\t\t\t\t\t}\r\n\t\t,\t'HSL':\t\tfunction(color, that) {\r\n\t\t\t\t\t\t\treturn color.getAlpha() >= 1\r\n\t\t\t\t\t\t\t\t\t? that._formatColor('hsl(hd,sd,vd)', color)\r\n\t\t\t\t\t\t\t\t\t: false;\r\n\t\t\t\t\t\t}\r\n\t\t,\t'HSLA':\t\tfunction(color, that) {\r\n\t\t\t\t\t\t\treturn that._formatColor('hsla(hd,sd,vd,af)', color);\r\n\t\t\t\t\t\t}\r\n\t\t,\t'HSL%':\t\tfunction(color, that) {\r\n\t\t\t\t\t\t\treturn color.getAlpha() >= 1\r\n\t\t\t\t\t\t\t\t\t? that._formatColor('hsl(hp%,sp%,vp%)', color)\r\n\t\t\t\t\t\t\t\t\t: false;\r\n\t\t\t\t\t\t}\r\n\t\t,\t'HSLA%':\tfunction(color, that) {\r\n\t\t\t\t\t\t\treturn that._formatColor('hsla(hp%,sp%,vp%,af)', color);\r\n\t\t\t\t\t\t}\r\n\t\t,\t'NAME':\t\tfunction(color, that) {\r\n\t\t\t\t\t\t\treturn that._closestName(color);\r\n\t\t\t\t\t\t}\r\n\t\t,\t'EXACT':\tfunction(color, that) {\r\n\t\t\t\t\t\t\treturn that._exactName(color);\r\n\t\t\t\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.parsers = {\r\n\t\t\t'':\t\t\tfunction(color) {\r\n\t\t\t\t if (color === '') {\r\n\t\t\t\t\t\t\t\treturn new $.colorpicker.Color();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t,\t'NAME':\t\tfunction(color, that) {\r\n\t\t\t\t\t\t\tvar c = that._getSwatch($.trim(color));\r\n\t\t\t\t\t\t\tif (c) {\r\n\t\t\t\t\t\t\t\treturn new $.colorpicker.Color(c.r, c.g, c.b);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t,\t'RGBA':\t\tfunction(color) {\r\n\t\t\t\t\t\t\tvar m = /^rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)$/.exec(color);\r\n\t\t\t\t\t\t\tif (m) {\r\n\t\t\t\t\t\t\t\treturn new $.colorpicker.Color(\r\n\t\t\t\t\t\t\t\t\tm[1] / 255,\r\n\t\t\t\t\t\t\t\t\tm[2] / 255,\r\n\t\t\t\t\t\t\t\t\tm[3] / 255,\r\n\t\t\t\t\t\t\t\t\tparseFloat(m[4])\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t,\t'RGBA%':\tfunction(color) {\r\n\t\t\t\t\t\t\tvar m = /^rgba?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)$/.exec(color);\r\n\t\t\t\t\t\t\tif (m) {\r\n\t\t\t\t\t\t\t\treturn new $.colorpicker.Color(\r\n\t\t\t\t\t\t\t\t\tm[1] / 100,\r\n\t\t\t\t\t\t\t\t\tm[2] / 100,\r\n\t\t\t\t\t\t\t\t\tm[3] / 100,\r\n\t\t\t\t\t\t\t\t\tm[4] / 100\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t,\t'HSLA':\t\tfunction(color) {\r\n\t\t\t\t\t\t\tvar m = /^hsla?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)$/.exec(color);\r\n\t\t\t\t\t\t\tif (m) {\r\n\t\t\t\t\t\t\t\treturn (new $.colorpicker.Color()).setHSL(\r\n\t\t\t\t\t\t\t\t\tm[1] / 255,\r\n\t\t\t\t\t\t\t\t\tm[2] / 255,\r\n\t\t\t\t\t\t\t\t\tm[3] / 255).setAlpha(parseFloat(m[4]));\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t,\t'HSLA%':\tfunction(color) {\r\n\t\t\t\t\t\t\tvar m = /^hsla?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)$/.exec(color);\r\n\t\t\t\t\t\t\tif (m) {\r\n\t\t\t\t\t\t\t\treturn (new $.colorpicker.Color()).setHSL(\r\n\t\t\t\t\t\t\t\t\tm[1] / 100,\r\n\t\t\t\t\t\t\t\t\tm[2] / 100,\r\n\t\t\t\t\t\t\t\t\tm[3] / 100).setAlpha(m[4] / 100);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t,\t'#HEX':\t\tfunction(color) {\r\n\t\t\t\t\t\t\tvar m = /^#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/.exec(color);\r\n\t\t\t\t\t\t\tif (m) {\r\n\t\t\t\t\t\t\t\treturn new $.colorpicker.Color(\r\n\t\t\t\t\t\t\t\t\tparseInt(m[1], 16) / 255,\r\n\t\t\t\t\t\t\t\t\tparseInt(m[2], 16) / 255,\r\n\t\t\t\t\t\t\t\t\tparseInt(m[3], 16) / 255\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t,\t'#HEX3':\tfunction(color) {\r\n\t\t\t\t\t\t\tvar m = /^#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])$/.exec(color);\r\n\t\t\t\t\t\t\tif (m) {\r\n\t\t\t\t\t\t\t\treturn new $.colorpicker.Color(\r\n\t\t\t\t\t\t\t\t parseInt(String(m[1]) + m[1], 16) / 255,\r\n\t\t\t\t\t\t\t\t parseInt(String(m[2]) + m[2], 16) / 255,\r\n\t\t\t\t\t\t\t\t parseInt(String(m[3]) + m[3], 16) / 255\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t,\t'HEX':\t\tfunction(color) {\r\n\t\t\t\t\t\t\tvar m = /^([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/.exec(color);\r\n\t\t\t\t\t\t\tif (m) {\r\n\t\t\t\t\t\t\t\treturn new $.colorpicker.Color(\r\n\t\t\t\t\t\t\t\t\tparseInt(m[1], 16) / 255,\r\n\t\t\t\t\t\t\t\t\tparseInt(m[2], 16) / 255,\r\n\t\t\t\t\t\t\t\t\tparseInt(m[3], 16) / 255\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t,\t'HEX3':\t\tfunction(color) {\r\n\t\t\t\t\t\t\tvar m = /^([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])$/.exec(color);\r\n\t\t\t\t\t\t\tif (m) {\r\n\t\t\t\t\t\t\t\treturn new $.colorpicker.Color(\r\n\t\t\t\t\t\t\t\t parseInt(String(m[1]) + m[1], 16) / 255,\r\n\t\t\t\t\t\t\t\t parseInt(String(m[2]) + m[2], 16) / 255,\r\n\t\t\t\t\t\t\t\t parseInt(String(m[3]) + m[3], 16) / 255\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t,\t'#HEXA':\tfunction(color) {\r\n\t\t\t\t\t\t\tvar m = /^#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/.exec(color);\r\n\t\t\t\t\t\t\tif (m) {\r\n\t\t\t\t\t\t\t\treturn new $.colorpicker.Color(\r\n\t\t\t\t\t\t\t\t\tparseInt(m[1], 16) / 255,\r\n\t\t\t\t\t\t\t\t\tparseInt(m[2], 16) / 255,\r\n\t\t\t\t\t\t\t\t\tparseInt(m[3], 16) / 255,\r\n\t\t\t\t\t\t\t\t\tparseInt(m[4], 16) / 255\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t,\t'#HEXA4':\tfunction(color) {\r\n\t\t\t\t\t\t\tvar m = /^#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])$/.exec(color);\r\n\t\t\t\t\t\t\tif (m) {\r\n\t\t\t\t\t\t\t\treturn new $.colorpicker.Color(\r\n\t\t\t\t\t\t\t\t parseInt(String(m[1]) + m[1], 16) / 255,\r\n\t\t\t\t\t\t\t\t parseInt(String(m[2]) + m[2], 16) / 255,\r\n\t\t\t\t\t\t\t\t parseInt(String(m[3]) + m[3], 16) / 255,\r\n\t\t\t\t\t\t\t\t parseInt(String(m[4]) + m[4], 16) / 255\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t,\t'HEXA':\t\tfunction(color) {\r\n\t\t\t\t\t\t\tvar m = /^([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/.exec(color);\r\n\t\t\t\t\t\t\tif (m) {\r\n\t\t\t\t\t\t\t\treturn new $.colorpicker.Color(\r\n\t\t\t\t\t\t\t\t\tparseInt(m[1], 16) / 255,\r\n\t\t\t\t\t\t\t\t\tparseInt(m[2], 16) / 255,\r\n\t\t\t\t\t\t\t\t\tparseInt(m[3], 16) / 255,\r\n\t\t\t\t\t\t\t\t\tparseInt(m[4], 16) / 255\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t,\t'HEXA4':\tfunction(color) {\r\n\t\t\t\t\t\t\tvar m = /^([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])$/.exec(color);\r\n\t\t\t\t\t\t\tif (m) {\r\n\t\t\t\t\t\t\t\treturn new $.colorpicker.Color(\r\n\t\t\t\t\t\t\t\t parseInt(String(m[1]) + m[1], 16) / 255,\r\n\t\t\t\t\t\t\t\t parseInt(String(m[2]) + m[2], 16) / 255,\r\n\t\t\t\t\t\t\t\t parseInt(String(m[3]) + m[3], 16) / 255,\r\n\t\t\t\t\t\t\t\t parseInt(String(m[4]) + m[4], 16) / 255\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.partslists = {\r\n\t\t\t'full':\t\t\t['header', 'map', 'bar', 'hex', 'hsv', 'rgb', 'alpha', 'lab', 'cmyk', 'preview', 'swatches', 'footer'],\r\n\t\t\t'popup':\t\t['map', 'bar', 'hex', 'hsv', 'rgb', 'alpha', 'preview', 'footer'],\r\n\t\t\t'draggable':\t['header', 'map', 'bar', 'hex', 'hsv', 'rgb', 'alpha', 'preview', 'footer'],\r\n\t\t\t'inline':\t\t['map', 'bar', 'hex', 'hsv', 'rgb', 'alpha', 'preview']\r\n\t\t};\r\n\r\n\t\tthis.limits = {\r\n\t\t\t'websafe':\t\tfunction(color) {\r\n\t\t\t\t\t\t\t\tcolor.limit(6);\r\n\t\t\t\t\t\t\t},\r\n\t\t\t'nibble':\t\tfunction(color) {\r\n\t\t\t\t\t\t\t\tcolor.limit(16);\r\n\t\t\t\t\t\t\t},\r\n\t\t\t'binary':\t\tfunction(color) {\r\n\t\t\t\t\t\t\t\tcolor.limit(2);\r\n\t\t\t\t\t\t\t},\r\n\t\t\t'name':\t\t\tfunction(color, that) {\r\n\t\t\t\t\t\t\t\tvar swatch = that._getSwatch(that._closestName(color));\r\n\t\t\t\t\t\t\t\tcolor.setRGB(swatch.r, swatch.g, swatch.b);\r\n\t\t\t\t\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.parts = {\r\n\t\t\theader: function (inst) {\r\n\t\t\t\tvar that\t= this,\r\n\t\t\t\t\tpart\t= null,\r\n\t\t\t\t\t_html\t= function() {\r\n\t\t\t\t\t\tvar title = inst.options.title || inst._getRegional('title'),\r\n\t\t\t\t\t\t\thtml = '<span class=\"ui-dialog-title\">' + title + '</span>';\r\n\r\n\t\t\t\t\t\tif (!inst.inline && inst.options.showCloseButton) {\r\n\t\t\t\t\t\t\thtml += '<a href=\"#\" class=\"ui-dialog-titlebar-close ui-corner-all\" role=\"button\">'\r\n\t\t\t\t\t\t\t\t+ '<span class=\"ui-icon ui-icon-closethick\">close</span></a>';\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix\">' + html + '</div>';\r\n\t\t\t\t\t},\r\n\t\t\t\t\t_onclick = function(event) {\r\n\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\tinst.close(inst.options.revert);\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tthis.init = function() {\r\n\t\t\t\t\tpart = $(_html()).prependTo(inst.dialog);\r\n\r\n\t\t\t\t\tvar close = $('.ui-dialog-titlebar-close', part);\r\n\t\t\t\t\tinst._hoverable(close);\r\n\t\t\t\t\tinst._focusable(close);\r\n\t\t\t\t\tclose.on('click', _onclick);\r\n\r\n\t\t\t\t\tif (!inst.inline && inst.options.draggable) {\r\n\t\t\t\t\t\tvar draggableOptions = {\r\n\t\t\t\t\t\t\thandle: part,\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (inst.options.containment) {\r\n\t\t\t\t\t\t\tdraggableOptions.containment = inst.options.containment;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tinst.dialog.draggable(draggableOptions);\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.disable = function (disable) {\r\n\t\t\t\t\t$('.ui-dialog-titlebar-close', part)[disable ? 'off' : 'on']('click', _onclick);\r\n\t\t\t\t};\r\n\t\t\t},\r\n\r\n\t\t\tmap: function (inst) {\r\n\t\t\t\tvar that\t= this,\r\n\t\t\t\t\tpart\t= null,\r\n\t\t\t\t\tpointer, width, height, layers = {},\r\n\t\t\t\t\t_mousedown, _mouseup, _mousemove, _keydown, _html;\r\n\r\n\t\t\t\t_mousedown = function (event) {\r\n\t\t\t\t\tif (!inst.opened) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar offset\t= layers.p.offset(),\r\n\t\t\t\t\t\tx\t\t= event.pageX - offset.left,\r\n\t\t\t\t\t\ty\t\t= event.pageY - offset.top;\r\n\r\n\t\t\t\t\tif (x >= 0 && x < width && y >= 0 && y < height) {\r\n\t\t\t\t\t\tevent.stopImmediatePropagation();\r\n\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\tpart.off('mousedown', _mousedown).focus();\r\n\t\t\t\t\t\t$(document).on('mouseup', _mouseup);\r\n\t\t\t\t\t\t$(document).on('mousemove', _mousemove);\r\n\t\t\t\t\t\t_mousemove(event);\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\t_mouseup = function (event) {\r\n\t\t\t\t\tevent.stopImmediatePropagation();\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t$(document).off('mouseup', _mouseup);\r\n\t\t\t\t\t$(document).off('mousemove', _mousemove);\r\n\t\t\t\t\tpart.on('mousedown', _mousedown);\r\n\t\t\t\t\t\r\n\t\t\t\t\tinst._callback('stop');\r\n\t\t\t\t};\r\n\r\n\t\t\t\t_mousemove = function (event) {\r\n\t\t\t\t\tevent.stopImmediatePropagation();\r\n\t\t\t\t\tevent.preventDefault();\r\n\r\n\t\t\t\t\tif (event.pageX === that.x && event.pageY === that.y) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthat.x = event.pageX;\r\n\t\t\t\t\tthat.y = event.pageY;\r\n\r\n\t\t\t\t\tvar offset\t= layers.p.offset(),\r\n\t\t\t\t\t\tx\t\t= event.pageX - offset.left,\r\n\t\t\t\t\t\ty\t\t= event.pageY - offset.top;\r\n\r\n\t\t\t\t\tx = Math.max(0, Math.min(x / width, 1));\r\n\t\t\t\t\ty = Math.max(0, Math.min(y / height, 1));\r\n\r\n\t\t\t\t\t// interpret values\r\n\t\t\t\t\tswitch (inst.mode) {\r\n\t\t\t\t\t\tcase 'h':\r\n\t\t\t\t\t\t\tinst.color.setHSV(null, x, 1 - y);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 's':\r\n\t\t\t\t\t\tcase 'a':\r\n\t\t\t\t\t\t\tinst.color.setHSV(x, null, 1 - y);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'v':\r\n\t\t\t\t\t\t\tinst.color.setHSV(x, 1 - y, null);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'r':\r\n\t\t\t\t\t\t\tinst.color.setRGB(null, 1 - y, x);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'g':\r\n\t\t\t\t\t\t\tinst.color.setRGB(1 - y, null, x);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'b':\r\n\t\t\t\t\t\t\tinst.color.setRGB(x, 1 - y, null);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tinst._change(false);\r\n\t\t\t\t};\r\n\r\n\t\t\t\t_keydown = function(event) {\r\n\t\t\t\t\tvar x_channel_map = {\r\n\t\t\t\t\t\t\t'h': 's',\r\n\t\t\t\t\t\t\t's': 'h',\r\n\t\t\t\t\t\t\t'v': 'h',\r\n\t\t\t\t\t\t\t'r': 'b',\r\n\t\t\t\t\t\t\t'g': 'b',\r\n\t\t\t\t\t\t\t'b': 'r',\r\n\t\t\t\t\t\t\t'a': 'h'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tx_change = {\r\n\t\t\t\t\t\t\t37: -1,\r\n\t\t\t\t\t\t\t39: 1,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\ty_channel_map = {\r\n\t\t\t\t\t\t\t'h': 'v',\r\n\t\t\t\t\t\t\t's': 'v',\r\n\t\t\t\t\t\t\t'v': 's',\r\n\t\t\t\t\t\t\t'r': 'g',\r\n\t\t\t\t\t\t\t'g': 'r',\r\n\t\t\t\t\t\t\t'b': 'g',\r\n\t\t\t\t\t\t\t'a': 'v'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\ty_change = {\r\n\t\t\t\t\t\t\t38: 1,\r\n\t\t\t\t\t\t\t40: -1\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tset = {\r\n\t\t\t\t\t\t\t35: 0,\r\n\t\t\t\t\t\t\t36: 1\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tchange, value;\r\n\r\n\t\t\t\t\t\tif (typeof x_change[event.which] !== 'undefined') {\r\n\t\t\t\t\t\t\tvalue = inst.color.getChannel(x_channel_map[inst.mode]) * width;\r\n\t\t\t\t\t\t\tchange = x_change[event.which];\r\n\t\t\t\t\t\t\tif (event.shiftKey) {\r\n\t\t\t\t\t\t\t\tchange *= 10;\r\n\t\t\t\t\t\t\t} else if (event.ctrlKey || event.metaKey) {\r\n\t\t\t\t\t\t\t\tchange *= width;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tinst.color.setChannel(x_channel_map[inst.mode], (value + change) / width);\r\n\t\t\t\t\t\t\tinst._change(false);\r\n\t\t\t\t\t\t} else if (typeof y_change[event.which] !== 'undefined') {\r\n\t\t\t\t\t\t\tvalue = inst.color.getChannel(y_channel_map[inst.mode]) * height;\r\n\t\t\t\t\t\t\tchange = y_change[event.which];\r\n\t\t\t\t\t\t\tif (event.shiftKey) {\r\n\t\t\t\t\t\t\t\tchange *= 10;\r\n\t\t\t\t\t\t\t} else if (event.ctrlKey || event.metaKey) {\r\n\t\t\t\t\t\t\t\tchange *= height;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tinst.color.setChannel(y_channel_map[inst.mode], (value + change) / height);\r\n\t\t\t\t\t\t\tinst._change(false);\r\n\t\t\t\t\t\t} else if (typeof set[event.which] !== 'undefined') {\r\n\t\t\t\t\t\t\tinst.color.setChannel(x_channel_map[inst.mode], 1 - set[event.which]);\r\n\t\t\t\t\t\t\tinst.color.setChannel(y_channel_map[inst.mode], set[event.which]);\r\n\t\t\t\t\t\t\tinst._change(false);\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t}\t\t\t\t\t\r\n\t\t\t\t};\r\n\r\n\t\t\t\t_html = function () {\r\n\t\t\t\t\tvar html = '<div class=\"ui-colorpicker-map ui-colorpicker-map-'+(inst.options.part.map.size || 256)+' ui-colorpicker-border\" taonex=\"0\">'\r\n\t\t\t\t\t\t\t+ '<span class=\"ui-colorpicker-map-layer-1\"> </span>'\r\n\t\t\t\t\t\t\t+ '<span class=\"ui-colorpicker-map-layer-2\"> </span>'\r\n\t\t\t\t\t\t\t+ (inst.options.alpha ? '<span class=\"ui-colorpicker-map-layer-alpha\"> </span>' : '')\r\n\t\t\t\t\t\t\t+ '<span class=\"ui-colorpicker-map-layer-pointer\"><span class=\"ui-colorpicker-map-pointer\"></span></span></div>';\r\n\t\t\t\t\treturn html;\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.init = function () {\r\n\t\t\t\t\tpart = $(_html()).appendTo($('.ui-colorpicker-map-container', inst.dialog));\r\n\r\n\t\t\t\t\tpart.on('mousedown', _mousedown);\r\n\t\t\t\t\tpart.on('keydown', _keydown);\r\n\t\t\t\t\t\r\n\t\t\t\t\t// cache\t\t\t\t\t\r\n\t\t\t\t\tlayers[1]\t= $('.ui-colorpicker-map-layer-1', part);\r\n\t\t\t\t\tlayers[2]\t= $('.ui-colorpicker-map-layer-2', part);\r\n\t\t\t\t\tlayers.a\t= $('.ui-colorpicker-map-layer-alpha', part);\r\n\t\t\t\t\tlayers.p\t= $('.ui-colorpicker-map-layer-pointer', part);\r\n\t\t\t\t\twidth\t\t= layers.p.width();\r\n\t\t\t\t\theight\t\t= layers.p.height();\r\n\t\t\t\t\t\r\n\t\t\t\t\tpointer\t\t= $('.ui-colorpicker-map-pointer', part);\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.update = function () {\r\n\t\t\t\t\tvar step = ((inst.options.part.map.size || 256) * 65 / 64);\r\n\r\n\t\t\t\t\tswitch (inst.mode) {\r\n\t\t\t\t\t\tcase 'h':\r\n\t\t\t\t\t\t\tlayers[1].css({'background-position': '0 0', 'opacity': ''}).show();\r\n\t\t\t\t\t\t\tlayers[2].hide();\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 's':\r\n\t\t\t\t\t\tcase 'a':\r\n\t\t\t\t\t\t\tlayers[1].css({'background-position': '0 ' + (-step) + 'px', 'opacity': ''}).show();\r\n\t\t\t\t\t\t\tlayers[2].css({'background-position': '0 ' + (-step * 2) + 'px', 'opacity': ''}).show();\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'v':\r\n\t\t\t\t\t\t\tpart.css('background-color', 'black');\r\n\t\t\t\t\t\t\tlayers[1].css({'background-position': '0 ' + (-step * 3) + 'px', 'opacity': ''}).show();\r\n\t\t\t\t\t\t\tlayers[2].hide();\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'r':\r\n\t\t\t\t\t\t\tlayers[1].css({'background-position': '0 ' + (-step * 4) + 'px', 'opacity': ''}).show();\r\n\t\t\t\t\t\t\tlayers[2].css({'background-position': '0 ' + (-step * 5) + 'px', 'opacity': ''}).show();\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'g':\r\n\t\t\t\t\t\t\tlayers[1].css({'background-position': '0 ' + (-step * 6) + 'px', 'opacity': ''}).show();\r\n\t\t\t\t\t\t\tlayers[2].css({'background-position': '0 ' + (-step * 7) + 'px', 'opacity': ''}).show();\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'b':\r\n\t\t\t\t\t\t\tlayers[1].css({'background-position': '0 ' + (-step * 8) + 'px', 'opacity': ''}).show();\r\n\t\t\t\t\t\t\tlayers[2].css({'background-position': '0 ' + (-step * 9) + 'px', 'opacity': ''}).show();\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthat.repaint();\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.repaint = function () {\r\n\t\t\t\t\tvar x = 0,\r\n\t\t\t\t\t\ty = 0;\r\n\r\n\t\t\t\t\tswitch (inst.mode) {\r\n\t\t\t\t\t\tcase 'h':\r\n\t\t\t\t\t\t\tvar hsv = inst.color.getHSV();\r\n\t\t\t\t\t\t\tx = hsv.s * width;\r\n\t\t\t\t\t\t\ty = (1 - hsv.v) * width;\r\n\t\t\t\t\t\t\tpart.css('background-color', inst.color.copy().setHSV(null, 1, 1).toCSS());\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 's':\r\n\t\t\t\t\t\tcase 'a':\r\n\t\t\t\t\t\t\tvar hsv = inst.color.getHSV();\r\n\t\t\t\t\t\t\tx = hsv.h * width;\r\n\t\t\t\t\t\t\ty = (1 - hsv.v) * width;\r\n\t\t\t\t\t\t\tlayers[2].css('opacity', 1 - hsv.s);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'v':\r\n\t\t\t\t\t\t\tvar hsv = inst.color.getHSV();\r\n\t\t\t\t\t\t\tx = hsv.h * width;\r\n\t\t\t\t\t\t\ty = (1 - hsv.s) * width;\r\n\t\t\t\t\t\t\tlayers[1].css('opacity', hsv.v);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'r':\r\n\t\t\t\t\t\t\tvar rgb = inst.color.getRGB()\r\n\t\t\t\t\t\t\tx = rgb.b * width;\r\n\t\t\t\t\t\t\ty = (1 - rgb.g) * width;\r\n\t\t\t\t\t\t\tlayers[2].css('opacity', rgb.r);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'g':\r\n\t\t\t\t\t\t\tvar rgb = inst.color.getRGB();\r\n\t\t\t\t\t\t\tx = rgb.b * width;\r\n\t\t\t\t\t\t\ty = (1 - rgb.r) * width;\r\n\t\t\t\t\t\t\tlayers[2].css('opacity', rgb.g);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'b':\r\n\t\t\t\t\t\t\tvar rgb = inst.color.getRGB()\r\n\t\t\t\t\t\t\tx = rgb.r * width;\r\n\t\t\t\t\t\t\ty = (1 - rgb.g) * width;\r\n\t\t\t\t\t\t\tlayers[2].css('opacity', rgb.b);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (inst.options.alpha) {\r\n\t\t\t\t\t\tlayers.a.css('opacity', 1 - inst.color.getAlpha());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tpointer.css({\r\n\t\t\t\t\t\t'left': x - 7,\r\n\t\t\t\t\t\t'top': y - 7\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.disable = function (disable) {\r\n\t\t\t\t\tpart[disable ? 'off' : 'on']('mousedown', _mousedown);\r\n\t\t\t\t\tpart[disable ? 'off' : 'on']('keydown', _keydown);\r\n\t\t\t\t};\r\n\t\t\t},\r\n\r\n\t\t\tbar: function (inst) {\r\n\t\t\t\tvar that\t\t= this,\r\n\t\t\t\t\tpart\t\t= null,\r\n\t\t\t\t\tpointer, width, height, layers = {},\r\n\t\t\t\t\t_mousedown, _mouseup, _mousemove, _keydown, _html;\r\n\r\n\t\t\t\t_mousedown = function (event) {\r\n\t\t\t\t\tif (!inst.opened) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar offset\t= layers.p.offset(),\r\n\t\t\t\t\t\tx\t\t= event.pageX - offset.left,\r\n\t\t\t\t\t\ty\t\t= event.pageY - offset.top;\r\n\r\n\t\t\t\t\tif (x >= 0 && x < width && y >= 0 && y < height) {\r\n\t\t\t\t\t\tevent.stopImmediatePropagation();\r\n\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\tpart.off('mousedown', _mousedown).focus();\r\n\t\t\t\t\t\t$(document).on('mouseup', _mouseup);\r\n\t\t\t\t\t\t$(document).on('mousemove', _mousemove);\r\n\t\t\t\t\t\t_mousemove(event);\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\t_mouseup = function (event) {\r\n\t\t\t\t\tevent.stopImmediatePropagation();\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t$(document).off('mouseup', _mouseup);\r\n\t\t\t\t\t$(document).off('mousemove', _mousemove);\r\n\t\t\t\t\tpart.on('mousedown', _mousedown);\r\n\t\t\t\t\t\r\n\t\t\t\t\tinst._callback('stop');\t\t\t\t\t\r\n\t\t\t\t};\r\n\r\n\t\t\t\t_mousemove = function (event) {\r\n\t\t\t\t\tevent.stopImmediatePropagation();\r\n\t\t\t\t\tevent.preventDefault();\r\n\r\n\t\t\t\t\tif (event.pageY === that.y) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthat.y = event.pageY;\r\n\r\n\t\t\t\t\tvar offset = layers.p.offset(),\r\n\t\t\t\t\t\ty\t\t= event.pageY - offset.top;\r\n\r\n\t\t\t\t\ty = Math.max(0, Math.min(y / height, 1));\r\n\r\n\t\t\t\t\t// interpret values\r\n\t\t\t\t\tswitch (inst.mode) {\r\n\t\t\t\t\t\tcase 'h':\r\n\t\t\t\t\t\t\tinst.color.setHSV(1 - y, null, null);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 's':\r\n\t\t\t\t\t\t\tinst.color.setHSV(null, 1 - y, null);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'v':\r\n\t\t\t\t\t\t\tinst.color.setHSV(null, null, 1 - y);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'r':\r\n\t\t\t\t\t\t\tinst.color.setRGB(1 - y, null, null);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'g':\r\n\t\t\t\t\t\t\tinst.color.setRGB(null, 1 - y, null);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'b':\r\n\t\t\t\t\t\t\tinst.color.setRGB(null, null, 1 - y);\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'a':\r\n\t\t\t\t\t\t\tinst.color.setAlpha(1 - y);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tinst._change(false);\r\n\t\t\t\t};\r\n\t\t\t\t\r\n\t\t\t\t_keydown = function(event) {\r\n\t\t\t\t\tvar change = {\r\n\t\t\t\t\t\t\t38: 1,\r\n\t\t\t\t\t\t\t40: -1,\r\n\t\t\t\t\t\t\t33: 10,\r\n\t\t\t\t\t\t\t34: -10\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tset = {\r\n\t\t\t\t\t\t\t35: 0,\r\n\t\t\t\t\t\t\t36: 1\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tchange, value;\r\n\r\n\t\t\t\t\tif (typeof change[event.which] !== 'undefined') {\r\n\t\t\t\t\t\tvalue = inst.color.getChannel(inst.mode) * height;\r\n\t\t\t\t\t\tchange = change[event.which];\r\n\t\t\t\t\t\tif (event.shiftKey) {\r\n\t\t\t\t\t\t\tchange *= 10;\r\n\t\t\t\t\t\t} else if (event.ctrlKey || event.metaKey) {\r\n\t\t\t\t\t\t\tchange *= height;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tinst.color.setChannel(inst.mode, (value + change) / height);\r\n\t\t\t\t\t\tinst._change(false);\r\n\t\t\t\t\t} else if (typeof set[event.which] !== 'undefined') {\r\n\t\t\t\t\t\tinst.color.setChannel(inst.mode, set[event.which]);\r\n\t\t\t\t\t\tinst._change(false);\t\t\t\t\t\t\t\r\n\t\t\t\t\t}\t\t\t\t\t\r\n\t\t\t\t};\r\n\r\n\t\t\t\t_html = function () {\r\n\t\t\t\t\tvar html = '<div class=\"ui-colorpicker-bar ui-colorpicker-bar-'+(inst.options.part.bar.size || 256)+' ui-colorpicker-border\" taonex=\"0\">'\r\n\t\t\t\t\t\t\t+ '<span class=\"ui-colorpicker-bar-layer-1\"> </span>'\r\n\t\t\t\t\t\t\t+ '<span class=\"ui-colorpicker-bar-layer-2\"> </span>'\r\n\t\t\t\t\t\t\t+ '<span class=\"ui-colorpicker-bar-layer-3\"> </span>'\r\n\t\t\t\t\t\t\t+ '<span class=\"ui-colorpicker-bar-layer-4\"> </span>';\r\n\r\n\t\t\t\t\tif (inst.options.alpha) {\r\n\t\t\t\t\t\thtml += '<span class=\"ui-colorpicker-bar-layer-alpha\"> </span>'\r\n\t\t\t\t\t\t\t+ '<span class=\"ui-colorpicker-bar-layer-alphabar\"> </span>';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\thtml += '<span class=\"ui-colorpicker-bar-layer-pointer\"><span class=\"ui-colorpicker-bar-pointer\"></span></span></div>';\r\n\r\n\t\t\t\t\treturn html;\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.init = function () {\r\n\t\t\t\t\tpart = $(_html()).appendTo($('.ui-colorpicker-bar-container', inst.dialog));\r\n\r\n\t\t\t\t\tpart.on('mousedown', _mousedown);\r\n\t\t\t\t\tpart.on('keydown', _keydown);\r\n\t\t\t\t\t\r\n\t\t\t\t\t// cache\t\t\t\t\r\n\t\t\t\t\tlayers[1]\t= $('.ui-colorpicker-bar-layer-1', part);\r\n\t\t\t\t\tlayers[2]\t= $('.ui-colorpicker-bar-layer-2', part);\r\n\t\t\t\t\tlayers[3]\t= $('.ui-colorpicker-bar-layer-3', part);\r\n\t\t\t\t\tlayers[4]\t= $('.ui-colorpicker-bar-layer-4', part);\r\n\t\t\t\t\tlayers.a\t= $('.ui-colorpicker-bar-layer-alpha', part);\r\n\t\t\t\t\tlayers.ab\t= $('.ui-colorpicker-bar-layer-alphabar', part);\r\n\t\t\t\t\tlayers.p\t= $('.ui-colorpicker-bar-layer-pointer', part);\r\n\t\t\t\t\twidth\t\t= layers.p.width();\r\n\t\t\t\t\theight\t\t= layers.p.height();\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\tpointer\t\t= $('.ui-colorpicker-bar-pointer', part);\r\n\t\t\t\t};\r\n\t\t\t\t\r\n\t\t\t\tthis.update = function () {\r\n\t\t\t\t\tvar step = ((inst.options.part.bar.size || 256) * 65 / 64);\r\n\r\n\t\t\t\t\tswitch (inst.mode) {\r\n\t\t\t\t\t\tcase 'h':\r\n\t\t\t\t\t\tcase 's':\r\n\t\t\t\t\t\tcase 'v':\r\n\t\t\t\t\t\tcase 'r':\r\n\t\t\t\t\t\tcase 'g':\r\n\t\t\t\t\t\tcase 'b':\r\n\t\t\t\t\t\t\tlayers.a.show();\r\n\t\t\t\t\t\t\tlayers.ab.hide();\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'a':\r\n\t\t\t\t\t\t\tlayers.a.hide();\r\n\t\t\t\t\t\t\tlayers.ab.show();\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tswitch (inst.mode) {\r\n\t\t\t\t\t\tcase 'h':\r\n\t\t\t\t\t\t\tlayers[1].css({'background-position': '0 0', 'opacity': ''}).show();\r\n\t\t\t\t\t\t\tlayers[2].hide();\r\n\t\t\t\t\t\t\tlayers[3].hide();\r\n\t\t\t\t\t\t\tlayers[4].hide();\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 's':\r\n\t\t\t\t\t\t\tlayers[1].css({'background-position': '0 ' + (-step) + 'px', 'opacity': ''}).show();\r\n\t\t\t\t\t\t\tlayers[2].css({'background-position': '0 ' + (-step * 2) + 'px', 'opacity': ''}).show();\r\n\t\t\t\t\t\t\tlayers[3].hide();\r\n\t\t\t\t\t\t\tlayers[4].hide();\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'v':\r\n\t\t\t\t\t\t\tlayers[1].css({'background-position': '0 ' + (-step * 2) + 'px', 'opacity': ''}).show();\r\n\t\t\t\t\t\t\tlayers[2].hide();\r\n\t\t\t\t\t\t\tlayers[3].hide();\r\n\t\t\t\t\t\t\tlayers[4].hide();\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'r':\r\n\t\t\t\t\t\t\tlayers[1].css({'background-position': '0 ' + (-step * 6) + 'px', 'opacity': ''}).show();\r\n\t\t\t\t\t\t\tlayers[2].css({'background-position': '0 ' + (-step * 5) + 'px', 'opacity': ''}).show();\r\n\t\t\t\t\t\t\tlayers[3].css({'background-position': '0 ' + (-step * 3) + 'px', 'opacity': ''}).show();\r\n\t\t\t\t\t\t\tlayers[4].css({'background-position': '0 ' + (-step * 4) + 'px', 'opacity': ''}).show();\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'g':\r\n\t\t\t\t\t\t\tlayers[1].css({'background-position': '0 ' + (-step * 10) + 'px', 'opacity': ''}).show();\r\n\t\t\t\t\t\t\tlayers[2].css({'background-position': '0 ' + (-step * 9) + 'px', 'opacity': ''}).show();\r\n\t\t\t\t\t\t\tlayers[3].css({'background-position': '0 ' + (-step * 7) + 'px', 'opacity': ''}).show();\r\n\t\t\t\t\t\t\tlayers[4].css({'background-position': '0 ' + (-step * 8) + 'px', 'opacity': ''}).show();\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'b':\r\n\t\t\t\t\t\t\tlayers[1].css({'background-position': '0 ' + (-step * 14) + 'px', 'opacity': ''}).show();\r\n\t\t\t\t\t\t\tlayers[2].css({'background-position': '0 ' + (-step * 13) + 'px', 'opacity': ''}).show();\r\n\t\t\t\t\t\t\tlayers[3].css({'background-position': '0 ' + (-step * 11) + 'px', 'opacity': ''}).show();\r\n\t\t\t\t\t\t\tlayers[4].css({'background-position': '0 ' + (-step * 12) + 'px', 'opacity': ''}).show();\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'a':\r\n\t\t\t\t\t\t\tlayers[1].hide();\r\n\t\t\t\t\t\t\tlayers[2].hide();\r\n\t\t\t\t\t\t\tlayers[3].hide();\r\n\t\t\t\t\t\t\tlayers[4].hide();\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthat.repaint();\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.repaint = function () {\r\n\t\t\t\t\tvar y = 0;\r\n\r\n\t\t\t\t\tswitch (inst.mode) {\r\n\t\t\t\t\t\tcase 'h':\r\n\t\t\t\t\t\t\ty = (1 - inst.color.getHSV().h) * height;\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 's':\r\n\t\t\t\t\t\t\tvar hsv = inst.color.getHSV();\r\n\t\t\t\t\t\t\ty = (1 - hsv.s) * height;\r\n\t\t\t\t\t\t\tlayers[2].css('opacity', 1 - hsv.v);\r\n\t\t\t\t\t\t\tpart.css('background-color', inst.color.copy().setHSV(null, 1, null).toCSS());\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'v':\r\n\t\t\t\t\t\t\ty = (1 - inst.color.getHSV().v) * height;\r\n\t\t\t\t\t\t\tpart.css('background-color', inst.color.copy().setHSV(null, null, 1).toCSS());\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'r':\r\n\t\t\t\t\t\t\tvar rgb = inst.color.getRGB();\r\n\t\t\t\t\t\t\ty = (1 - rgb.r) * height;\r\n\t\t\t\t\t\t\tlayers[2].css('opacity', Math.max(0, (rgb.b - rgb.g)));\r\n\t\t\t\t\t\t\tlayers[3].css('opacity', Math.max(0, (rgb.g - rgb.b)));\r\n\t\t\t\t\t\t\tlayers[4].css('opacity', Math.min(rgb.b, rgb.g));\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'g':\r\n\t\t\t\t\t\t\tvar rgb = inst.color.getRGB();\r\n\t\t\t\t\t\t\ty = (1 - rgb.g) * height;\r\n\t\t\t\t\t\t\tlayers[2].css('opacity', Math.max(0, (rgb.b - rgb.r)));\r\n\t\t\t\t\t\t\tlayers[3].css('opacity', Math.max(0, (rgb.r - rgb.b)));\r\n\t\t\t\t\t\t\tlayers[4].css('opacity', Math.min(rgb.r, rgb.b));\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'b':\r\n\t\t\t\t\t\t\tvar rgb = inst.color.getRGB();\r\n\t\t\t\t\t\t\ty = (1 - rgb.b) * height;\r\n\t\t\t\t\t\t\tlayers[2].css('opacity', Math.max(0, (rgb.r - rgb.g)));\r\n\t\t\t\t\t\t\tlayers[3].css('opacity', Math.max(0, (rgb.g - rgb.r)));\r\n\t\t\t\t\t\t\tlayers[4].css('opacity', Math.min(rgb.r, rgb.g));\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase 'a':\r\n\t\t\t\t\t\t\ty = (1 - inst.color.getAlpha()) * height;\r\n\t\t\t\t\t\t\tpart.css('background-color', inst.color.copy().toCSS());\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (inst.mode !== 'a') {\r\n\t\t\t\t\t\tlayers.a.css('opacity', 1 - inst.color.getAlpha());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tpointer.css('top', y - 3);\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.disable = function (disable) {\r\n\t\t\t\t\tpart[disable ? 'off' : 'on']('mousedown', _mousedown);\r\n\t\t\t\t\tpart[disable ? 'off' : 'on']('keydown', _keydown);\r\n\t\t\t\t};\r\n\t\t\t},\r\n\r\n\t\t\tpreview: function (inst) {\r\n\t\t\t\tvar that = this,\r\n\t\t\t\t\tpart = null,\r\n\t\t\t\t\tboth,\r\n\t\t\t\t\tinitial, initial_alpha,\r\n\t\t\t\t\tcurrent, current_alpha,\r\n\t\t\t\t\t_html,\r\n\t\t\t\t\tonclick = function () {\r\n\t\t\t\t\t\tinst.color = inst.currentColor.copy();\r\n\t\t\t\t\t\tinst._change();\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t_html = function () {\r\n\t\t\t\t\treturn '<div class=\"ui-colorpicker-preview ui-colorpicker-border\">'\r\n\t\t\t\t\t\t+ '<div class=\"ui-colorpicker-preview-initial\"><div class=\"ui-colorpicker-preview-initial-alpha\"></div></div>'\r\n\t\t\t\t\t\t+ '<div class=\"ui-colorpicker-preview-current\"><div class=\"ui-colorpicker-preview-current-alpha\"></div></div>'\r\n\t\t\t\t\t\t+ '</div>';\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.init = function () {\r\n\t\t\t\t\tpart = $(_html()).appendTo($('.ui-colorpicker-preview-container', inst.dialog));\r\n\r\n\t\t\t\t\t$('.ui-colorpicker-preview-initial', part).on('click', onclick);\r\n\r\n\t\t\t\t\t// cache\r\n\t\t\t\t\tinitial\t\t\t= $('.ui-colorpicker-preview-initial', part);\r\n\t\t\t\t\tinitial_alpha\t= $('.ui-colorpicker-preview-initial-alpha', part);\r\n\t\t\t\t\tcurrent\t\t\t= $('.ui-colorpicker-preview-current', part);\r\n\t\t\t\t\tcurrent_alpha\t= $('.ui-colorpicker-preview-current-alpha', part);\r\n\t\t\t\t\tboth\t\t\t= $('.ui-colorpicker-preview-initial-alpha, .ui-colorpicker-preview-current-alpha', part);\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.update = function () {\r\n\t\t\t\t\tboth[inst.options.alpha ? 'show' : 'hide']();\r\n\r\n\t\t\t\t\tthis.repaint();\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.repaint = function () {\r\n\t\t\t\t\tinitial.css('background-color', inst.currentColor.set ? inst.currentColor.toCSS() : '').attr('title', inst.currentColor.set ? inst.currentColor.toCSS() : '');\r\n\t\t\t\t\tinitial_alpha.css('opacity', 1 - inst.currentColor.getAlpha());\r\n\t\t\t\t\tcurrent.css('background-color', inst.color.set ? inst.color.toCSS() : '').attr('title', inst.color.set ? inst.color.toCSS() : '');\r\n\t\t\t\t\tcurrent_alpha.css('opacity', 1 - inst.color.getAlpha());\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.disable = function (disable) {\r\n\t\t\t\t\t$('.ui-colorpicker-preview-initial', part)[disable ? 'off' : 'on']('click', onclick);\r\n\t\t\t\t};\r\n\t\t\t},\r\n\r\n\t\t\thsv: function (inst) {\r\n\t\t\t\tvar that = this,\r\n\t\t\t\t\tpart = null,\r\n\t\t\t\t\tinputs = {},\r\n\t\t\t\t\t_html;\r\n\r\n\t\t\t\t_html = function () {\r\n\t\t\t\t\tvar html = '';\r\n\r\n\t\t\t\t\tif (inst.options.hsv) {\r\n\t\t\t\t\t\thtml +=\t'<div class=\"ui-colorpicker-hsv-h\"><input class=\"ui-colorpicker-mode\" type=\"radio\" value=\"h\"/><label>' + inst._getRegional('hsvH') + '</label><input class=\"ui-colorpicker-number\" type=\"number\" min=\"0\" max=\"360\" size=\"10\"/><span class=\"ui-colorpicker-unit\">°</span></div>'\r\n\t\t\t\t\t\t\t+ '<div class=\"ui-colorpicker-hsv-s\"><input class=\"ui-colorpicker-mode\" type=\"radio\" value=\"s\"/><label>' + inst._getRegional('hsvS') + '</label><input class=\"ui-colorpicker-number\" type=\"number\" min=\"0\" max=\"100\" size=\"10\"/><span class=\"ui-colorpicker-unit\">%</span></div>'\r\n\t\t\t\t\t\t\t+ '<div class=\"ui-colorpicker-hsv-v\"><input class=\"ui-colorpicker-mode\" type=\"radio\" value=\"v\"/><label>' + inst._getRegional('hsvV') + '</label><input class=\"ui-colorpicker-number\" type=\"number\" min=\"0\" max=\"100\" size=\"10\"/><span class=\"ui-colorpicker-unit\">%</span></div>';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn '<div class=\"ui-colorpicker-hsv\">' + html + '</div>';\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.init = function () {\r\n\t\t\t\t\tpart = $(_html()).appendTo($('.ui-colorpicker-hsv-container', inst.dialog));\r\n\r\n\t\t\t\t\t$('.ui-colorpicker-mode', part).click(function () {\r\n\t\t\t\t\t\tinst.mode = $(this).val();\r\n\t\t\t\t\t\tinst._updateAllParts();\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tinputs.h = $('.ui-colorpicker-hsv-h .ui-colorpicker-number', part);\r\n\t\t\t\t\tinputs.s = $('.ui-colorpicker-hsv-s .ui-colorpicker-number', part);\r\n\t\t\t\t\tinputs.v = $('.ui-colorpicker-hsv-v .ui-colorpicker-number', part);\r\n\r\n\t\t\t\t\t$('.ui-colorpicker-number', part).on('change keyup', function () {\r\n\t\t\t\t\t\tinst.color.setHSV(\r\n\t\t\t\t\t\t\tinputs.h.val() / 360,\r\n\t\t\t\t\t\t\tinputs.s.val() / 100,\r\n\t\t\t\t\t\t\tinputs.v.val() / 100\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tinst._change();\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.repaint = function () {\r\n\t\t\t\t\tvar hsv = inst.color.getHSV();\r\n\t\t\t\t\tinputs.h.val(Math.round(hsv.h * 360));\r\n\t\t\t\t\tinputs.s.val(Math.round(hsv.s * 100));\r\n\t\t\t\t\tinputs.v.val(Math.round(hsv.v * 100));\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.update = function () {\r\n\t\t\t\t\t$('.ui-colorpicker-mode', part).each(function () {\r\n\t\t\t\t\t\tvar $this = $(this);\r\n\t\t\t\t\t\t$this.prop('checked', $this.val() === inst.mode);\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis.repaint();\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.disable = function (disable) {\r\n\t\t\t\t\t$(':input', part).prop('disabled', disable);\r\n\t\t\t\t};\r\n\t\t\t},\r\n\r\n\t\t\trgb: function (inst) {\r\n\t\t\t\tvar that = this,\r\n\t\t\t\t\tpart = null,\r\n\t\t\t\t\tinputs = {},\r\n\t\t\t\t\t_html;\r\n\r\n\t\t\t\t_html = function () {\r\n\t\t\t\t\tvar html = '';\r\n\r\n\t\t\t\t\tif (inst.options.rgb) {\r\n\t\t\t\t\t\thtml += '<div class=\"ui-colorpicker-rgb-r\"><input class=\"ui-colorpicker-mode\" type=\"radio\" value=\"r\"/><label>' + inst._getRegional('rgbR') + '</label><input class=\"ui-colorpicker-number\" type=\"number\" min=\"0\" max=\"255\"/></div>'\r\n\t\t\t\t\t\t\t+ '<div class=\"ui-colorpicker-rgb-g\"><input class=\"ui-colorpicker-mode\" type=\"radio\" value=\"g\"/><label>' + inst._getRegional('rgbG') + '</label><input class=\"ui-colorpicker-number\" type=\"number\" min=\"0\" max=\"255\"/></div>'\r\n\t\t\t\t\t\t\t+ '<div class=\"ui-colorpicker-rgb-b\"><input class=\"ui-colorpicker-mode\" type=\"radio\" value=\"b\"/><label>' + inst._getRegional('rgbB') + '</label><input class=\"ui-colorpicker-number\" type=\"number\" min=\"0\" max=\"255\"/></div>';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn '<div class=\"ui-colorpicker-rgb\">' + html + '</div>';\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.init = function () {\r\n\t\t\t\t\tpart = $(_html()).appendTo($('.ui-colorpicker-rgb-container', inst.dialog));\r\n\r\n\t\t\t\t\t$('.ui-colorpicker-mode', part).click(function () {\r\n\t\t\t\t\t\tinst.mode = $(this).val();\r\n\t\t\t\t\t\tinst._updateAllParts();\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tinputs.r = $('.ui-colorpicker-rgb-r .ui-colorpicker-number', part);\r\n\t\t\t\t\tinputs.g = $('.ui-colorpicker-rgb-g .ui-colorpicker-number', part);\r\n\t\t\t\t\tinputs.b = $('.ui-colorpicker-rgb-b .ui-colorpicker-number', part);\r\n\r\n\t\t\t\t\t$('.ui-colorpicker-number', part).on('change keyup', function () {\r\n\t\t\t\t\t\tvar r = $('.ui-colorpicker-rgb-r .ui-colorpicker-number', part).val();\r\n\t\t\t\t\t\tinst.color.setRGB(\r\n\t\t\t\t\t\t\tinputs.r.val() / 255,\r\n\t\t\t\t\t\t\tinputs.g.val() / 255,\r\n\t\t\t\t\t\t\tinputs.b.val() / 255\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tinst._change();\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.repaint = function () {\r\n\t\t\t\t\tvar rgb = inst.color.getRGB();\r\n\t\t\t\t\tinputs.r.val(Math.round(rgb.r * 255));\r\n\t\t\t\t\tinputs.g.val(Math.round(rgb.g * 255));\r\n\t\t\t\t\tinputs.b.val(Math.round(rgb.b * 255));\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.update = function () {\r\n\t\t\t\t\t$('.ui-colorpicker-mode', part).each(function () {\r\n\t\t\t\t\t\tvar $this = $(this);\r\n\t\t\t\t\t\t$this.prop('checked', $this.val() === inst.mode);\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis.repaint();\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.disable = function (disable) {\r\n\t\t\t\t\t$(':input', part).prop('disabled', disable);\r\n\t\t\t\t};\r\n\t\t\t},\r\n\r\n\t\t\tlab: function (inst) {\r\n\t\t\t\tvar that = this,\r\n\t\t\t\t\tpart = null,\r\n\t\t\t\t\tinputs = {},\r\n\t\t\t\t\thtml = function () {\r\n\t\t\t\t\t\tvar html = '';\r\n\r\n\t\t\t\t\t\tif (inst.options.hsv) {\r\n\t\t\t\t\t\t\thtml +=\t'<div class=\"ui-colorpicker-lab-l\"><label>' + inst._getRegional('labL') + '</label><input class=\"ui-colorpicker-number\" type=\"number\" min=\"0\" max=\"100\"/></div>'\r\n\t\t\t\t\t\t\t\t+ '<div class=\"ui-colorpicker-lab-a\"><label>' + inst._getRegional('labA') + '</label><input class=\"ui-colorpicker-number\" type=\"number\" min=\"-128\" max=\"127\"/></div>'\r\n\t\t\t\t\t\t\t\t+ '<div class=\"ui-colorpicker-lab-b\"><label>' + inst._getRegional('labB') + '</label><input class=\"ui-colorpicker-number\" type=\"number\" min=\"-128\" max=\"127\"/></div>';\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn '<div class=\"ui-colorpicker-lab\">' + html + '</div>';\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tthis.init = function () {\r\n\t\t\t\t\tvar data = 0;\r\n\r\n\t\t\t\t\tpart = $(html()).appendTo($('.ui-colorpicker-lab-container', inst.dialog));\r\n\t\t\t\t\t\r\n\t\t\t\t\tinputs.l = $('.ui-colorpicker-lab-l .ui-colorpicker-number', part);\r\n\t\t\t\t\tinputs.a = $('.ui-colorpicker-lab-a .ui-colorpicker-number', part);\r\n\t\t\t\t\tinputs.b = $('.ui-colorpicker-lab-b .ui-colorpicker-number', part);\r\n\r\n\t\t\t\t\t$('.ui-colorpicker-number', part).on('change keyup', function (event) {\r\n\t\t\t\t\t\tinst.color.setLAB(\r\n\t\t\t\t\t\t\tparseInt(inputs.l.val(), 10) / 100,\r\n\t\t\t\t\t\t\t(parseInt(inputs.a.val(), 10) + 128) / 255,\r\n\t\t\t\t\t\t\t(parseInt(inputs.b.val(), 10) + 128) / 255\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tinst._change();\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.repaint = function () {\r\n\t\t\t\t\tvar lab = inst.color.getLAB();\r\n\t\t\t\t\tinputs.l.val(Math.round(lab.l * 100));\r\n\t\t\t\t\tinputs.a.val(Math.round(lab.a * 255) - 128);\r\n\t\t\t\t\tinputs.b.val(Math.round(lab.b * 255) - 128);\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.update = this.repaint;\r\n\t\t\t\t\r\n\t\t\t\tthis.disable = function (disable) {\r\n\t\t\t\t\t$(':input', part).prop('disabled', disable);\r\n\t\t\t\t};\r\n\t\t\t},\r\n\r\n\t\t\tcmyk: function (inst) {\r\n\t\t\t\tvar that = this,\r\n\t\t\t\t\tpart = null,\r\n\t\t\t\t\tinputs = {},\r\n\t\t\t\t\thtml = function () {\r\n\t\t\t\t\t\tvar html = '';\r\n\r\n\t\t\t\t\t\tif (inst.options.hsv) {\r\n\t\t\t\t\t\t\thtml +=\t'<div class=\"ui-colorpicker-cmyk-c\"><label>' + inst._getRegional('cmykC') + '</label><input class=\"ui-colorpicker-number\" type=\"number\" min=\"0\" max=\"100\"/><span class=\"ui-colorpicker-unit\">%</span></div>'\r\n\t\t\t\t\t\t\t\t+ '<div class=\"ui-colorpicker-cmyk-m\"><label>' + inst._getRegional('cmykM') + '</label><input class=\"ui-colorpicker-number\" type=\"number\" min=\"0\" max=\"100\"/><span class=\"ui-colorpicker-unit\">%</span></div>'\r\n\t\t\t\t\t\t\t\t+ '<div class=\"ui-colorpicker-cmyk-y\"><label>' + inst._getRegional('cmykY') + '</label><input class=\"ui-colorpicker-number\" type=\"number\" min=\"0\" max=\"100\"/><span class=\"ui-colorpicker-unit\">%</span></div>'\r\n\t\t\t\t\t\t\t\t+ '<div class=\"ui-colorpicker-cmyk-k\"><label>' + inst._getRegional('cmykK') + '</label><input class=\"ui-colorpicker-number\" type=\"number\" min=\"0\" max=\"100\"/><span class=\"ui-colorpicker-unit\">%</span></div>';\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn '<div class=\"ui-colorpicker-cmyk\">' + html + '</div>';\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tthis.init = function () {\r\n\t\t\t\t\tpart = $(html()).appendTo($('.ui-colorpicker-cmyk-container', inst.dialog));\r\n\t\t\t\t\t\r\n\t\t\t\t\tinputs.c = $('.ui-colorpicker-cmyk-c .ui-colorpicker-number', part);\r\n\t\t\t\t\tinputs.m = $('.ui-colorpicker-cmyk-m .ui-colorpicker-number', part);\r\n\t\t\t\t\tinputs.y = $('.ui-colorpicker-cmyk-y .ui-colorpicker-number', part);\r\n\t\t\t\t\tinputs.k = $('.ui-colorpicker-cmyk-k .ui-colorpicker-number', part);\r\n\t\t\t\t\t\r\n\t\t\t\t\t$('.ui-colorpicker-number', part).on('change keyup', function (event) {\r\n\t\t\t\t\t\tinst.color.setCMYK(\r\n\t\t\t\t\t\t\tparseInt(inputs.c.val(), 10) / 100,\r\n\t\t\t\t\t\t\tparseInt(inputs.m.val(), 10) / 100,\r\n\t\t\t\t\t\t\tparseInt(inputs.y.val(), 10) / 100,\r\n\t\t\t\t\t\t\tparseInt(inputs.k.val(), 10) / 100\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tinst._change();\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.repaint = function () {\r\n\t\t\t\t\tvar cmyk = inst.color.getCMYK();\r\n\t\t\t\t\tinputs.c.val(Math.round(cmyk.c * 100));\r\n\t\t\t\t\tinputs.m.val(Math.round(cmyk.m * 100));\r\n\t\t\t\t\tinputs.y.val(Math.round(cmyk.y * 100));\r\n\t\t\t\t\tinputs.k.val(Math.round(cmyk.k * 100));\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.update = this.repaint;\r\n\r\n\t\t\t\tthis.disable = function (disable) {\r\n\t\t\t\t\t$(':input', part).prop('disabled', disable);\r\n\t\t\t\t};\r\n\t\t\t},\r\n\r\n\t\t\talpha: function (inst) {\r\n\t\t\t\tvar that = this,\r\n\t\t\t\t\tpart = null,\r\n\t\t\t\t\tinput,\r\n\t\t\t\t\thtml = function () {\r\n\t\t\t\t\t\tvar html = '';\r\n\r\n\t\t\t\t\t\tif (inst.options.alpha) {\r\n\t\t\t\t\t\t\thtml += '<div class=\"ui-colorpicker-a\"><input class=\"ui-colorpicker-mode\" name=\"mode\" type=\"radio\" value=\"a\"/><label>' + inst._getRegional('alphaA') + '</label><input class=\"ui-colorpicker-number\" type=\"number\" min=\"0\" max=\"100\"/><span class=\"ui-colorpicker-unit\">%</span></div>';\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn '<div class=\"ui-colorpicker-alpha\">' + html + '</div>';\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tthis.init = function () {\r\n\t\t\t\t\tpart = $(html()).appendTo($('.ui-colorpicker-alpha-container', inst.dialog));\r\n\r\n\t\t\t\t\t$('.ui-colorpicker-mode', part).click(function () {\r\n\t\t\t\t\t\tinst.mode = $(this).val();\r\n\t\t\t\t\t\tinst._updateAllParts();\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tinput = $('.ui-colorpicker-a .ui-colorpicker-number', part);\r\n\r\n\t\t\t\t\t$('.ui-colorpicker-number', part).on('change keyup', function () {\r\n\t\t\t\t\t\tinst.color.setAlpha(input.val() / 100);\r\n\t\t\t\t\t\tinst._change();\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.update = function () {\r\n\t\t\t\t\t$('.ui-colorpicker-mode', part).each(function () {\r\n\t\t\t\t\t\t$(this).prop('checked', $(this).val() === inst.mode);\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis.repaint();\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.repaint = function () {\r\n\t\t\t\t\tinput.val(Math.round(inst.color.getAlpha() * 100));\r\n\t\t\t\t};\r\n\t\t\t\t\r\n\t\t\t\tthis.disable = function (disable) {\r\n\t\t\t\t\t$(':input', part).prop('disabled', disable);\r\n\t\t\t\t};\r\n\t\t\t},\r\n\r\n\t\t\thex: function (inst) {\r\n\t\t\t\tvar that = this,\r\n\t\t\t\t\tpart = null,\r\n\t\t\t\t\tinputs = {},\r\n\t\t\t\t\tparseHex = function(color) {\r\n\t\t\t\t\t\tvar c,\r\n\t\t\t\t\t\t\tm;\r\n\r\n\t\t\t\t\t\t// {#}rgb\r\n\t\t\t\t\t\tm = /^#?([a-fA-F0-9]{1,3})$/.exec(color);\r\n\t\t\t\t\t\tif (m) {\r\n\t\t\t\t\t\t\tc = parseInt(m[1], 16);\r\n\t\t\t\t\t\t\treturn new $.colorpicker.Color(\r\n\t\t\t\t\t\t\t\t((c >> 8) & 0xF) / 15,\r\n\t\t\t\t\t\t\t\t((c >> 4) & 0xF) / 15,\r\n\t\t\t\t\t\t\t\t(c & 0xF) / 15\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// {#}rrggbb\r\n\t\t\t\t\t\tm = /^#?([a-fA-F0-9]{1,6})$/.exec(color);\r\n\t\t\t\t\t\tif (m) {\r\n\t\t\t\t\t\t\tc = parseInt(m[1], 16);\r\n\t\t\t\t\t\t\treturn new $.colorpicker.Color(\r\n\t\t\t\t\t\t\t\t((c >> 16) & 0xFF) / 255,\r\n\t\t\t\t\t\t\t\t((c >> 8) & 0xFF) / 255,\r\n\t\t\t\t\t\t\t\t(c & 0xFF) / 255\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\treturn new $.colorpicker.Color();\r\n\t\t\t\t\t},\r\n\t\t\t\t\thtml = function () {\r\n\t\t\t\t\t\tvar html = '';\r\n\r\n\t\t\t\t\t\tif (inst.options.alpha) {\r\n\t\t\t\t\t\t\thtml += '<input class=\"ui-colorpicker-hex-alpha\" type=\"text\" maxlength=\"2\" size=\"2\"/>';\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\thtml += '<input class=\"ui-colorpicker-hex-input\" type=\"text\" maxlength=\"6\" size=\"6\"/>';\r\n\r\n\t\t\t\t\t\treturn '<div class=\"ui-colorpicker-hex\"><label>#</label>' + html + '</div>';\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tthis.init = function () {\r\n\t\t\t\t\tpart = $(html()).appendTo($('.ui-colorpicker-hex-container', inst.dialog));\r\n\r\n\t\t\t\t\tinputs.color = $('.ui-colorpicker-hex-input', part);\r\n\t\t\t\t\tinputs.alpha = $('.ui-colorpicker-hex-alpha', part);\r\n\r\n\t\t\t\t\tinputs.color.on('keydown keyup', function(e) {\t\r\n\t\t\t\t\t\treturn e.ctrlKey || e.metaKey || _keycode.isHex(e.which) || !_keycode.isPrint(e.which);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// repeat here makes the invalid input disappear faster\r\n\t\t\t\t\tinputs.color.on('change', function () {\r\n\t\t\t\t\t\tif (/[^a-fA-F0-9]/.test(inputs.color.val())) {\r\n\t\t\t\t\t\t\tinputs.color.val(inputs.color.val().replace(/[^a-fA-F0-9]/g, ''));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tinputs.color.on('change keyup', function () {\r\n\t\t\t\t\t\t// repeat here makes sure that the invalid input doesn't get parsed\r\n\t\t\t\t\t\tinst.color = parseHex(inputs.color.val()).setAlpha(inst.color.getAlpha());\r\n\t\t\t\t\t\tinst._change();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tinputs.alpha.on('keydown keyup', function(e) {\r\n\t\t\t\t\t\treturn e.ctrlKey || e.metaKey || _keycode.isHex(e.which) || !_keycode.isPrint(e.which);\r\n\t\t\t\t\t});\r\n\t\t\t\t\t\r\n\t\t\t\t\tinputs.alpha.on('change', function () {\r\n\t\t\t\t\t\tif (/[^a-fA-F0-9]/.test(inputs.alpha)) {\r\n\t\t\t\t\t\t\tinputs.alpha.val(inputs.alpha.val().replace(/[^a-fA-F0-9]/g, ''));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tinputs.alpha.on('change keyup', function () {\r\n\t\t\t\t\t\tinst.color.setAlpha(parseInt(inputs.alpha.val(), 16) / 255);\r\n\t\t\t\t\t\tinst._change();\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.repaint = function () {\r\n\t\t\t\t\tif (!inputs.color.is(':focus')) {\r\n\t\t\t\t\t\tinputs.color.val(inst.color.toHex(true));\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (!inputs.alpha.is(':focus')) {\r\n\t\t\t\t\t\tinputs.alpha.val(_intToHex(inst.color.getAlpha() * 255));\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.update = this.repaint;\r\n\r\n\t\t\t\tthis.disable = function (disable) {\r\n\t\t\t\t\t$(':input', part).prop('disabled', disable);\r\n\t\t\t\t};\r\n\t\t\t},\r\n\r\n\t\t\tswatches: function (inst) {\r\n\t\t\t\tvar that = this,\r\n\t\t\t\t\tpart = null,\r\n\t\t\t\t\thtml = function () {\r\n\t\t\t\t\t\tvar html = '';\r\n\r\n\t\t\t\t\t\tinst._eachSwatch(function (name, color) {\r\n\t\t\t\t\t\t\tvar c = new $.colorpicker.Color(color.r, color.g, color.b),\r\n\t\t\t\t\t\t\t\tcss = c.toCSS();\r\n\t\t\t\t\t\t\thtml += '<div class=\"ui-colorpicker-swatch\" style=\"background-color:' + css + '\" title=\"' + name + '\"></div>';\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\treturn '<div class=\"ui-colorpicker-swatches ui-colorpicker-border\" style=\"width:' + inst.options.swatchesWidth + 'px\">' + html + '</div>';\r\n\t\t\t\t\t},\r\n\t\t\t\t\tonclick = function () {\r\n\t\t\t\t\t\tinst.color\t= inst._parseColor($(this).css('background-color')) || new $.colorpicker.Color();\r\n\t\t\t\t\t\tinst._change();\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tthis.init = function () {\r\n\t\t\t\t\tpart = $(html());\r\n\t\t\t\t\t$('.ui-colorpicker-swatches-container', inst.dialog).html(part);\r\n\t\t\t\t\t$('.ui-colorpicker-swatch', part).on('click', onclick);\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.disable = function (disable) {\r\n\t\t\t\t\t$('.ui-colorpicker-swatch', part)[disable ? 'off' : 'on']('click', onclick);\r\n\t\t\t\t};\r\n\t\t\t},\r\n\r\n\t\t\tfooter: function (inst) {\r\n\t\t\t\tvar that = this,\r\n\t\t\t\t\tpart = null,\r\n\t\t\t\t\tid_transparent = 'ui-colorpicker-special-transparent-' + inst.colorpicker_index,\r\n\t\t\t\t\tid_none = 'ui-colorpicker-special-none-' + inst.colorpicker_index,\r\n\t\t\t\t\thtml = function () {\r\n\t\t\t\t\t\tvar html = '';\r\n\r\n\t\t\t\t\t\tif (inst.options.alpha || (!inst.inline && inst.options.showNoneButton)) {\r\n\t\t\t\t\t\t\thtml += '<div class=\"ui-colorpicker-buttonset\">';\r\n\r\n\t\t\t\t\t\t\tif (inst.options.alpha) {\r\n\t\t\t\t\t\t\t\thtml += '<input type=\"radio\" name=\"ui-colorpicker-special\" id=\"'+id_transparent+'\" class=\"ui-colorpicker-special-transparent\"/><label for=\"'+id_transparent+'\">' + inst._getRegional('transparent') + '</label>';\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (!inst.inline && inst.options.showNoneButton) {\r\n\t\t\t\t\t\t\t\thtml += '<input type=\"radio\" name=\"ui-colorpicker-special\" id=\"'+id_none+'\" class=\"ui-colorpicker-special-none\"><label for=\"'+id_none+'\">' + inst._getRegional('none') + '</label>';\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\thtml += '</div>';\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!inst.inline) {\r\n\t\t\t\t\t\t\thtml += '<div class=\"ui-dialog-buttonset\">';\r\n\t\t\t\t\t\t\tif (inst.options.showCancelButton) {\r\n\t\t\t\t\t\t\t\thtml += '<button class=\"ui-colorpicker-cancel\">' + inst._getRegional('cancel') + '</button>';\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\thtml += '<button class=\"ui-colorpicker-ok\">' + inst._getRegional('ok') + '</button>';\r\n\t\t\t\t\t\t\thtml += '</div>';\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn '<div class=\"ui-dialog-buttonpane ui-widget-content\">' + html + '</div>';\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\tthis.init = function () {\r\n\t\t\t\t\tpart = $(html()).appendTo(inst.dialog);\r\n\r\n\t\t\t\t\t$('.ui-colorpicker-ok', part).button().click(function () {\r\n\t\t\t\t\t\tinst.close();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$('.ui-colorpicker-cancel', part).button().click(function () {\r\n\t\t\t\t\t\tinst.close(true); //cancel\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$('.ui-colorpicker-buttonset', part)[$.fn.controlgroup ? 'controlgroup' : 'buttonset']();\r\n\r\n\t\t\t\t\t$('.ui-colorpicker-special-color', part).click(function () {\r\n\t\t\t\t\t\tinst._change();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$('#'+id_none, part).click(function () {\r\n\t\t\t\t\t\tinst.color.set = false;\r\n\t\t\t\t\t\tinst._change();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$('#'+id_transparent, part).click(function () {\r\n\t\t\t\t\t\tinst.color.setAlpha(0);\r\n\t\t\t\t\t\tinst._change();\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.repaint = function () {\r\n\t\t\t\t\t$('.ui-colorpicker-special-none', part).prop('checked', !inst.color.set).button('refresh');\r\n\t\t\t\t\t$('.ui-colorpicker-special-transparent', part).prop('checked', inst.color.set && inst.color.getAlpha() === 0).button('refresh');\r\n\t\t\t\t\t$('.ui-colorpicker-ok', part).button(inst.changed ? 'enable' : 'disable');\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.update = function () {};\r\n\r\n\t\t\t\tthis.disable = function (disabled) {\r\n\t\t\t\t\t$(':input, :button', part).button(disabled ? 'disable' : 'enable');\r\n\t\t\t\t\tif (!disabled) {\r\n\t\t\t\t\t\t$('.ui-colorpicker-ok', part).button(inst.changed ? 'enable' : 'disable');\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\tthis.Color = function () {\r\n\t\t\tvar spaces = {\trgb:\t{r: 0, g: 0, b: 0},\r\n\t\t\t\t\t\t\thsv:\t{h: 0, s: 0, v: 0},\r\n\t\t\t\t\t\t\thsl:\t{h: 0, s: 0, l: 0},\r\n\t\t\t\t\t\t\tlab:\t{l: 0, a: 0, b: 0},\r\n\t\t\t\t\t\t\tcmyk:\t{c: 0, m: 0, y: 0, k: 1}\r\n\t\t\t\t\t\t},\r\n\t\t\t\ta = 1,\r\n\t\t\t\tilluminant = [0.9504285, 1, 1.0889],\t// CIE-L*ab D65/2' 1931\r\n\t\t\t\targs = arguments,\r\n\t\t\t\t_clip = function(v) {\r\n\t\t\t\t\tif (isNaN(v) || v === null) {\r\n\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (typeof v == 'string') {\r\n\t\t\t\t\t\tv = parseInt(v, 10);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn Math.max(0, Math.min(v, 1));\r\n\t\t\t\t},\r\n\t\t\t\t_hexify = function (number) {\r\n\t\t\t\t\tvar number = Math.round(number),\r\n\t\t\t\t\t\tdigits = '0123456789abcdef',\r\n\t\t\t\t\t\tlsd = number % 16,\r\n\t\t\t\t\t\tmsd = (number - lsd) / 16,\r\n\t\t\t\t\t\thexified = digits.charAt(msd) + digits.charAt(lsd);\r\n\t\t\t\t\treturn hexified;\r\n\t\t\t\t},\r\n\t\t\t\t_rgb_to_xyz = function(rgb) {\r\n\t\t\t\t\tvar r = (rgb.r > 0.04045) ? Math.pow((rgb.r + 0.055) / 1.055, 2.4) : rgb.r / 12.92,\r\n\t\t\t\t\t\tg = (rgb.g > 0.04045) ? Math.pow((rgb.g + 0.055) / 1.055, 2.4) : rgb.g / 12.92,\r\n\t\t\t\t\t\tb = (rgb.b > 0.04045) ? Math.pow((rgb.b + 0.055) / 1.055, 2.4) : rgb.b / 12.92;\r\n\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tx: r * 0.4124 + g * 0.3576 + b * 0.1805,\r\n\t\t\t\t\t\ty: r * 0.2126 + g * 0.7152 + b * 0.0722,\r\n\t\t\t\t\t\tz: r * 0.0193 + g * 0.1192 + b * 0.9505\r\n\t\t\t\t\t};\r\n\t\t\t\t},\r\n\t\t\t\t_xyz_to_rgb = function(xyz) {\r\n\t\t\t\t\tvar rgb = {\r\n\t\t\t\t\t\tr: xyz.x * 3.2406 + xyz.y * -1.5372 + xyz.z * -0.4986,\r\n\t\t\t\t\t\tg: xyz.x * -0.9689 + xyz.y * 1.8758 + xyz.z * 0.0415,\r\n\t\t\t\t\t\tb: xyz.x * 0.0557 + xyz.y * -0.2040 + xyz.z * 1.0570\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\trgb.r = (rgb.r > 0.0031308) ? 1.055 * Math.pow(rgb.r, (1 / 2.4)) - 0.055 : 12.92 * rgb.r;\r\n\t\t\t\t\trgb.g = (rgb.g > 0.0031308) ? 1.055 * Math.pow(rgb.g, (1 / 2.4)) - 0.055 : 12.92 * rgb.g;\r\n\t\t\t\t\trgb.b = (rgb.b > 0.0031308) ? 1.055 * Math.pow(rgb.b, (1 / 2.4)) - 0.055 : 12.92 * rgb.b;\r\n\r\n\t\t\t\t\treturn rgb;\r\n\t\t\t\t},\r\n\t\t\t\t_rgb_to_hsv = function(rgb) {\r\n\t\t\t\t\tvar minVal = Math.min(rgb.r, rgb.g, rgb.b),\r\n\t\t\t\t\t\tmaxVal = Math.max(rgb.r, rgb.g, rgb.b),\r\n\t\t\t\t\t\tdelta = maxVal - minVal,\r\n\t\t\t\t\t\tdel_R, del_G, del_B,\r\n\t\t\t\t\t\thsv = {\r\n\t\t\t\t\t\t\th: 0,\r\n\t\t\t\t\t\t\ts: 0,\r\n\t\t\t\t\t\t\tv: maxVal\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\tif (delta === 0) {\r\n\t\t\t\t\t\thsv.h = 0;\r\n\t\t\t\t\t\thsv.s = 0;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\thsv.s = delta / maxVal;\r\n\r\n\t\t\t\t\t\tdel_R = (((maxVal - rgb.r) / 6) + (delta / 2)) / delta;\r\n\t\t\t\t\t\tdel_G = (((maxVal - rgb.g) / 6) + (delta / 2)) / delta;\r\n\t\t\t\t\t\tdel_B = (((maxVal - rgb.b) / 6) + (delta / 2)) / delta;\r\n\r\n\t\t\t\t\t\tif (rgb.r === maxVal) {\r\n\t\t\t\t\t\t\thsv.h = del_B - del_G;\r\n\t\t\t\t\t\t} else if (rgb.g === maxVal) {\r\n\t\t\t\t\t\t\thsv.h = (1 / 3) + del_R - del_B;\r\n\t\t\t\t\t\t} else if (rgb.b === maxVal) {\r\n\t\t\t\t\t\t\thsv.h = (2 / 3) + del_G - del_R;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (hsv.h < 0) {\r\n\t\t\t\t\t\t\thsv.h += 1;\r\n\t\t\t\t\t\t} else if (hsv.h > 1) {\r\n\t\t\t\t\t\t\thsv.h -= 1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn hsv;\r\n\t\t\t\t},\r\n\t\t\t\t_hsv_to_rgb = function(hsv) {\r\n\t\t\t\t\tvar rgb = {\r\n\t\t\t\t\t\t\tr: 0,\r\n\t\t\t\t\t\t\tg: 0,\r\n\t\t\t\t\t\t\tb: 0\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tvar_h,\r\n\t\t\t\t\t\tvar_i,\r\n\t\t\t\t\t\tvar_1,\r\n\t\t\t\t\t\tvar_2,\r\n\t\t\t\t\t\tvar_3;\r\n\r\n\t\t\t\t\tif (hsv.s === 0) {\r\n\t\t\t\t\t\trgb.r = rgb.g = rgb.b = hsv.v;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar_h = hsv.h === 1 ? 0 : hsv.h * 6;\r\n\t\t\t\t\t\tvar_i = Math.floor(var_h);\r\n\t\t\t\t\t\tvar_1 = hsv.v * (1 - hsv.s);\r\n\t\t\t\t\t\tvar_2 = hsv.v * (1 - hsv.s * (var_h - var_i));\r\n\t\t\t\t\t\tvar_3 = hsv.v * (1 - hsv.s * (1 - (var_h - var_i)));\r\n\r\n\t\t\t\t\t\tif (var_i === 0) {\r\n\t\t\t\t\t\t\trgb.r = hsv.v;\r\n\t\t\t\t\t\t\trgb.g = var_3;\r\n\t\t\t\t\t\t\trgb.b = var_1;\r\n\t\t\t\t\t\t} else if (var_i === 1) {\r\n\t\t\t\t\t\t\trgb.r = var_2;\r\n\t\t\t\t\t\t\trgb.g = hsv.v;\r\n\t\t\t\t\t\t\trgb.b = var_1;\r\n\t\t\t\t\t\t} else if (var_i === 2) {\r\n\t\t\t\t\t\t\trgb.r = var_1;\r\n\t\t\t\t\t\t\trgb.g = hsv.v;\r\n\t\t\t\t\t\t\trgb.b = var_3;\r\n\t\t\t\t\t\t} else if (var_i === 3) {\r\n\t\t\t\t\t\t\trgb.r = var_1;\r\n\t\t\t\t\t\t\trgb.g = var_2;\r\n\t\t\t\t\t\t\trgb.b = hsv.v;\r\n\t\t\t\t\t\t} else if (var_i === 4) {\r\n\t\t\t\t\t\t\trgb.r = var_3;\r\n\t\t\t\t\t\t\trgb.g = var_1;\r\n\t\t\t\t\t\t\trgb.b = hsv.v;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\trgb.r = hsv.v;\r\n\t\t\t\t\t\t\trgb.g = var_1;\r\n\t\t\t\t\t\t\trgb.b = var_2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn rgb;\r\n\t\t\t\t},\r\n\t\t\t\t_rgb_to_hsl = function(rgb) {\r\n\t\t\t\t\tvar minVal = Math.min(rgb.r, rgb.g, rgb.b),\r\n\t\t\t\t\t\tmaxVal = Math.max(rgb.r, rgb.g, rgb.b),\r\n\t\t\t\t\t\tdelta = maxVal - minVal,\r\n\t\t\t\t\t\tdel_R, del_G, del_B,\r\n\t\t\t\t\t\thsl = {\r\n\t\t\t\t\t\t\th: 0,\r\n\t\t\t\t\t\t\ts: 0,\r\n\t\t\t\t\t\t\tl: (maxVal + minVal) / 2\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\tif (delta === 0) {\r\n\t\t\t\t\t\thsl.h = 0;\r\n\t\t\t\t\t\thsl.s = 0;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\thsl.s = hsl.l < 0.5 ? delta / (maxVal + minVal) : delta / (2 - maxVal - minVal);\r\n\r\n\t\t\t\t\t\tdel_R = (((maxVal - rgb.r) / 6) + (delta / 2)) / delta;\r\n\t\t\t\t\t\tdel_G = (((maxVal - rgb.g) / 6) + (delta / 2)) / delta;\r\n\t\t\t\t\t\tdel_B = (((maxVal - rgb.b) / 6) + (delta / 2)) / delta;\r\n\r\n\t\t\t\t\t\tif (rgb.r === maxVal) {\r\n\t\t\t\t\t\t\thsl.h = del_B - del_G;\r\n\t\t\t\t\t\t} else if (rgb.g === maxVal) {\r\n\t\t\t\t\t\t\thsl.h = (1 / 3) + del_R - del_B;\r\n\t\t\t\t\t\t} else if (rgb.b === maxVal) {\r\n\t\t\t\t\t\t\thsl.h = (2 / 3) + del_G - del_R;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (hsl.h < 0) {\r\n\t\t\t\t\t\t\thsl.h += 1;\r\n\t\t\t\t\t\t} else if (hsl.h > 1) {\r\n\t\t\t\t\t\t\thsl.h -= 1;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn hsl;\r\n\t\t\t\t},\r\n\t\t\t\t_hsl_to_rgb = function(hsl) {\r\n\t\t\t\t\tvar var_1,\r\n\t\t\t\t\t\tvar_2,\r\n\t\t\t\t\t\thue_to_rgb\t= function(v1, v2, vH) {\r\n\t\t\t\t\t\t\t\t\t\tif (vH < 0) {\r\n\t\t\t\t\t\t\t\t\t\t\tvH += 1;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tif (vH > 1) {\r\n\t\t\t\t\t\t\t\t\t\t\tvH -= 1;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tif ((6 * vH) < 1) {\r\n\t\t\t\t\t\t\t\t\t\t\treturn v1 + (v2 - v1) * 6 * vH;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tif ((2 * vH) < 1) {\r\n\t\t\t\t\t\t\t\t\t\t\treturn v2;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tif ((3 * vH) < 2) {\r\n\t\t\t\t\t\t\t\t\t\t\treturn v1 + (v2 - v1) * ((2 / 3) - vH) * 6;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\treturn v1;\r\n\t\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\tif (hsl.s === 0) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tr: hsl.l,\r\n\t\t\t\t\t\t\tg: hsl.l,\r\n\t\t\t\t\t\t\tb: hsl.l\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar_2 = (hsl.l < 0.5) ? hsl.l * (1 + hsl.s) : (hsl.l + hsl.s) - (hsl.s * hsl.l);\r\n\t\t\t\t\tvar_1 = 2 * hsl.l - var_2;\r\n\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tr: hue_to_rgb(var_1, var_2, hsl.h + (1 / 3)),\r\n\t\t\t\t\t\tg: hue_to_rgb(var_1, var_2, hsl.h),\r\n\t\t\t\t\t\tb: hue_to_rgb(var_1, var_2, hsl.h - (1 / 3))\r\n\t\t\t\t\t};\r\n\t\t\t\t},\r\n\t\t\t\t_xyz_to_lab = function(xyz) {\r\n\t\t\t\t\tvar x = xyz.x / illuminant[0],\r\n\t\t\t\t\t\ty = xyz.y / illuminant[1],\r\n\t\t\t\t\t\tz = xyz.z / illuminant[2];\r\n\r\n\t\t\t\t\tx = (x > 0.008856) ? Math.pow(x, (1/3)) : (7.787 * x) + (16/116);\r\n\t\t\t\t\ty = (y > 0.008856) ? Math.pow(y, (1/3)) : (7.787 * y) + (16/116);\r\n\t\t\t\t\tz = (z > 0.008856) ? Math.pow(z, (1/3)) : (7.787 * z) + (16/116);\r\n\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tl: ((116 * y) - 16) / 100,\t// [0,100]\r\n\t\t\t\t\t\ta: ((500 * (x - y)) + 128) / 255,\t// [-128,127]\r\n\t\t\t\t\t\tb: ((200 * (y - z))\t+ 128) / 255\t// [-128,127]\r\n\t\t\t\t\t};\r\n\t\t\t\t},\r\n\t\t\t\t_lab_to_xyz = function(lab) {\r\n\t\t\t\t\tvar lab2 = {\r\n\t\t\t\t\t\t\tl: lab.l * 100,\r\n\t\t\t\t\t\t\ta: (lab.a * 255) - 128,\r\n\t\t\t\t\t\t\tb: (lab.b * 255) - 128\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\txyz = {\r\n\t\t\t\t\t\t\tx: 0,\r\n\t\t\t\t\t\t\ty: (lab2.l + 16) / 116,\r\n\t\t\t\t\t\t\tz: 0\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\txyz.x = lab2.a / 500 + xyz.y;\r\n\t\t\t\t\txyz.z = xyz.y - lab2.b / 200;\r\n\r\n\t\t\t\t\txyz.x = (Math.pow(xyz.x, 3) > 0.008856) ? Math.pow(xyz.x, 3) : (xyz.x - 16 / 116) / 7.787;\r\n\t\t\t\t\txyz.y = (Math.pow(xyz.y, 3) > 0.008856) ? Math.pow(xyz.y, 3) : (xyz.y - 16 / 116) / 7.787;\r\n\t\t\t\t\txyz.z = (Math.pow(xyz.z, 3) > 0.008856) ? Math.pow(xyz.z, 3) : (xyz.z - 16 / 116) / 7.787;\r\n\r\n\t\t\t\t\txyz.x *= illuminant[0];\r\n\t\t\t\t\txyz.y *= illuminant[1];\r\n\t\t\t\t\txyz.z *= illuminant[2];\r\n\r\n\t\t\t\t\treturn xyz;\r\n\t\t\t\t},\r\n\t\t\t\t_rgb_to_cmy = function(rgb) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tc: 1 - (rgb.r),\r\n\t\t\t\t\t\tm: 1 - (rgb.g),\r\n\t\t\t\t\t\ty: 1 - (rgb.b)\r\n\t\t\t\t\t};\r\n\t\t\t\t},\r\n\t\t\t\t_cmy_to_rgb = function(cmy) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tr: 1 - (cmy.c),\r\n\t\t\t\t\t\tg: 1 - (cmy.m),\r\n\t\t\t\t\t\tb: 1 - (cmy.y)\r\n\t\t\t\t\t};\r\n\t\t\t\t},\r\n\t\t\t\t_cmy_to_cmyk = function(cmy) {\r\n\t\t\t\t\tvar K = 1;\r\n\r\n\t\t\t\t\tif (cmy.c < K) {\r\n\t\t\t\t\t\tK = cmy.c;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (cmy.m < K) {\r\n\t\t\t\t\t\tK = cmy.m;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (cmy.y < K) {\r\n\t\t\t\t\t\tK = cmy.y;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (K === 1) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tc: 0,\r\n\t\t\t\t\t\t\tm: 0,\r\n\t\t\t\t\t\t\ty: 0,\r\n\t\t\t\t\t\t\tk: 1\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tc: (cmy.c - K) / (1 - K),\r\n\t\t\t\t\t\tm: (cmy.m - K) / (1 - K),\r\n\t\t\t\t\t\ty: (cmy.y - K) / (1 - K),\r\n\t\t\t\t\t\tk: K\r\n\t\t\t\t\t};\r\n\t\t\t\t},\r\n\t\t\t\t_cmyk_to_cmy = function(cmyk) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tc: cmyk.c * (1 - cmyk.k) + cmyk.k,\r\n\t\t\t\t\t\tm: cmyk.m * (1 - cmyk.k) + cmyk.k,\r\n\t\t\t\t\t\ty: cmyk.y * (1 - cmyk.k) + cmyk.k\r\n\t\t\t\t\t};\r\n\t\t\t\t};\r\n\r\n\t\t\tthis.set = false;\r\n\r\n\t\t\tthis.setAlpha = function(_a) {\r\n\t\t\t\tif (_a !== null) {\r\n\t\t\t\t\ta = _clip(_a);\r\n\t\t\t\t}\r\n\t\t\t\tthis.set = true;\r\n\r\n\t\t\t\treturn this;\r\n\t\t\t};\r\n\r\n\t\t\tthis.getAlpha = function() {\r\n\t\t\t\treturn a;\r\n\t\t\t};\r\n\r\n\t\t\tthis.setRGB = function(r, g, b) {\r\n\t\t\t\tspaces = { rgb: this.getRGB() };\r\n\t\t\t\tif (r !== null) {\r\n\t\t\t\t\tspaces.rgb.r = _clip(r);\r\n\t\t\t\t}\r\n\t\t\t\tif (g !== null) {\r\n\t\t\t\t\tspaces.rgb.g = _clip(g);\r\n\t\t\t\t}\r\n\t\t\t\tif (b !== null) {\r\n\t\t\t\t\tspaces.rgb.b = _clip(b);\r\n\t\t\t\t}\r\n\t\t\t\tthis.set = true;\r\n\t\t\t\t\r\n\t\t\t\treturn this;\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tthis.getChannel = function(channel) {\r\n\t\t\t\tswitch (channel) {\r\n\t\t\t\t\tcase 'h':\r\n\t\t\t\t\tcase 's':\r\n\t\t\t\t\tcase 'v':\r\n\t\t\t\t\t\treturn this.getHSV()[channel];\r\n\r\n\t\t\t\t\tcase 'r':\r\n\t\t\t\t\tcase 'g':\r\n\t\t\t\t\tcase 'b':\r\n\t\t\t\t\t\treturn this.getRGB()[channel];\r\n\r\n\t\t\t\t\tcase 'a':\r\n\t\t\t\t\t\treturn this.getAlpha();\r\n\t\t\t\t}\t\t\t\r\n\t\t\t\t\r\n\t\t\t\treturn null;\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tthis.setChannel = function(channel, value) {\r\n\t\t\t\tswitch (channel) {\r\n\t\t\t\t\tcase 'h':\r\n\t\t\t\t\t\treturn this.setHSV(value, null, null);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\tcase 's':\r\n\t\t\t\t\t\treturn this.setHSV(null, value, null);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\tcase 'v':\r\n\t\t\t\t\t\treturn this.setHSV(null, null, value);\r\n\r\n\t\t\t\t\tcase 'r':\r\n\t\t\t\t\t\treturn this.setRGB(value, null, null);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\tcase 'g':\r\n\t\t\t\t\t\treturn this.setRGB(null, value, null);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\tcase 'b':\r\n\t\t\t\t\t\treturn this.setRGB(null, null, value);\r\n\r\n\t\t\t\t\tcase 'a':\r\n\t\t\t\t\t\treturn this.setAlpha(value);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\treturn this;\r\n\t\t\t};\r\n\r\n\t\t\tthis.setHSV = function(h, s, v) {\r\n\t\t\t\tspaces = {hsv: this.getHSV()};\r\n\t\t\t\tif (h !== null) {\r\n\t\t\t\t\tspaces.hsv.h = _clip(h);\r\n\t\t\t\t}\r\n\t\t\t\tif (s !== null)\t{\r\n\t\t\t\t\tspaces.hsv.s = _clip(s);\r\n\t\t\t\t}\r\n\t\t\t\tif (v !== null)\t{\r\n\t\t\t\t\tspaces.hsv.v = _clip(v);\r\n\t\t\t\t}\r\n\t\t\t\tthis.set = true;\r\n\r\n\t\t\t\treturn this;\r\n\t\t\t};\r\n\r\n\t\t\tthis.setHSL = function(h, s, l) {\r\n\t\t\t\tspaces = {hsl: this.getHSL()};\r\n\t\t\t\tif (h !== null)\t{\r\n\t\t\t\t\tspaces.hsl.h = _clip(h);\r\n\t\t\t\t}\r\n\t\t\t\tif (s !== null) {\r\n\t\t\t\t\tspaces.hsl.s = _clip(s);\r\n\t\t\t\t}\r\n\t\t\t\tif (l !== null) {\r\n\t\t\t\t\tspaces.hsl.l = _clip(l);\r\n\t\t\t\t}\r\n\t\t\t\tthis.set = true;\r\n\r\n\t\t\t\treturn this;\r\n\t\t\t};\r\n\r\n\t\t\tthis.setLAB = function(l, a, b) {\r\n\t\t\t\tspaces = {lab: this.getLAB()};\r\n\t\t\t\tif (l !== null) {\r\n\t\t\t\t\tspaces.lab.l = _clip(l);\r\n\t\t\t\t}\r\n\t\t\t\tif (a !== null) {\r\n\t\t\t\t\tspaces.lab.a = _clip(a);\r\n\t\t\t\t}\r\n\t\t\t\tif (b !== null) {\r\n\t\t\t\t\tspaces.lab.b = _clip(b);\r\n\t\t\t\t}\r\n\t\t\t\tthis.set = true;\r\n\r\n\t\t\t\treturn this;\r\n\t\t\t};\r\n\r\n\t\t\tthis.setCMYK = function(c, m, y, k) {\r\n\t\t\t\tspaces = {cmyk: this.getCMYK()};\r\n\t\t\t\tif (c !== null) {\r\n\t\t\t\t\tspaces.cmyk.c = _clip(c);\r\n\t\t\t\t}\r\n\t\t\t\tif (m !== null) {\r\n\t\t\t\t\tspaces.cmyk.m = _clip(m);\r\n\t\t\t\t}\r\n\t\t\t\tif (y !== null) {\r\n\t\t\t\t\tspaces.cmyk.y = _clip(y);\r\n\t\t\t\t}\r\n\t\t\t\tif (k !== null) {\r\n\t\t\t\t\tspaces.cmyk.k = _clip(k);\r\n\t\t\t\t}\r\n\t\t\t\tthis.set = true;\r\n\r\n\t\t\t\treturn this;\r\n\t\t\t};\r\n\r\n\t\t\tthis.getRGB = function() {\r\n\t\t\t\tif (!spaces.rgb) {\r\n\t\t\t\t\tspaces.rgb\t= spaces.lab ?\t_xyz_to_rgb(_lab_to_xyz(spaces.lab))\r\n\t\t\t\t\t\t\t\t: spaces.hsv ?\t_hsv_to_rgb(spaces.hsv)\r\n\t\t\t\t\t\t\t\t: spaces.hsl ?\t_hsl_to_rgb(spaces.hsl)\r\n\t\t\t\t\t\t\t\t: spaces.cmyk ?\t_cmy_to_rgb(_cmyk_to_cmy(spaces.cmyk))\r\n\t\t\t\t\t\t\t\t: {r: 0, g: 0, b: 0};\r\n\t\t\t\t\tspaces.rgb.r = _clip(spaces.rgb.r);\r\n\t\t\t\t\tspaces.rgb.g = _clip(spaces.rgb.g);\r\n\t\t\t\t\tspaces.rgb.b = _clip(spaces.rgb.b);\r\n\t\t\t\t}\r\n\t\t\t\treturn $.extend({}, spaces.rgb);\r\n\t\t\t};\r\n\r\n\t\t\tthis.getHSV = function() {\r\n\t\t\t\tif (!spaces.hsv) {\r\n\t\t\t\t\tspaces.hsv\t= spaces.lab ? _rgb_to_hsv(this.getRGB())\r\n\t\t\t\t\t\t\t\t: spaces.rgb ?\t_rgb_to_hsv(spaces.rgb)\r\n\t\t\t\t\t\t\t\t: spaces.hsl ?\t_rgb_to_hsv(this.getRGB())\r\n\t\t\t\t\t\t\t\t: spaces.cmyk ?\t_rgb_to_hsv(this.getRGB())\r\n\t\t\t\t\t\t\t\t: {h: 0, s: 0, v: 0};\r\n\t\t\t\t\tspaces.hsv.h = _clip(spaces.hsv.h);\r\n\t\t\t\t\tspaces.hsv.s = _clip(spaces.hsv.s);\r\n\t\t\t\t\tspaces.hsv.v = _clip(spaces.hsv.v);\r\n\t\t\t\t}\r\n\t\t\t\treturn $.extend({}, spaces.hsv);\r\n\t\t\t};\r\n\r\n\t\t\tthis.getHSL = function() {\r\n\t\t\t\tif (!spaces.hsl) {\r\n\t\t\t\t\tspaces.hsl\t= spaces.rgb ?\t_rgb_to_hsl(spaces.rgb)\r\n\t\t\t\t\t\t\t\t: spaces.hsv ?\t_rgb_to_hsl(this.getRGB())\r\n\t\t\t\t\t\t\t\t: spaces.cmyk ?\t_rgb_to_hsl(this.getRGB())\r\n\t\t\t\t\t\t\t\t: spaces.hsv ?\t_rgb_to_hsl(this.getRGB())\r\n\t\t\t\t\t\t\t\t: {h: 0, s: 0, l: 0};\r\n\t\t\t\t\tspaces.hsl.h = _clip(spaces.hsl.h);\r\n\t\t\t\t\tspaces.hsl.s = _clip(spaces.hsl.s);\r\n\t\t\t\t\tspaces.hsl.l = _clip(spaces.hsl.l);\r\n\t\t\t\t}\r\n\t\t\t\treturn $.extend({}, spaces.hsl);\r\n\t\t\t};\r\n\r\n\t\t\tthis.getCMYK = function() {\r\n\t\t\t\tif (!spaces.cmyk) {\r\n\t\t\t\t\tspaces.cmyk\t= spaces.rgb ?\t_cmy_to_cmyk(_rgb_to_cmy(spaces.rgb))\r\n\t\t\t\t\t\t\t\t: spaces.hsv ?\t_cmy_to_cmyk(_rgb_to_cmy(this.getRGB()))\r\n\t\t\t\t\t\t\t\t: spaces.hsl ?\t_cmy_to_cmyk(_rgb_to_cmy(this.getRGB()))\r\n\t\t\t\t\t\t\t\t: spaces.lab ?\t_cmy_to_cmyk(_rgb_to_cmy(this.getRGB()))\r\n\t\t\t\t\t\t\t\t: {c: 0, m: 0, y: 0, k: 1};\r\n\t\t\t\t\tspaces.cmyk.c = _clip(spaces.cmyk.c);\r\n\t\t\t\t\tspaces.cmyk.m = _clip(spaces.cmyk.m);\r\n\t\t\t\t\tspaces.cmyk.y = _clip(spaces.cmyk.y);\r\n\t\t\t\t\tspaces.cmyk.k = _clip(spaces.cmyk.k);\r\n\t\t\t\t}\r\n\t\t\t\treturn $.extend({}, spaces.cmyk);\r\n\t\t\t};\r\n\r\n\t\t\tthis.getLAB = function() {\r\n\t\t\t\tif (!spaces.lab) {\r\n\t\t\t\t\tspaces.lab\t= spaces.rgb ?\t_xyz_to_lab(_rgb_to_xyz(spaces.rgb))\r\n\t\t\t\t\t\t\t\t: spaces.hsv ?\t_xyz_to_lab(_rgb_to_xyz(this.getRGB()))\r\n\t\t\t\t\t\t\t\t: spaces.hsl ?\t_xyz_to_lab(_rgb_to_xyz(this.getRGB()))\r\n\t\t\t\t\t\t\t\t: spaces.cmyk ?\t_xyz_to_lab(_rgb_to_xyz(this.getRGB()))\r\n\t\t\t\t\t\t\t\t: {l: 0, a: 0, b: 0};\r\n\t\t\t\t\tspaces.lab.l = _clip(spaces.lab.l);\r\n\t\t\t\t\tspaces.lab.a = _clip(spaces.lab.a);\r\n\t\t\t\t\tspaces.lab.b = _clip(spaces.lab.b);\r\n\t\t\t\t}\r\n\t\t\t\treturn $.extend({}, spaces.lab);\r\n\t\t\t};\r\n\r\n\t\t\tthis.getChannels = function() {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tr:\tthis.getRGB().r,\r\n\t\t\t\t\tg:\tthis.getRGB().g,\r\n\t\t\t\t\tb:\tthis.getRGB().b,\r\n\t\t\t\t\ta:\tthis.getAlpha(),\r\n\t\t\t\t\th:\tthis.getHSV().h,\r\n\t\t\t\t\ts:\tthis.getHSV().s,\r\n\t\t\t\t\tv:\tthis.getHSV().v,\r\n\t\t\t\t\tc:\tthis.getCMYK().c,\r\n\t\t\t\t\tm:\tthis.getCMYK().m,\r\n\t\t\t\t\ty:\tthis.getCMYK().y,\r\n\t\t\t\t\tk:\tthis.getCMYK().k,\r\n\t\t\t\t\tL:\tthis.getLAB().l,\r\n\t\t\t\t\tA:\tthis.getLAB().a,\r\n\t\t\t\t\tB:\tthis.getLAB().b\r\n\t\t\t\t};\r\n\t\t\t};\r\n\r\n\t\t\tthis.getSpaces = function() {\r\n\t\t\t\treturn $.extend(true, {}, spaces);\r\n\t\t\t};\r\n\r\n\t\t\tthis.distance = function(color) {\r\n\t\t\t\tvar space\t= 'lab',\r\n\t\t\t\t\tgetter\t= 'get'+space.toUpperCase(),\r\n\t\t\t\t\ta = this[getter](),\r\n\t\t\t\t\tb = color[getter](),\r\n\t\t\t\t\tdistance = 0,\r\n\t\t\t\t\tchannel;\r\n\r\n\t\t\t\tfor (channel in a) {\r\n\t\t\t\t\tdistance += Math.pow(a[channel] - b[channel], 2);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn distance;\r\n\t\t\t};\r\n\r\n\t\t\tthis.equals = function(color) {\r\n\t\t\t\tif (color) {\r\n\t\t\t\t\tvar a = this.getRGB(),\r\n\t\t\t\t\t\tb = color.getRGB();\r\n\r\n\t\t\t\t\treturn this.set === color.set\r\n\t\t\t\t\t\t&& this.getAlpha() === color.getAlpha()\r\n\t\t\t\t\t\t&& a.r === b.r\r\n\t\t\t\t\t\t&& a.g === b.g\r\n\t\t\t\t\t\t&& a.b === b.b;\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t};\r\n\r\n\t\t\tthis.limit = function(steps) {\r\n\t\t\t\tsteps -= 1;\r\n\t\t\t\tvar rgb = this.getRGB();\r\n\t\t\t\tthis.setRGB(\r\n\t\t\t\t\tMath.round(rgb.r * steps) / steps,\r\n\t\t\t\t\tMath.round(rgb.g * steps) / steps,\r\n\t\t\t\t\tMath.round(rgb.b * steps) / steps\r\n\t\t\t\t);\r\n\t\t\t};\r\n\r\n\t\t\tthis.toHex = function() {\r\n\t\t\t\tvar rgb = this.getRGB();\r\n\t\t\t\treturn _hexify(rgb.r * 255) + _hexify(rgb.g * 255) + _hexify(rgb.b * 255);\r\n\t\t\t};\r\n\r\n\t\t\tthis.toCSS = function() {\r\n\t\t\t\treturn '#' + this.toHex();\r\n\t\t\t};\r\n\r\n\t\t\tthis.copy = function() {\r\n\t\t\t\tvar color = new $.colorpicker.Color(this.getSpaces(), this.getAlpha());\r\n\t\t\t\tcolor.set = this.set;\r\n\t\t\t\treturn color;\r\n\t\t\t};\r\n\r\n\t\t\t// Construct\r\n\t\t\tif (args.length === 2) {\r\n\t\t\t\tspaces = args[0];\r\n\t\t\t\tthis.setAlpha(args[1] === 0 ? 0 : args[1] || 1);\r\n\t\t\t\tthis.set = true;\r\n\t\t\t}\r\n\t\t\tif (args.length > 2) {\r\n\t\t\t\tthis.setRGB(args[0], args[1], args[2]);\r\n\t\t\t\tthis.setAlpha(args[3] === 0 ? 0 : args[3] || 1);\r\n\t\t\t\tthis.set = true;\r\n\t\t\t}\r\n\t\t};\r\n\t}();\r\n\r\n\t$.widget(\"vanderlee.colorpicker\", {\r\n\t\toptions: {\r\n\t\t\talpha:\t\t\t\tfalse,\t\t// Show alpha controls and mode\r\n\t\t\taltAlpha:\t\t\ttrue,\t\t// change opacity of altField as well?\r\n\t\t\taltField:\t\t\t'',\t\t\t// selector for DOM elements which change background color on change.\r\n\t\t\taltOnChange:\t\ttrue,\t\t// true to update on each change, false to update only on close.\r\n\t\t\taltProperties:\t\t'background-color',\t// comma separated list of any of 'background-color', 'color', 'border-color', 'outline-color'\r\n\t\t\tautoOpen:\t\t\tfalse,\t\t// Open dialog automatically upon creation\r\n\t\t\tbuttonClass:\t\tnull,\t\t// If set, the button will get this/these classname(s).\r\n\t\t\tbuttonColorize:\t\tfalse,\r\n\t\t\tbuttonImage:\t\t'images/ui-colorpicker.png',\r\n\t\t\tbuttonImageOnly:\tfalse,\r\n\t\t\tbuttonText:\t\t\tnull,\t\t// Text on the button and/or title of button image.\r\n\t\t\tcloseOnEscape:\t\ttrue,\t\t// Close the dialog when the escape key is pressed.\r\n\t\t\tcloseOnOutside:\t\ttrue,\t\t// Close the dialog when clicking outside the dialog (not for inline)\r\n\t\t\tcolor:\t\t\t\t'#00FF00',\t// Initial color (for inline only)\r\n\t\t\tcolorFormat:\t\t'HEX',\t\t// Format string for output color format\r\n\t\t\tdisabled:\t\t\tfalse,\t\t// Disable or enable the colorpicker initially\r\n\t\t\tdraggable:\t\t\ttrue,\t\t// Make popup dialog draggable if header is visible.\r\n\t\t\tcontainment:\t\tnull,\t\t// Constrains dragging to within the bounds of the specified element or region.\r\n\t\t\tduration:\t\t\t'fast',\r\n\t\t\thideOn:\t\t\t\t'button',\t// 'focus', 'click', 'button', 'alt', 'all'\r\n\t\t\thsv:\t\t\t\ttrue,\t\t// Show HSV controls and modes\r\n\t\t\tinline:\t\t\t\ttrue,\t\t// Show any divs as inline by default\r\n\t\t\tinlineFrame:\t\ttrue,\t\t// Show a border and background when inline.\r\n\t\t\tlayout: {\r\n\t\t\t\tmap:\t\t[0, 0, 1, 5],\t// Left, Top, Width, Height (in table cells).\r\n\t\t\t\tbar:\t\t[1, 0, 1, 5],\r\n\t\t\t\tpreview:\t[2, 0, 1, 1],\r\n\t\t\t\thsv:\t\t[2, 1, 1, 1],\r\n\t\t\t\trgb:\t\t[2, 2, 1, 1],\r\n\t\t\t\talpha:\t\t[2, 3, 1, 1],\r\n\t\t\t\thex:\t\t[2, 4, 1, 1],\r\n\t\t\t\tlab:\t\t[3, 1, 1, 1],\r\n\t\t\t\tcmyk:\t\t[3, 2, 1, 2],\r\n\t\t\t\tswatches:\t[4, 0, 1, 5]\r\n\t\t\t},\r\n\t\t\tlimit:\t\t\t\t'',\t\t\t// Limit color \"resolution\": '', 'websafe', 'nibble', 'binary', 'name'\r\n\t\t\tmodal:\t\t\t\tfalse,\t\t// Modal dialog?\r\n\t\t\tmode:\t\t\t\t'h',\t\t// Initial editing mode, h, s, v, r, g, b or a\r\n\t\t\tokOnEnter:\t\t\tfalse,\t\t// Close (with OK) when pressing the enter key\r\n\t\t\tparts:\t\t\t\t'',\t\t\t// leave empty for automatic selection\r\n\t\t\tpart: {\r\n\t\t\t\tmap:\t\t{ size: 256 },\r\n\t\t\t\tbar:\t\t{ size: 256 }\r\n\t\t\t},\t\t\t// options per part\r\n\t\t\tposition:\t\t\tnull,\r\n\t\t\tregional:\t\t\t'',\r\n\t\t\trevert:\t\t\t\tfalse,\t\t// Revert color upon non\r\n\t\t\trgb:\t\t\t\ttrue,\t\t// Show RGB controls and modes\r\n\t\t\tshowAnim:\t\t\t'fadeIn',\r\n\t\t\tshowCancelButton:\ttrue,\r\n\t\t\tshowNoneButton:\t\tfalse,\r\n\t\t\tshowCloseButton:\ttrue,\r\n\t\t\tshowOn:\t\t\t\t'focus click alt',\t\t// 'focus', 'click', 'button', 'alt', 'all'\r\n\t\t\tshowOptions:\t\t{},\r\n\t\t\tswatches:\t\t\tnull,\t\t// null for default or kv-object or names swatches set\r\n\t\t\tswatchesWidth:\t\t84,\t\t\t// width (in number of pixels) of swatches box.\r\n\t\t\ttitle:\t\t\t\tnull,\r\n\r\n\t\t\tcancel: null,\r\n close: null,\r\n\t\t\tinit:\t\t\t\tnull,\r\n ok: null,\r\n\t\t\topen: null,\r\n\t\t\tselect: null,\r\n\t\t\tstop:\t\t\t\tnull,\r\n\t\t\tready:\t\tnull\r\n\t\t},\r\n\t\t\r\n\t\t_create: function () {\r\n\t\t\tvar that = this,\r\n\t\t\t\ttext;\r\n\r\n\t\t\tthat.colorpicker_index = _colorpicker_index++;\r\n\r\n\t\t\tthat.widgetEventPrefix = 'colorpicker';\r\n\r\n\t\t\tthat.opened\t\t= false;\r\n\t\t\tthat.generated\t= false;\r\n\t\t\tthat.inline\t\t= false;\r\n\t\t\tthat.changed\t= false;\r\n\r\n\t\t\tthat.dialog\t\t= null;\r\n\t\t\tthat.button\t\t= null;\r\n\t\t\tthat.image\t\t= null;\r\n\t\t\tthat.overlay\t= null;\r\n\t\t\t\r\n\t\t\tthat.events = {\r\n\t\t\t\twindow_resize:\t\t\tnull,\r\n\t\t\t\tdocument_keydown:\t\tnull,\r\n\t\t\t\tdocument_click_html:\tnull\r\n\t\t\t};\r\n\r\n\t\t\tthat.mode\t\t= that.options.mode;\r\n\r\n\t\t\tif (that.element.is('input') || that.options.inline === false) {\r\n\t\t\t\t// Initial color\r\n\t\t\t\tthat._setColor(that.element.is('input') ? that.element.val() : that.options.color);\r\n\t\t\t\tthat._callback('init');\r\n\r\n\t\t\t\t// showOn focus\r\n\t\t\t\tif (/\\bfocus|all|both\\b/.test(that.options.showOn)) {\r\n\t\t\t\t\tthat.element.on('focus', function () {\r\n\t\t\t\t\t\tthat.open();\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tif (/\\bfocus|all|both\\b/.test(that.options.hideOn)) {\r\n\t\t\t\t\tthat.element.on('focusout', function (e) {\r\n\t\t\t\t\t\tthat.close();\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// showOn click\r\n\t\t\t\tif (/\\bclick|all|both\\b/.test(that.options.showOn)) {\r\n\t\t\t\t\tthat.element.on('click', function (e) {\t\t\t\t\t\t\r\n\t\t\t\t\t\tif (that.opened && /\\bclick|all|both\\b/.test(that.options.hideOn)) {\r\n\t\t\t\t\t\t\tthat.close();\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthat.open();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// showOn button\r\n\t\t\t\tif (/\\bbutton|all|both\\b/.test(that.options.showOn)) {\r\n\t\t\t\t\tif (that.options.buttonImage !== '') {\r\n\t\t\t\t\t\ttext = that.options.buttonText || that._getRegional('button');\r\n\r\n\t\t\t\t\t\tthat.image = $('<img/>').attr({\r\n\t\t\t\t\t\t\t'src':\t\tthat.options.buttonImage,\r\n\t\t\t\t\t\t\t'alt':\t\ttext,\r\n\t\t\t\t\t\t\t'title':\ttext\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tif (that.options.buttonClass) {\r\n\t\t\t\t\t\t\tthat.image.attr('class', that.options.buttonClass);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthat._setImageBackground();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (that.options.buttonImageOnly && that.image) {\r\n\t\t\t\t\t\tthat.button = that.image;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthat.button = $('<button type=\"button\"></button>').html(that.image || that.options.buttonText).button();\r\n\t\t\t\t\t\tthat.image = that.image ? $('img', that.button).first() : null;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthat.button.insertAfter(that.element).click(function () {\r\n\t\t\t\t\t\tif (!that.options.disabled) {\r\n\t\t\t\t\t\t\tif (that.opened && /\\bbutton|all|both\\b/.test(that.options.hideOn)) {\r\n\t\t\t\t\t\t\t\tthat.close();\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tthat.open();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// showOn alt\r\n\t\t\t\tif (/\\balt|all|both\\b/.test(that.options.showOn)) {\t\t\t\t\t\r\n\t\t\t\t\t$(that.options.altField).on('click', function () {\r\n\t\t\t\t\t\tif (that.opened && /\\balt|all|both\\b/.test(that.options.hideOn)) {\r\n\t\t\t\t\t\t\tthat.close();\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthat.open();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (that.options.autoOpen) {\r\n\t\t\t\t\tthat.open();\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\t\t\t\tthat.inline = true;\r\n\r\n\t\t\t\tthat._generate();\r\n\t\t\t\tthat.opened = true;\r\n\t\t\t}\r\n\r\n\t\t\t// Disable Widget-style\r\n\t\t\t(that.element.is(':disabled') || that.options.disabled) && that.disable();\r\n\t\t\t\r\n\t\t\t// Set callback just before creation ending\r\n\t\t\tthat._callback('ready');\r\n\r\n\t\t\treturn this;\r\n\t\t},\r\n\r\n\t\t_setOption: function(key, value) {\r\n\t\t\tswitch (key) {\r\n\t\t\t\tcase 'disabled':\r\n\t\t\t\t\tthis[value ? 'disable' : 'enable']();\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'swatches':\r\n\t\t\t\t\tthis.options.swatches = value;\r\n\t\t\t\t\tthis.parts.swatches.init();\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\t$.Widget.prototype._setOption.apply(this, arguments);\r\n\t\t},\r\n\r\n\t\tenable: function () {\r\n\t\t\t//$.Widget.prototype.enable.call(this);\r\n\t\t\tthis.element && this.element.prop('disabled', false);\r\n\t\t\tthis.button && this.button.prop('disabled', false);\r\n\t\t\tthis.dialog && this.dialog.removeClass('ui-colorpicker-disabled');\r\n\t\t\tthis.options.disabled = false;\r\n\r\n\t\t\tthis.parts && $.each(this.parts, function (index, part) {\r\n\t\t\t\tpart.disable && part.disable(false);\r\n\t\t\t});\r\n\t\t},\r\n\t\t\r\n\t\tdisable: function () {\r\n\t\t\t//$.Widget.prototype.disable.call(this);\r\n\t\t\tthis.element && this.element.prop('disabled', true);\r\n\t\t\tthis.button && this.button.prop('disabled', true);\r\n\t\t\tthis.dialog && this.dialog.addClass('ui-colorpicker-disabled');\r\n\t\t\tthis.options.disabled = true;\r\n\r\n\t\t\tthis.parts && $.each(this.parts, function (index, part) {\r\n\t\t\t\tpart.disable && part.disable(true);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t_setImageBackground: function() {\r\n\t\t\tif (this.image && this.options.buttonColorize) {\r\n\t\t\t\tthis.image.css('background-color', this.color.set? this._formatColor('RGBA', this.color) : '');\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * If an alternate field is specified, set it according to the current color.\r\n\t\t */\r\n\t\t_setAltField: function () {\r\n\t\t\tif (this.options.altOnChange && this.options.altField && this.options.altProperties) {\r\n\t\t\t\tvar index,\r\n\t\t\t\t\tproperty,\r\n\t\t\t\t\tproperties = this.options.altProperties.split(',');\r\n\r\n\t\t\t\tfor (index = 0; index <= properties.length; ++index) {\r\n\t\t\t\t\tproperty = $.trim(properties[index]);\r\n\t\t\t\t\tswitch (property) {\r\n\t\t\t\t\t\tcase 'color':\r\n\t\t\t\t\t\tcase 'fill':\r\n\t\t\t\t\t\tcase 'stroke':\r\n\t\t\t\t\t\tcase 'background-color':\r\n\t\t\t\t\t\tcase 'backgroundColor':\r\n\t\t\t\t\t\tcase 'outline-color':\r\n\t\t\t\t\t\tcase 'border-color':\r\n\t\t\t\t\t\t\t$(this.options.altField).css(property, this.color.set? this.color.toCSS() : '');\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.options.altAlpha && \r\n\t\t\t\t\t$(this.options.altField).css('opacity', this.color.set? this.color.getAlpha() : '');\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_setColor: function(text) {\r\n\t\t\tthis.color\t\t\t= this._parseColor(text) || new $.colorpicker.Color();\r\n\t\t\tthis.currentColor\t= this.color.copy();\r\n\r\n\t\t\tthis._setImageBackground();\r\n\t\t\tthis._setAltField();\r\n\t\t},\r\n\r\n\t\tsetColor: function(text) {\r\n\t\t\tthis._setColor(text);\r\n\t\t\tthis._change();\r\n\t\t},\r\n\r\n\t\tgetColor: function(format) {\r\n\t\t\treturn this._formatColor(format || this.options.colorFormat, this.color);\r\n\t\t},\r\n\r\n\t\t_generateInline: function() {\r\n\t\t\tvar that = this;\r\n\r\n\t\t\t$(that.element).html(that.options.inlineFrame ? _container_inlineFrame : _container_inline);\r\n\r\n\t\t\tthat.dialog = $('.ui-colorpicker', that.element);\r\n\t\t},\r\n\r\n\t\t_generatePopup: function() {\r\n\t\t\tvar that = this;\r\n\r\n\t\t\tthat.dialog = $(_container_popup).appendTo('body');\r\n\r\n\t\t\t// Close on clicking outside window and controls\r\n\t\t\tif (that.events.document_click_html === null) {\r\n\t\t\t\t$(document).on('touchstart click', 'html', that.events.document_click_html = function (event) {\r\n\t\t\t\t\tif (!that.opened || event.target === that.element[0] || that.overlay) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Check if clicked on any part of dialog\r\n\t\t\t\t\tif (that.dialog.is(event.target) || that.dialog.has(event.target).length > 0) {\r\n\t\t\t\t\t\tthat.element.blur();\t// inside window!\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Check if clicked on known external elements\r\n\t\t\t\t\tvar p,\r\n\t\t\t\t\t\tparents = $(event.target).parents();\r\n\t\t\t\t\t// add the event.target in case of buttonImageOnly and closeOnOutside both are set to true\r\n\t\t\t\t\tparents.push(event.target);\r\n\t\t\t\t\tfor (p = 0; p <= parents.length; ++p) {\r\n\t\t\t\t\t\t// button\r\n\t\t\t\t\t\tif (that.button !== null && parents[p] === that.button[0]) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// showOn alt\r\n\t\t\t\t\t\tif (/\\balt|all|both\\b/.test(that.options.showOn) && $(that.options.altField).is(parents[p])) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// no closeOnOutside\r\n\t\t\t\t\tif (!that.options.closeOnOutside) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthat.close(that.options.revert);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (that.events.document_keydown === null) {\r\n\t\t\t\t$(document).on('keydown', that.events.document_keydown = function (event) {\r\n\t\t\t\t\t// close on ESC key\r\n\t\t\t\t\tif (that.opened && event.keyCode === 27 && that.options.closeOnEscape) {\r\n\t\t\t\t\t\tthat.close(that.options.revert);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// OK on Enter key\r\n\t\t\t\t\tif (that.opened && event.keyCode === 13 && that.options.okOnEnter) {\r\n\t\t\t\t\t\tthat.close();\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// Close (with OK) on tab key in element\r\n\t\t\tthat.element.keydown(function (event) {\r\n\t\t\t\tif (event.keyCode === 9) {\r\n\t\t\t\t\tthat.close();\r\n\t\t\t\t}\r\n\t\t\t}).keyup(function (event) {\r\n\t\t\t\tvar color = that._parseColor(that.element.val());\r\n\t\t\t\tif (color && !that.color.equals(color)) {\r\n\t\t\t\t\tthat.color = color;\r\n\t\t\t\t\tthat._change();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t_generate: function () {\r\n\t\t\tvar that = this,\r\n\t\t\t\tindex,\r\n\t\t\t\tpart,\r\n\t\t\t\tparts_list,\r\n\t\t\t\tlayout_parts,\r\n\t\t\t\ttable,\r\n\t\t\t\tclasses;\r\n\r\n\t\t\tthat._setColor(that.inline || !that.element.is('input') ? that.options.color : that.element.val());\r\n\r\n\t\t\tthat[that.inline ? '_generateInline' : '_generatePopup']();\r\n\r\n\t\t\t// Determine the parts to include in this colorpicker\r\n\t\t\tif (typeof that.options.parts === 'string') {\r\n\t\t\t\tif ($.colorpicker.partslists[that.options.parts]) {\r\n\t\t\t\t\tparts_list = $.colorpicker.partslists[that.options.parts];\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// automatic\r\n\t\t\t\t\tparts_list = $.colorpicker.partslists[that.inline ? 'inline' : 'popup'];\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tparts_list = that.options.parts;\r\n\t\t\t}\r\n\r\n\t\t\t// Add any parts to the internal parts list\r\n\t\t\tthat.parts = {};\r\n\t\t\t$.each(parts_list, function(index, part) {\r\n\t\t\t\tif ($.colorpicker.parts[part]) {\r\n\t\t\t\t\tthat.parts[part] = new $.colorpicker.parts[part](that);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (!that.generated) {\r\n\t\t\t\tlayout_parts = [];\r\n\r\n\t\t\t\t$.each(that.options.layout, function(part, pos) {\r\n\t\t\t\t\tif (that.parts[part]) {\r\n\t\t\t\t\t\tlayout_parts.push({\r\n\t\t\t\t\t\t\t'part': part,\r\n\t\t\t\t\t\t\t'pos': pos\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\ttable = $(_layoutTable(layout_parts, function(cell, x, y) {\r\n\t\t\t\t\tclasses = ['ui-colorpicker-' + cell.part + '-container'];\r\n\r\n\t\t\t\t\tif (x > 0) {\r\n\t\t\t\t\t\tclasses.push('ui-colorpicker-padding-left');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (y > 0) {\r\n\t\t\t\t\t\tclasses.push('ui-colorpicker-padding-top');\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn '<td class=\"' + classes.join(' ') + '\"'\r\n\t\t\t\t\t\t+ (cell.pos[2] > 1 ? ' colspan=\"' + cell.pos[2] + '\"' : '')\r\n\t\t\t\t\t\t+ (cell.pos[3] > 1 ? ' rowspan=\"' + cell.pos[3] + '\"' : '')\r\n\t\t\t\t\t\t+ ' valign=\"top\"></td>';\r\n\t\t\t\t})).appendTo(that.dialog);\r\n\t\t\t\tif (that.options.inlineFrame) {\r\n\t\t\t\t\ttable.addClass('ui-dialog-content ui-widget-content');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthat._initAllParts();\r\n\t\t\t\tthat._updateAllParts();\r\n\t\t\t\tthat.generated = true;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_effectGeneric: function (element, show, slide, fade, callback) {\r\n\t\t\tvar that = this;\r\n\r\n\t\t\tif ($.effects && $.effects[that.options.showAnim]) {\r\n\t\t\t\telement[show](that.options.showAnim, that.options.showOptions, that.options.duration, callback);\r\n\t\t\t} else {\r\n\t\t\t\telement[(that.options.showAnim === 'slideDown' ?\r\n\t\t\t\t\t\t\t\tslide\r\n\t\t\t\t\t\t\t:\t(that.options.showAnim === 'fadeIn' ?\r\n\t\t\t\t\t\t\t\t\tfade\r\n\t\t\t\t\t\t\t\t:\tshow))]((that.options.showAnim ? that.options.duration : null), callback);\r\n\t\t\t\tif ($.isFunction(callback) && (!that.options.showAnim || !that.options.duration)) {\r\n\t\t\t\t\tcallback();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_effectShow: function(element, callback) {\r\n\t\t\tthis._effectGeneric(element, 'show', 'slideDown', 'fadeIn', callback);\r\n\t\t},\r\n\r\n\t\t_effectHide: function(element, callback) {\r\n\t\t\tthis._effectGeneric(element, 'hide', 'slideUp', 'fadeOut', callback);\r\n\t\t},\r\n\t\t\t\t\r\n\t\topen: function() {\r\n\t\t\tvar that = this,\r\n\t\t\t\toffset,\r\n\t\t\t\tbottom, right,\r\n\t\t\t\theight, width,\r\n\t\t\t\tx, y,\r\n\t\t\t\tzIndex,\r\n\t\t\t\telement,\r\n\t\t\t\tposition;\r\n\r\n\t\t\tif (!that.opened) {\r\n\t\t\t\tthat._generate();\r\n\t\t\t\t\r\n\t\t\t\tif (that.element.is(':hidden')) {\r\n\t\t\t\t\telement = $('<div/>').insertBefore(that.element);\r\n\t\t\t\t} else {\r\n\t\t\t\t\telement = that.element;\r\n\t\t\t\t}\t\t\t\r\n\t\t\t\t\r\n\t\t\t\tif (that.element.is(':hidden')) {\r\n\t\t\t\t\telement.remove();\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\t// Automatically find highest z-index.\r\n\t\t\t\tzIndex = 0;\r\n\t\t\t\t$(that.element[0]).parents().each(function() {\r\n\t\t\t\t\tvar z = $(this).css('z-index');\r\n\t\t\t\t\tif ((typeof(z) === 'number' || typeof(z) === 'string') && z !== '' && !isNaN(z)) {\r\n\t\t\t\t\t\tif (z > zIndex) {\r\n\t\t\t\t\t\t\tzIndex = parseInt(z, 10);\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\t$(this).siblings().each(function() {\r\n\t\t\t\t\t\t\tvar z = $(this).css('z-index');\r\n\t\t\t\t\t\t\tif ((typeof(z) === 'number' || typeof(z) === 'string') && z !== '' && !isNaN(z)) {\r\n\t\t\t\t\t\t\t\tif (z > zIndex) {\r\n\t\t\t\t\t\t\t\t\tzIndex = parseInt(z, 10);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tzIndex += 2;\r\n\t\t\t\tthat.dialog.css('z-index', zIndex);\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\tif (that.options.modal) {\r\n\t\t\t\t\tthat.overlay = $('<div class=\"ui-widget-overlay\"></div>').appendTo('body').css('z-index', zIndex - 1);\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\tif (that.events.window_resize !== null) {\r\n\t\t\t\t\t\t$(window).off('resize', that.events.window_resize);\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tthat.events.window_resize = function() {\r\n\t\t\t\t\t\tif (that.overlay) {\r\n\t\t\t\t\t\t\tthat.overlay.width($(document).width());\r\n\t\t\t\t\t\t\tthat.overlay.height($(document).height());\t\t\t\t\t\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t$(window).on('resize', that.events.window_resize);\r\n\t\t\t\t\tthat.events.window_resize();\t\t\t\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthat._effectShow(this.dialog);\r\n\r\n\t\t\t\tif (that.options.position) {\r\n\t\t\t\t\tposition = $.extend({}, that.options.position);\r\n\t\t\t\t\tif (position.of === 'element') {\r\n\t\t\t\t\t\tposition.of = element;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tposition = {\r\n\t\t\t\t\t\tmy:\t\t\t'left top',\r\n\t\t\t\t\t\tat:\t\t\t'left bottom',\r\n\t\t\t\t\t\tof:\t\t\telement,\r\n\t\t\t\t\t\tcollision:\t'flip'\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t\tthat.dialog.position(position);\r\n\t\t\t\t\r\n\t\t\t\tthat.opened = true;\r\n\t\t\t\tthat._callback('open');\r\n\r\n\t\t\t\t// Without waiting for domready the width of the map is 0 and we\r\n\t\t\t\t// wind up with the cursor stuck in the upper left corner\r\n\t\t\t\t$(function() {\r\n\t\t\t\t\tthat._repaintAllParts();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tclose: function (cancel) {\r\n\t\t\tvar that = this;\r\n\r\n\t\t\tif (!that.opened) {\r\n\t\t\t\treturn;\r\n\t\t\t}\t\t\t\t\r\n\t\t\t\t\r\n if (cancel) {\r\n\t\t\t\tthat.color = that.currentColor.copy();\r\n that._change();\r\n that._callback('cancel');\r\n } else {\r\n\t\t\t\tthat.currentColor\t= that.color.copy();\r\n that._callback('ok');\r\n }\r\n\t\t\tthat.changed\t\t= false;\r\n\r\n\t\t\tif (that.overlay) {\r\n\t\t\t\t$(window).off('resize', that.events.window_resize);\t\t\t\t\t\r\n\t\t\t\tthat.overlay.remove();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t// tear down the interface\r\n\t\t\tthat._effectHide(that.dialog, function () {\r\n\t\t\t\tthat.dialog.remove();\r\n\t\t\t\tthat.dialog\t\t= null;\r\n\t\t\t\tthat.generated\t= false;\r\n\r\n\t\t\t\tthat.opened\t\t= false;\r\n\t\t\t\tthat._callback('close');\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tdestroy: function() {\r\n\t\t\tvar that = this;\r\n\t\t\tif (that.events.document_click_html !== null) {\r\n\t\t\t\t$(document).off('touchstart click', 'html', that.events.document_click_html);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (that.events.document_keydown !== null) {\r\n\t\t\t\t$(document).off('keydown', that.events.document_keydown);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (that.events.window_resize !== null) {\r\n\t\t\t\t$(window).off('resize', that.events.window_resize);\t\t\t\t\t\r\n\t\t\t}\t\t\t\r\n\t\t\t\r\n\t\t\tthis.element.off();\r\n\r\n\t\t\tif (this.overlay) {\r\n\t\t\t\tthis.overlay.remove();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (this.dialog !== null) {\r\n\t\t\t\tthis.dialog.remove();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (this.image !== null) {\r\n\t\t\t\tthis.image.remove();\r\n\t\t\t}\r\n\r\n\t\t\tif (this.button !== null) {\r\n\t\t\t\tthis.button.remove();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_callback: function (callback) {\r\n\t\t\tvar that = this,\r\n\t\t\t\tdata,\r\n\t\t\t\tlab;\r\n\r\n\t\t\tif (that.color.set) {\r\n\t\t\t\tdata = {\r\n\t\t\t\t\tformatted: that._formatColor(that.options.colorFormat, that.color),\r\n\t\t\t\t\tcolorPicker: that\r\n\t\t\t\t};\r\n\r\n\t\t\t\tdata.hex\t= that.color.toHex();\r\n\t\t\t\tdata.css\t= that.color.toCSS();\r\n\t\t\t\tdata.a\t\t= that.color.getAlpha();\r\n\t\t\t\tdata.rgb\t= that.color.getRGB();\r\n\t\t\t\tdata.hsv\t= that.color.getHSV();\r\n\t\t\t\tdata.cmyk\t= that.color.getCMYK();\r\n\t\t\t\tdata.hsl\t= that.color.getHSL();\r\n\r\n\t\t\t\tlab = that.color.getLAB();\r\n\t\t\t\tlab.a = (lab.a * 2) - 1;\r\n\t\t\t\tlab.b = (lab.b * 2) - 1;\r\n\t\t\t\tdata.lab\t= lab;\r\n\r\n\t\t\t\treturn that._trigger(callback, null, data);\r\n\t\t\t} else {\r\n\t\t\t\treturn that._trigger(callback, null, {\r\n\t\t\t\t\tformatted: '',\r\n\t\t\t\t\tcolorPicker: that\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_initAllParts: function () {\r\n\t\t\t$.each(this.parts, function (index, part) {\r\n\t\t\t\tif (part.init) {\r\n\t\t\t\t\tpart.init();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t_updateAllParts: function () {\r\n\t\t\t$.each(this.parts, function (index, part) {\r\n\t\t\t\tif (part.update) {\r\n\t\t\t\t\tpart.update();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t_repaintAllParts: function () {\r\n\t\t\t$.each(this.parts, function (index, part) {\r\n\t\t\t\tif (part.repaint) {\r\n\t\t\t\t\tpart.repaint();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\t\t\r\n\t\t_change: function (stoppedChanging /* = true */) {\r\n\t\t\t// Limit color palette\r\n\t\t\tif (this.color.set && this.options.limit && $.colorpicker.limits[this.options.limit]) {\r\n\t\t\t\t$.colorpicker.limits[this.options.limit](this.color, this);\r\n\t\t\t}\r\n\r\n\t\t\t// Set changed if different from starting color\r\n\t\t\tthis.changed = !this.color.equals(this.currentColor);\r\n\r\n\t\t\t// update input element content\r\n\t\t\tif (!this.inline) {\r\n\t\t\t\tif (!this.color.set) {\r\n\t\t\t\t\tif (this.element.val() !== '') {\r\n\t\t\t\t\t\tthis.element.val('').change();\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (!this.color.equals(this._parseColor(this.element.val()))) {\r\n\t\t\t\t\tthis.element.val(this._formatColor(this.options.colorFormat, this.color)).change();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._setImageBackground();\r\n\t\t\t}\r\n\r\n\t\t\t// Set the alt field\r\n\t\t\tthis._setAltField();\r\n\r\n\t\t\t// update color option\r\n\t\t\tthis.options.color = this.color.set ? this.color.toCSS() : '';\r\n\r\n\t\t\tif (this.opened) {\r\n\t\t\t\tthis._repaintAllParts();\r\n\t\t\t}\r\n\r\n\t\t\t// callbacks\r\n\t\t\tthis._callback('select');\r\n\r\n\t\t\tif (typeof stoppedChanging === 'undefined' ? true : !!stoppedChanging) {\r\n\t\t\t\tthis._callback('stop');\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// This will be deprecated by jQueryUI 1.9 widget\r\n\t\t_hoverable: function (e) {\r\n\t\t\te.hover(function () {\r\n\t\t\t\te.addClass(\"ui-state-hover\");\r\n\t\t\t}, function () {\r\n\t\t\t\te.removeClass(\"ui-state-hover\");\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t// This will be deprecated by jQueryUI 1.9 widget\r\n\t\t_focusable: function (e) {\r\n\t\t\te.focus(function () {\r\n\t\t\t\te.addClass(\"ui-state-focus\");\r\n\t\t\t}).blur(function () {\r\n\t\t\t\te.removeClass(\"ui-state-focus\");\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t_getRegional: function(name) {\r\n\t\t\treturn $.colorpicker.regional[this.options.regional][name] !== undefined ?\r\n\t\t\t\t$.colorpicker.regional[this.options.regional][name] : $.colorpicker.regional[''][name];\r\n },\r\n\r\n\t\t_getSwatches: function() {\r\n\t\t\tif (typeof(this.options.swatches) === 'string') {\r\n\t\t\t\treturn $.colorpicker.swatches[this.options.swatches];\r\n\t\t\t}\r\n\r\n\t\t\tif ($.isPlainObject(this.options.swatches)) {\r\n\t\t\t\treturn this.options.swatches;\r\n\t\t\t}\r\n\r\n\t\t\treturn $.colorpicker.swatches.html;\r\n\t\t},\r\n\t\t\r\n\t\t_eachSwatch: function (callback) {\r\n\t\t\tvar currentSwatches = this._getSwatches(),\r\n\t\t\t\tname;\r\n\t\t\t$.each(currentSwatches, function (nameOrIndex, swatch) {\r\n\t\t\t\tname = $.isArray(currentSwatches) ? swatch.name : nameOrIndex;\r\n\t\t\t\treturn callback(name, swatch);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t_getSwatch: function(name) {\r\n\t\t\tvar swatch = false;\r\n\r\n\t\t\tthis._eachSwatch(function(swatchName, current) {\r\n\t\t\t\tif (swatchName.toLowerCase() == name.toLowerCase()) {\r\n\t\t\t\t\tswatch = current;\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn swatch;\r\n },\r\n\t\t\r\n\t\t_parseFormat: function(format, text) {\r\n\t\t\tvar that = this,\r\n\t\t\t\ttypeRegexps = {\r\n\t\t\t\t\tx:\tfunction() {return '([0-9a-fA-F]{2})';}\r\n\t\t\t\t,\td:\tfunction() {return '([12]?[0-9]{1,2})';}\r\n\t\t\t\t,\tf:\tfunction() {return '([0-9]*\\\\.?[0-9]*)';}\r\n\t\t\t\t,\tp:\tfunction() {return '([0-9]*\\\\.?[0-9]*)';}\r\n\t\t\t\t},\r\n\t\t\t\ttypeConverters = {\r\n\t\t\t\t\tx:\tfunction(v)\t{return parseInt(v, 16) / 255.;}\r\n\t\t\t\t,\td:\tfunction(v)\t{return v / 255.;}\r\n\t\t\t\t,\tf:\tfunction(v)\t{return v;}\r\n\t\t\t\t,\tp:\tfunction(v)\t{return v * 0.01;}\r\n\t\t\t\t},\r\n\t\t\t\tsetters = {\r\n\t\t\t\t\tr:\t'setRGB'\r\n\t\t\t\t,\tg:\t'setRGB'\r\n\t\t\t\t,\tb:\t'setRGB'\r\n\t\t\t\t,\th:\t'setHSV'\r\n\t\t\t\t,\ts:\t'setHSV'\r\n\t\t\t\t,\tv:\t'setHSV'\r\n\t\t\t\t,\tc:\t'setCMYK'\r\n\t\t\t\t,\tm:\t'setCMYK'\r\n\t\t\t\t,\ty:\t'setCMYK'\r\n\t\t\t\t,\tk:\t'setCMYK'\r\n\t\t\t\t,\tL:\t'setLAB'\r\n\t\t\t\t,\tA:\t'setLAB'\r\n\t\t\t\t,\tB:\t'setLAB'\r\n\t\t\t\t},\r\n\t\t\t\tsetterChannels = {\r\n\t\t\t\t\tsetRGB:\t\t[ 'r', 'g', 'b']\r\n\t\t\t\t,\tsetHSV:\t\t[ 'h', 's', 'v' ]\r\n\t\t\t\t,\tsetCMYK:\t[ 'c', 'm', 'y', 'k' ]\r\n\t\t\t\t,\tsetLAB:\t\t[ 'L', 'A', 'B' ]\r\n\t\t\t\t},\r\n\t\t\t\tchannels = [],\r\n\t\t\t\tconverters = [],\t\t\t\t\t\t\r\n\t\t\t\tsetter = null,\r\n\t\t\t\tcolor,\r\n\t\t\t\tpattern;\r\n\r\n\t\t\t// Construct pattern\r\n\t\t\tpattern = format.replace(/[()\\\\^$.|?*+[\\]]/g, function(m) {\r\n\t\t\t\treturn '\\\\'+m;\r\n\t\t\t});\r\n\r\n\r\n\t\t\tpattern = pattern.replace(/\\\\?[argbhsvcmykLAB][xdfp]/g, function(variable) {\r\n\t\t\t\tif (variable.match(/^\\\\/)) {\r\n\t\t\t\t\treturn variable.slice(1);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar channel = variable.charAt(0),\r\n\t\t\t\t\ttype = variable.charAt(1);\r\n\r\n\t\t\t\tchannels.push(channel);\r\n\t\t\t\tconverters.push(typeConverters[type]);\r\n\t\t\t\tif (setters[channel]) {\r\n\t\t\t\t\tsetter = setters[channel];\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn typeRegexps[type]();\r\n\t\t\t});\r\n\r\n\t\t\tif (setter) {\r\n\t\t\t\tvar values = text.match(new RegExp(pattern));\r\n\t\t\t\tif (values) {\r\n\t\t\t\t\tvar args = [],\r\n\t\t\t\t\t\tchannelIndex;\r\n\t\t\t\t\t\r\n\t\t\t\t\tvalues.shift();\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t$.each(setterChannels[setter], function(index, channel) {\r\n\t\t\t\t\t\tchannelIndex = $.inArray(channel, channels);\r\n\t\t\t\t\t\targs[index] = converters[channelIndex](values[channelIndex]);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tcolor = new $.colorpicker.Color();\r\n\t\t\t\t\tcolor[setter].apply(color, args);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\treturn color;\r\n\t\t},\r\n\r\n _parseColor: function(text) {\r\n var that = this,\r\n\t\t\t\tcolor;\r\n\t\t\r\n\t\t\tvar formats = $.isArray(that.options.colorFormat)\r\n\t\t\t\t\t? that.options.colorFormat\r\n\t\t\t\t\t: [ that.options.colorFormat ];\r\n\r\n\t\t\t$.each(formats, function(index, format) {\r\n\t\t\t\tif ($.colorpicker.parsers[format]) {\r\n\t\t\t\t\tcolor = $.colorpicker.parsers[format](text, that);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcolor = that._parseFormat(format, text);\r\n\t\t\t\t}\r\n\t\t\t\r\n\t\t\t\tif (color) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tif (!color) {\r\n\t\t\t\t// fallback; check all registered parsers\r\n\t\t\t\t$.each($.colorpicker.parsers, function(name, parser) {\r\n\t\t\t\t\tcolor = parser(text, that);\r\n\t\t\t\t\tif (color) {\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (color) {\r\n\t\t\t\treturn color;\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n },\r\n\r\n\t\t_exactName: function(color) {\r\n\t\t\tvar name\t= false;\r\n\r\n\t\t\tthis._eachSwatch(function(n, swatch) {\r\n\t\t\t\tif (color.equals(new $.colorpicker.Color(swatch.r, swatch.g, swatch.b))) {\r\n\t\t\t\t\tname = n;\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn name;\r\n\t\t},\r\n\r\n\t\t_closestName: function(color) {\r\n\t\t\tvar rgb\t\t\t= color.getRGB(),\r\n\t\t\t\tdistance\t= null,\r\n\t\t\t\tname\t\t= false,\r\n\t\t\t\td;\r\n\r\n\t\t\tthis._eachSwatch(function(n, swatch) {\r\n\t\t\t\td = color.distance(new $.colorpicker.Color(swatch.r, swatch.g, swatch.b));\r\n\t\t\t\tif (d < distance || distance === null) {\r\n\t\t\t\t\tname = n;\r\n\t\t\t\t\tif (d <= 1e-20) {\t// effectively 0 by maximum rounding error\r\n\t\t\t\t\t\treturn false;\t// can't get much closer than 0\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdistance = d;\t// safety net\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn name;\r\n\t\t},\r\n\r\n\t\t_formatColor: function (formats, color) {\t\t\t\r\n\t\t\tvar that\t\t= this,\r\n\t\t\t\ttext\t\t= null,\r\n\t\t\t\ttypes\t\t= {\t'x':\tfunction(v) {return _intToHex(v * 255);}\r\n\t\t\t\t\t\t\t,\t'd':\tfunction(v) {return Math.round(v * 255);}\r\n\t\t\t\t\t\t\t,\t'f':\tfunction(v) {return v;}\r\n\t\t\t\t\t\t\t,\t'p':\tfunction(v) {return v * 100.;}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\tchannels\t= color.getChannels();\r\n\r\n\t\t\tif (!$.isArray(formats)) {\r\n\t\t\t\tformats = [formats];\r\n\t\t\t}\r\n\r\n\t\t\t$.each(formats, function(index, format) {\r\n\t\t\t\tif ($.colorpicker.writers[format]) {\r\n\t\t\t\t\ttext = $.colorpicker.writers[format](color, that);\t\t\r\n\t\t\t\t\treturn (text === false);\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttext = format.replace(/\\\\?[argbhsvcmykLAB][xdfp]/g, function(m) {\r\n\t\t\t\t\t\tif (m.match(/^\\\\/)) {\r\n\t\t\t\t\t\t\treturn m.slice(1);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn types[m.charAt(1)](channels[m.charAt(0)]);\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\treturn text;\r\n\t\t}\r\n\t});\r\n\t\r\n\treturn $.vanderlee.colorpicker;\r\n}));\r\n"],"names":["$","document","ready","initDropdowns","$container","find","each","this","parent","dropdown","selector","getMaxZ","elem","maxZ","parents","addBack","z","css","isNaN","Math","max","cursor","outline","on","e","preventDefault","fn","qtip","defaults","extend","position","my","at","hide","event","evt","$target","title","attr","data","trim","extraOpts","qtipClass","qtipHTMLContainer","qtipHTML","length","next","disabled","closest","hasClass","removeAttr","positionOptions","overwrite","target","show","type","content","text","html","replace","events","originalEvent","render","api","destroy","style","classes","colorbox","maxHeight","maxWidth","loop","photo","returnFocus","removeClass","navigator","userAgent","match","value","getAttribute","ui","dialog","overlayInstances","stopPropagation","readOnly","key","select","showFormErrors","location","hash","eventType","categoryId","eventUUID","lecture","$T","gettext","meeting","conference","url","build_url","Indico","Urls","EventCreation","event_type","category_id","event_uuid","ajaxDialog","widget","options","qBubbleOptions","effect","method","cache","success","onClose","qtipConstructor","_create","self","_","pick","ajaxOptions","omit","returnData","ajax","complete","IndicoUI","Dialogs","Util","progress","error","handleAjaxError","xhr","isFunction","call","element","loadedURL","getResponseHeader","updateContent","$form","killProgress","set","initForms","ajaxForm","beforeSubmit","new_value","id","js","append","hidden","get","remove","qbubble","jQuery","category","actionButtonText","confirmation","emptyCategoryText","openInDialog","dialogTitle","dialogSubtitle","actionOn","categoriesWithoutEventProposalRights","message","categoriesWithoutEventProposalOrCreationRights","categoriesWithoutEventCreationRights","categoriesWithoutCategoryManagementRights","categoriesDescendingFrom","ids","categories","groups","onAction","_categories","_subcategories","_searchResultData","_currentCategoryRequest","_currentSearchRequest","isObject","_fillCache","_categoryId","_createInDialog","_createInline","addClass","_createList","_createSearchField","_createBindings","goToCategory","$content","class","subtitle","outerHTML","closeButton","fullyModal","onOpen","contentContainer","children","$category","$categoryTree","$categoryResultsList","$categoryResultsInfo","$spinner","$placeholderEmpty","$placeholderNoResults","$categoryList","_toggleSearchResultsView","$searchInput","placeholder","prepend","realtimefilter","wait","callback","searchCategories","_clearSearch","$this","_onAction","parentId","focus","color","Palette","highlight","_buildBreadcrumbs","path","clickable","$breadcrumbs","tag","idx","$item","$segment","toggleClass","format","_buildCategory","isSubcategory","withBreadcrumbs","clickableBreadcrumbs","$categoryTitle","parent_path","_buildSidePanel","$protectionIcon","is_protected","$protection","before","_buildCurrentCategory","_buildSubcategory","$subcategory","can_access","forSubcategory","$buttonWrapper","$button","canActOn","_canActOn","allowed","last","$arrowUp","$info","ngettext","deep_category_count","deep_event_count","$categories","$events","$separator","_buildPlaceholder","$placeholder","toLowerCase","_buildNoResultsPlaceholder","_ellipsizeBreadcrumbs","availableSpace","width","$ellipsis","outerWidth","$segments","middleIndex","floor","eq","replaceWith","_highlightQuery","query","$result","$title","indexStart","search","indexEnd","prefix","substring","suffix","empty","_renderCurrentCategory","$currentCategory","_renderCategoryTree","subcategories","subcategory","_postRenderList","_renderSearchResults","is_favorite","_renderSearchResultInfo","count","totalCount","$stats","$clear","statsMaxWidth","getBoundingClientRect","ceil","hasProtectedCategories","scrollTop","_getCurrentCategory","dfd","Deferred","resolve","defer","_fetchCategory","promise","_getCategoryTree","scId","push","_getSearchResults","_fetchSearchResults","then","Categories","info","dataType","beforeSend","_toggleLoading","status","_isInDOM","_fetchReachableCategories","infoFrom","contentType","JSON","stringify","exclude","map","keys","n","q","abort","jqXHR","statusText","_fillSingleCategoryCache","bind","fillCache","pluck","supercategories","_toggleTreeView","res","undefined","close","confirmPrompt","withMessage","result","canActOnCategories","_canActOnCategories","canActOnCategoriesDescendingFrom","_canActOnCategoriesDescendingFrom","canActOnCategoriesWithoutEventCreationRights","_canActOnCategoriesWithoutEventCreationRights","canActOnCategoriesWithoutCategoryManagementRights","_canActOnCategoriesWithoutCategoryManagementRights","canActOnCategoriesWithoutEventProposalRights","_canActOnCategoriesWithoutEventProposalRights","canActOnCategoriesWithoutEventProposalOrCreationRights","_canActOnCategoriesWithoutEventProposalOrCreationRights","can_create_events","can_manage","can_propose_events","pathIds","reverse","i","contains","group","state","disableInput","prop","visible","toggle","is","slideUp","total_count","onSelect","checkedItemIcon","uncheckedItemIcon","items","footerElements","containerClasses","filterPlaceholder","selectedItem","_createItemsDict","qbubbleContent","_createQbubbleContent","itemsDict","prerender","_filter","handleInput","textTyped","val","found","indexOf","clearableinput","onInput","onClear","focusOnStart","_destroy","index","dropdownContainer","filterWrapper","filterInput","itemsContainer","itemId","itemDict","isSelected","itemData","itemIcon","filter","click","_handleSelect","colors","background","_selectItem","_sortItems","_appendFooterItems","updateItemList","selectItem","newItem","newElem","oldItem","_deselectItem","item","_increaseBrightness","_getContrastYIQ","detach","sort","a","b","$a","$b","natSortCompare","appendTo","hex","percent","r","parseInt","substr","g","toString","hexColor","container","actionButton","onClick","validation","clearable","disableenter","emptyvalue","invalidclass","opt","typeWatch","_callback","captureLength","_delayedCallback","setTimeout","clear","setValue","trigger","update","delayed","validate","containerElement","permissionsInfo","eventId","eventRoles","categoryRoles","_updateValue","newValue","trackId","roleData","parse","_renderACLField","querySelector","component","React","TrackACLField","permissionInfo","scrollOnOpen","onChange","ReactDOM","Object","entries","forEach","_ref","window","setupButtonsBooleanWidget","fieldId","trueCaption","falseCaption","WTFButtonsBooleanField","checkboxId","getElementById","setupCaptchaWidget","containerId","fieldName","settings","Captcha","name","wtf","setupDateWidget","required","allowClear","earliest","latest","linkedField","notBefore","notAfter","field","WTFDateField","dateId","setupDateTimeWidget","timezoneFieldId","timezone","defaultTime","locale","WTFDateTimeField","timeId","uses24HourFormat","localeUses24HourTime","setupDurationWidget","WTFDurationField","setupTimeWidget","WTFTimeField","setupLinkListWidget","wrapperId","WTFLinkListField","setupMultipleTagSelectWidget","choices","popup","WTFMultipleTagSelectField","setupOccurrencesWidget","WTFOccurrencesField","setupParticipantVisibilityWidget","values","WTFParticipantVisibilityField","_excluded","_excluded2","ownKeys","t","getOwnPropertySymbols","o","getOwnPropertyDescriptor","enumerable","apply","_objectSpread","arguments","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","PersonListItem","person","roles","canEdit","canDelete","onDelete","onEdit","onClickRole","extraParams","PrincipalItem","as","List","Item","className","Icon","PrincipalType","user","avatarURL","Content","detail","email","affiliation","_ref2","label","icon","active","Popup","Label","size","renderPluginComponents","Translate","string","propTypes","PropTypes","isRequired","defaultProps","DraggablePerson","_ref3","drag","dragType","onMove","props","_objectWithoutProperties","dragRef","itemRef","useSortableItem","moveItem","separateHandle","ref","Ref","innerRef","PersonLinkSection","_ref4","sectionLabel","persons","defaultRoles","dragIndex","hoverIndex","slice","splice","SortableWrapper","accept","divided","relaxed","p","userId","firstName","lastName","__","scope","roleIdx","personIndex","roleIndex","role","section","v","_ref5","includes","PersonLinkField","_ref6","sessionUser","emptyMessage","autoSort","setAutoSort","hasPredefinedAffiliations","canEnterManually","defaultSearchExternal","nameFormat","validateEmailUrl","favoriteUsers","useFavoriteUsers","modalOpen","setModalOpen","useState","selected","setSelected","sections","x","sectionKeys","Set","othersCondition","has","others","formatName","_ref7","formattedLastName","toUpperCase","formattedFirstName","onAdd","existing","hooks","getPluginObjects","default","f","DndProvider","backend","HTML5Backend","Segment","attached","_ref8","plural","filterCondition","_p$roles","filtered","findIndex","concat","Button","Group","some","UserSearch","favorites","userIdentifier","onAddItems","triggerFactory","_extends","withExternalUsers","withEventPersons","initialFormValues","external","PersonDetailsModal","onSubmit","affiliationData","affiliationId","affiliationMeta","meta","otherPersons","_without","WTFPersonLinkField","_ref9","defaultValue","setPersons","displayOrder","_setAutoSort","every","inputField","useMemo","picked","_pick","_flatten","snakifyKeys","dispatchEvent","Event","bubbles","localeCompare","setupPersonLinkWidget","rest","address","phone","camelizeKeys","setupPrincipalListWidget","withGroups","withEventRoles","withCategoryRoles","withRegistrants","withEmails","principals","WTFPrincipalListField","setupPrincipalWidget","WTFPrincipalField","setupProtectionWidget","parentProtected","aclMessageUrl","hasInheritedAcl","permissionsFieldId","isUnlistedEvent","inputs","isProtected","checked","mode","_defer","setupTypeaheadWidget","minTriggerLength","typeaheadOptions","searchUrl","params","hint","cancelButton","mustSelectItem","minLength","source","dynamic","typeahead","FULL_ACCESS_PERMISSIONS","READ_ACCESS_PERMISSIONS","objectType","isUnlisted","hiddenPermissions","hiddenPermissionsInfo","_update","chain","sortBy","_type","$dataField","_renderRoleCode","code","borderColor","_renderLabel","principal","$labelBox","_renderEventRoleLabel","_renderCategoryRoleLabel","_renderOtherLabel","$text","extraText","$code","textDiv","iconClass","provider_title","_renderPermissions","permissions","$permissions","$permissionsList","_updateItem","cssClasses","css_class","description","_renderPermissionsButtons","$buttonsGroup","_renderEditBtn","_renderDeleteBtn","IPNetworkGroup","RegistrationForm","PermissionsDialog","confirmed","_renderItem","_renderHiddenPermissions","$dropdownButton","$hiddenPermissionsDiv","$descriptionDiv","_renderHiddenPermissionsList","hiddenUserPermissions","$list","perms","permissionList","join","$user","$entry","_renderDropdown","$dropdown","getText","$dropdownLink","prev","isRoleDropdown","_findEntryIndex","_renderDropdownItem","isEmpty","not","$dropdownItem","$itemContent","_addItems","_renderDuplicatesTooltip","$permissionsWidgetList","fadeIn","fadeOut","_render","anonymous","additionalPermissions","managersTitle","managers","isEventProtected","$eventRoleDropdown","$categoryRoleDropdown","$ipNetworkDropdown","$registrationFormDropdown","identifier","newPermissions","news","repeated","userSearchTrigger","triggerProps","groupSearchTrigger","FavoritesProvider","startsWith","familyName","GroupSearch","provider","localGroup","splitIdentifier","split","offsetWidth","scrollWidth","setupSUIColorPickerWidget","WTFSUIColorPicker","setupSearchDropdownWidget","WTFSearchDropdown","setupTinyMCEWidget","async","images","imageUploadURL","forceAbsoluteURLs","height","contentCSS","body","dataset","tinymceContentCss","old","tinymce","getConfig","showQTip","hideAfterDelay","$element","removeData","c","Clipboard","copyShortcut","test","platform","global","selectors","$elems","paramsSelector","replaceUpdate","highlightUpdate","reload","redirect","isPlainObject","Error","getParamsFromSelectors","promptMsg","execute","isDefaultPrevented","dialogClasses","hidePageHeader","confirmCloseUnsaved","dialogElement","customData","handleFlashes","updateHtml","href","successEvt","redirect_no_loading","form","action","submit","_getOptions","$elem","extra","updateOpts","context","formContainer","_handleClick","toggleDisabled","inlineAjaxForm","load","scrollToForm","_handleHtmlUpdate","initiallyHidden","setupAjaxForms","performAction","evtBefore","mathJax","fragment","permalink","stripArg","URLSearchParams","delete","newQueryString","pathname","accordion","toggleDetails","$trigger","wasVisible","slideToggle","fieldParams","getFormParams","datepicker","setDefaults","autoSize","buttonText","dateFormat","firstDay","nextText","prevText","showOn","viewport","tip","corner","opacity","tablesorter","sortReset","ajaxSetup","traditional","setRequestHeader","Dropzone","autoDiscover","handlerSkipped","setupDropzone","$dz","$flashArea","timeout","previewsContainer","autoProcessQueue","init","files","addFile","file","existingFile","filename","accepted","emit","content_type","uploadMultiple","isAjaxDialog","getQueuedFiles","getRejectedFiles","removeFile","processQueue","previewElement","editable","$field","deletedFiles","response","msg","param","paramName","csrf_token","dropzone","readyState","responseText","showReactErrorDialog","input","stickyTooltip","isElementInView","docViewTop","docViewBottom","elemTop","offset","top","showSaveCornerMessage","cornerMessage","actionLabel","progressMessage","actionCallback","hideSaveCornerMessage","$cornerMessage","forms","confirmField","confirmFieldName","passwordField","add","setCustomValidity","validatePasswordConfirmation","conditionField","requiredValues","checkedOnly","realField","hideFieldUnless","checked_only","triggerHandler","minChars","maxChars","minWords","maxWords","charCount","wordCount","countWords","validateLength","_resetData","serializeArray","console","warn","oldOnBeforeUnload","onbeforeunload","untouched","off","debounce","$collapseIcon","lockedForms","toggleAclField","aclField","end","aclIfProtected","protectionField","selfProtection","inheritedProtection","folderField","folderProtection","messageIfFolderProtected","protectionInfo","selectedFolder","enableIfChecked","checkboxContainer","checkboxSelector","buttonSelector","extraCheckCallback","force","$checkboxes","paginatedSelectAll","containerSelector","allSelectedSelector","selectionMessageSelector","totalRows","messages","allSelected","total","pageSelected","messageContainer","numChecked","numRows","_setAllSelected","_getAllSelected","isEverythingSelected","getDropzoneFiles","dropzoneField","getUploadingFiles","DROPZONE_FILE_KEYS","setDropzoneFiles","$forms","_doUpdateHtml","$html","parseHTML","ConfirmPopup","reject","open","choiceConfirmPrompt","choice1","choice2","SpecialRemovePopup","alertPopup","AlertPopup","flashed_messages","flashed","handleNotifications","notifications","notification","duration","box","_disappear","when","feedbackMessage","feedbackDuration","disappearHandler","prependTo","clearTimeout","always","uniqueId","round","Date","getTime","random","migrateMute","migrateTrace","require","assign","moment","i18n","defaultI18n","Taggle","dataHref","backSelector","clearFlashes","onLoadError","onError","getExtraData","confirmCloseMessage","ignoreOnBeforeUnload","savedFiles","loadDialog","showDialog","handled","hasChangedFields","dialogData","_doCloseDialog","ExclusivePopup","closeDialog","draw","canvas","prototype","postDraw","ajaxifyForms","submitted","injectJS","_onOpen","focusFirstField","union","isopen","callbackData","done","onCloseResult","_onClose","resultContainer","close_dialog","formUrl","closeSelector","formVisible","oldContent","triggerEvent","loadForm","loadedUrl","updateFormUrl","showForm","triggerShow","contents","onBeforeUnload","hideForm","animate","noInit","_getAjaxFormArgs","deferred","BuildError","argString","Array","err","constructor","converterFuncs","ListConverter","isArray","encodeURIComponent","splitObj","obj","names","original","suitable","rule","args","defaultArgs","diffArgNames","difference","build","tmp","processed","trace","part","is_dynamic","converters","pipe","unprocessed","template","qsParams","cleanParams","fixParams","rules","endpoint","BasePath","qs","setupSortableList","$wrapper","$lists","sortable","connectWith","containment","tolerance","forcePlaceholderSize","$li","targetClass","$destination","ajaxCheckbox","getOption","ctx","sendData","enabled","alwaysClearable","clearClass","clearOnEscape","focusOnClear","buttonBox","clearIcon","_clear","wrapper","wrap","_handleInput","after","_refreshClearIcon","blur","initSize","fontSize","lineHeight","setEmptyValue","setIconsVisibility","visibility","updateWidget","$preview","$colorInput","oldValue","colorpicker","colorFormat","altField","ok","cancel","effect_on","effect_off","time_on","time_off","positioning","relative_to","always_listen","_close","ul","_effect","siblings","_close_all","_open","sibl","positionReference","of","_menuize","li","link","newState","st","func","indico","disabledElementWithTooltip","elementClass","isUIButton","button","overlay","_setOption","Widget","setupCategoryPickerWidget","navigatorCategoryId","requireEventCreationRights","requireCategoryManagementRights","showEventCreationWarning","$categoryWarning","$dialogTrigger","hiddenData","navigatorCategory","updateWarningVisibility","has_children","has_events","categorynavigator","setupColorPickerWidget","showField","$formField","$colorField","indicoColorpicker","setupLinkingWidget","updateDropdownState","setupLocationWidget","inheritanceAllowed","venues","venueNames","venueMap","rooms","inheritedLocationData","helperText","venueInput","roomInput","usingDefault","latestUsedField","currentScrollPos","delta","validRoom","validVenue","preventGuessing","roomJustCleared","venueJustChanged","initializeInputs","room_name","venue_name","venue_id","highlightOption","room_id","inheriting","toggleDefaultLocation","isChecked","isInitStep","clearField","clearRoom","postSelectionActions","updateResultsList","node","resultHtmlList","resultsWrapper","outerHeight","justUse","justUseLink","item_name","first","latestVenueValue","latestRoomValue","cleanQuery","findRoomInVenue","venue","grep","room","toggleOpenResultsList","handleKeystrokes","typeaheadField","resultsAreOpen","activeItem","stopImmediatePropagation","searchOnFocus","emptyTemplate","display","onInit","helper","cleanStringFromScript","rawQuery","onClickBefore","onClickAfter","onLayoutBuiltBefore","onSearch","onShowLayout","onHideLayout","venueValue","onResult","resultCount","maxItem","roomValue","venueName","groupOrder","Typeahead","reorderCategories","updateVenueOnRoomChange","hideLayout","showLayout","activeOption","dropdownList","getLimitClass","remaining","updateLimits","$maxLengthInfo","maxLength","charsLeft","wordsLeft","setupMarkdownWidget","useMarkdownEditor","pagedown","solo","setupHelpTooltips","setupMultipleItemsWidget","uuidField","columns","columnChoices","initialIndex","widgetBody","addButton","deleteButton","saveButton","editButton","fixWidths","rowsChanged","moveTooltips","repositionTooltips","makeColData","col","forceEditable","sel","choiceID","numberInput","caption","min","step","createRow","row","adjust","column","clone","updateRow","editMode","removeRow","updateField","axis","distance","handle","forceHelperSize","originals","start","move","requiredFieldIsEmpty","invalidNumber","parseFloat","keyCode","setupOverrideMultipleItemsWidget","rowData","hasCSS","propertyName","resettableRadioButtons","ns","labels","parentLabel","radio","htmlFor","one","copyURLTooltip","hideEvent","dialogMessage","clipboardDialog","readonly","fixed","delay","ua","__gotoToday","_gotoToday","_isDisabledDatepicker","_setDateDatepicker","_selectDate","_getDateDatepicker","sticky","arg1","arg2","scrolling","scroll","eloffset","windowpos","now_scrolling","normal","resizable","widgetEventPrefix","_super","resetContainment","containerSize","innerHeight","innerWidth","parentData","draggable","_setContainment","newWidth","newHeight","helperProportions","droppable","disable","isover","isout","_out","enable","tooltip","tooltipClass","left","unwrap","urlParam","results","RegExp","exec","vendor","opera","mobileBrowser","fieldsCaption","parameterManager","parameterType","valueField","_handleEvents","_drawList","list","start_index","_updateValueField","_updateField","_drawNewItem","_deleteItem","which","oldDataItem","_updateDataItem","_deleteNewItem","_getField","_reinitList","_item","next_id","new_item","_addNewFieldInfo","scrollHeight","_scrollFix","_deleteNewFieldInfo","_removeFieldFromPM","_getFieldIndex","_nextId","_prevId","pop","_addFieldToPM","newInput","_validateValue","tabindex","clientHeight","getInfo","setInfo","newData","nullvalue","availableColors","numColumns","selectedColor","paletteTable","tr","_createTableRow","_paletteTable","td","colorBox","backgroundColor","textColor","styleObject","_updateSelection","setProperty","qtipOptions","suppress","mouse","multipleRecipientOptions","singleRecipientOptions","_initCheckboxes","elementID","condition","setting","defaultQtipOptions","_on","option","entry","createNested","nestedQtipOptions","originalHideCallback","originalShowCallback","defaultPrevented","_hasNestedOpen","_findConditionByName","ruleContext","conditionName","conditionChoices","conditionTypes","_renderRuleCondition","$select","optionTitle","_optionSelected","$opt","labelText","newOption","parsedValue","_listValue","_checkConditionIncompatibility","_onChange","ruleData","k","isEqual","conditionSpec","$condition","compatibleWith","compatibleConditions","_setConditionOption","_checkPlaceholder","_addRule","$ruleList","$removeButton","_removeRule","without","partial","_addNewRule","newRule","$addNewRuleButton","overflowType","blocker","parentsUntil","wheelup","wheelDelta","deltaY","factory","__webpack_modules__","__unused_webpack_module","d","clipboard","tiny_emitter","tiny_emitter_default","listen","listen_default","src_select","select_default","command","execCommand","actions_cut","selectedText","fakeCopyAction","fakeElement","isRTL","documentElement","createElement","border","padding","margin","yPosition","pageYOffset","setAttribute","createFakeElement","appendChild","actions_copy","HTMLInputElement","_typeof","Symbol","iterator","actions_default","_options$action","nodeType","hasAttribute","clipboard_typeof","_defineProperties","descriptor","configurable","writable","_setPrototypeOf","setPrototypeOf","__proto__","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","getPrototypeOf","getAttributeValue","attribute","_Emitter","subClass","superClass","TypeError","create","_inherits","Constructor","protoProps","staticProps","_this","instance","_classCallCheck","resolveOptions","listenClick","defaultAction","defaultTarget","defaultText","_this2","listener","delegateTarget","currentTarget","clearSelection","getSelection","removeAllRanges","actions","support","queryCommandSupported","module","Element","matches","proto","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","exports","parentNode","__unused_webpack_exports","_delegate","useCapture","listenerFn","addEventListener","removeEventListener","elements","querySelectorAll","HTMLElement","nodeList","String","delegate","listenNode","listenNodeList","listenSelector","nodeName","isReadOnly","setSelectionRange","removeAttribute","selection","range","createRange","selectNodeContents","addRange","E","once","evtArr","len","evts","liveEvents","TinyEmitter","__webpack_module_cache__","moduleId","getter","__esModule","definition","hasOwnProperty","it","wellKnownSymbol","definePropertyModule","UNSCOPABLES","ArrayPrototype","charAt","S","unicode","ArrayBuffer","DataView","NAME","NATIVE_ARRAY_BUFFER","DESCRIPTORS","classof","createNonEnumerableProperty","redefine","uid","Int8Array","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","ObjectPrototype","isPrototypeOf","TO_STRING_TAG","TYPED_ARRAY_TAG","NATIVE_ARRAY_BUFFER_VIEWS","TYPED_ARRAY_TAG_REQIRED","TypedArrayConstructorsList","Uint8Array","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigIntArrayConstructorsList","BigInt64Array","BigUint64Array","isTypedArray","klass","Function","aTypedArray","aTypedArrayConstructor","C","ARRAY","TypedArrayConstructor","exportTypedArrayMethod","KEY","property","forced","exportTypedArrayStaticMethod","isView","redefineAll","fails","anInstance","toInteger","toLength","toIndex","IEEE754","getOwnPropertyNames","arrayFill","setToStringTag","InternalStateModule","getInternalState","setInternalState","ARRAY_BUFFER","DATA_VIEW","PROTOTYPE","WRONG_INDEX","NativeArrayBuffer","$ArrayBuffer","$DataView","$DataViewPrototype","RangeError","packIEEE754","pack","unpackIEEE754","unpack","packInt8","number","packInt16","packInt32","unpackInt32","buffer","packFloat32","packFloat64","addGetter","view","isLittleEndian","intIndex","store","byteLength","bytes","byteOffset","conversion","NaN","ArrayBufferPrototype","j","testView","nativeSetInt8","setInt8","getInt8","setUint8","unsafe","bufferLength","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","toObject","toAbsoluteIndex","copyWithin","O","to","from","inc","argumentsLength","endPos","$forEach","STRICT_METHOD","arrayMethodIsStrict","callbackfn","callWithSafeIterationClosing","isArrayIteratorMethod","createProperty","getIteratorMethod","arrayLike","mapfn","mapping","iteratorMethod","toIndexedObject","createMethod","IS_INCLUDES","el","fromIndex","IndexedObject","arraySpeciesCreate","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_OUT","NO_HOLES","that","specificCreate","boundFunction","filterOut","nativeLastIndexOf","lastIndexOf","NEGATIVE_ZERO","FORCED","searchElement","V8_VERSION","SPECIES","METHOD_NAME","array","foo","Boolean","argument","aFunction","IS_RIGHT","memo","right","originalArray","anObject","iteratorClose","ENTRIES","ITERATOR","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","object","TO_STRING_TAG_SUPPORT","classofRaw","CORRECT_ARGUMENTS","tryGet","callee","getOwnPropertyDescriptorModule","F","IteratorPrototype","createPropertyDescriptor","Iterators","returnThis","IteratorConstructor","bitmap","toPrimitive","propertyKey","createIteratorConstructor","IS_PURE","IteratorsCore","BUGGY_SAFARI_ITERATORS","KEYS","VALUES","Iterable","DEFAULT","IS_SET","CurrentIteratorPrototype","methods","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","EXISTS","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","getBuiltIn","version","process","versions","v8","setGlobal","copyConstructorProperties","isForced","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","noTargetGet","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","re","REPLACE_KEEPS_$0","REPLACE","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","flags","nativeRegExpMethod","nativeMethod","regexp","str","forceStringMethod","stringMethod","regexMethod","arg","variable","namespace","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","matched","captures","namedCaptures","replacement","tailPos","m","symbols","ch","capture","check","globalThis","abs","pow","log","LN2","mantissaLength","exponent","mantissa","exponentLength","eMax","eBias","rt","sign","Infinity","nBits","propertyIsEnumerable","dummy","Wrapper","NewTargetPrototype","functionToString","inspectSource","NATIVE_WEAK_MAP","objectHas","shared","sharedKey","hiddenKeys","WeakMap","wmget","wmhas","wmset","metadata","facade","STATE","enforce","getterFor","feature","detection","normalize","POLYFILL","NATIVE","MATCH","isRegExp","returnMethod","PrototypeOfArrayIteratorPrototype","arrayIterator","NEW_ITERATOR_PROTOTYPE","URL","searchParams","toJSON","username","host","objectKeys","getOwnPropertySymbolsModule","propertyIsEnumerableModule","nativeAssign","A","B","symbol","alphabet","chr","T","activeXDocument","enumBugKeys","documentCreateElement","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","LT","NullProtoObject","domain","ActiveXObject","iframeDocument","iframe","JS","write","temp","parentWindow","NullProtoObjectViaActiveX","src","contentWindow","Properties","IE8_DOM_DEFINE","nativeDefineProperty","P","Attributes","nativeGetOwnPropertyDescriptor","internalObjectKeys","CORRECT_PROTOTYPE_GETTER","nativePropertyIsEnumerable","NASHORN_BUG","V","aPossiblePrototype","setter","CORRECT_SETTER","getOwnPropertyNamesModule","enforceInternalState","TEMPLATE","simple","R","re1","re2","regexpFlags","stickyHelpers","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","lastIndex","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","reCopy","charsAdded","strCopy","multiline","ignoreCase","dotAll","RE","s","CONSTRUCTOR_NAME","TAG","SHARED","copyright","defaultConstructor","requireObjectCoercible","CONVERT_TO_STRING","pos","second","charCodeAt","codeAt","maxInt","regexNonASCII","regexSeparators","OVERFLOW_ERROR","stringFromCharCode","fromCharCode","digitToBasic","digit","adapt","numPoints","firstTime","baseMinusTMin","base","encode","output","counter","ucs2decode","currentValue","inputLength","bias","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","baseMinusT","encoded","whitespaces","whitespace","ltrim","rtrim","integer","toPositiveInteger","BYTES","PREFERRED_STRING","valueOf","TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS","ArrayBufferViewCore","ArrayBufferModule","toOffset","typedArrayFrom","setSpecies","inheritIfRequired","BYTES_PER_ELEMENT","WRONG_LENGTH","fromList","isArrayBuffer","isTypedArrayIndex","wrappedGetOwnPropertyDescriptor","wrappedDefineProperty","CLAMPED","GETTER","SETTER","NativeTypedArrayConstructor","TypedArrayConstructorPrototype","exported","addElement","typedArrayOffset","$length","$len","checkCorrectnessOfIteration","iterable","speciesConstructor","postfix","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","arrayBufferModule","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_INDEX_EXCEEDED","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","$filter","$indexOf","nativeIndexOf","addToUnscopables","defineIterator","ARRAY_ITERATOR","iterated","kind","Arguments","$map","HAS_SPECIES_SUPPORT","nativeSlice","fin","deleteCount","insertCount","actualDeleteCount","actualStart","FunctionPrototype","FunctionPrototypeToString","nameRE","nativeGetPrototypeOf","TO_STRING","RegExpPrototype","nativeToString","NOT_GENERIC","INCORRECT_NAME","rf","STRING_ITERATOR","point","fixRegExpWellKnownSymbolLogic","advanceStringIndex","regExpExec","nativeMatch","maybeCallNative","matcher","rx","fullUnicode","matchStr","getSubstitution","reason","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","functionalReplace","accumulatedResult","nextSourcePosition","replacerArgs","callRegExpExec","arrayPush","MAX_UINT32","SUPPORTS_Y","SPLIT","nativeSplit","internalSplit","separator","limit","lim","lastLength","lastLastIndex","separatorCopy","splitter","unicodeMatching","$trim","forcedStringTrimMethod","$copyWithin","$every","$fill","fromSpeciesAndList","$findIndex","predicate","$find","$includes","ArrayIterators","arrayValues","arrayKeys","arrayEntries","nativeTypedArrayIterator","CORRECT_ITER_NAME","typedArrayValues","$join","$lastIndexOf","$reduceRight","$reduce","middle","$slice","$some","$sort","comparefn","begin","beginIndex","$toLocaleString","toLocaleString","TO_LOCALE_STRING_BUG","Uint8ArrayPrototype","arrayToString","arrayJoin","IS_NOT_ARRAY_METHOD","createTypedArrayConstructor","DOMIterables","COLLECTION_NAME","Collection","CollectionPrototype","ArrayIteratorMethods","ArrayValues","USE_NATIVE_URL","hasOwn","getIterator","$fetch","Headers","URL_SEARCH_PARAMS","URL_SEARCH_PARAMS_ITERATOR","getInternalParamsState","getInternalIteratorState","plus","sequences","percentSequence","percentDecode","sequence","decodeURIComponent","deserialize","serialize","parseSearchParams","attributes","shift","updateSearchParams","validateArgumentsLength","passed","URLSearchParamsIterator","URLSearchParamsConstructor","entryIterator","entryNext","updateURL","URLSearchParamsPrototype","getAll","entriesIndex","sliceIndex","fetch","headers","getState","EOF","arrayFrom","toASCII","URLSearchParamsModule","NativeURL","getInternalSearchParamsState","getInternalURLState","INVALID_SCHEME","INVALID_HOST","INVALID_PORT","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","parseHost","codePoints","parseIPv6","isSpecial","parseIPv4","percentEncode","C0ControlPercentEncodeSet","partsLength","numbers","radix","ipv4","parts","numbersSeen","ipv4Piece","swaps","swap","pieceIndex","compress","pointer","char","serializeHost","ignore0","unshift","ipv6","maxIndex","currStart","currLength","findLongestZeroSequence","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","specialSchemes","ftp","http","https","ws","wss","scheme","includesCredentials","password","cannotHaveUsernamePasswordPort","cannotBeABaseURL","isWindowsDriveLetter","normalized","startsWithWindowsDriveLetter","third","shortenURLsPath","pathSize","isSingleDot","segment","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","QUERY","FRAGMENT","parseURL","stateOverride","bufferCodePoints","failure","seenAt","seenBracket","seenPasswordToken","port","codePoint","encodedCodePoints","URLConstructor","baseState","urlString","searchParamsState","serializeURL","origin","getOrigin","protocol","getProtocol","getUsername","getPassword","getHost","hostname","getHostname","getPort","getPathname","getSearch","getSearchParams","getHash","URLPrototype","accessorDescriptor","nativeCreateObjectURL","createObjectURL","nativeRevokeObjectURL","revokeObjectURL","blob","toStringTag","_createForOfIteratorHelper","allowArrayLike","minLen","_arrayLikeToArray","_unsupportedIterableToArray","_e","normalCompletion","didErr","_e2","return","arr","arr2","dropzone_dist","Emitter","_callbacks","callbacks","_len","_key","_step","_iterator","makeEvent","eventName","cancelable","CustomEvent","createEvent","initCustomEvent","options_createForOfIteratorHelper","options_arrayLikeToArray","options_unsupportedIterableToArray","src_options","withCredentials","parallelUploads","chunking","forceChunking","chunkSize","parallelChunkUploads","retryChunks","retryChunksLimit","maxFilesize","createImageThumbnails","maxThumbnailFilesize","thumbnailWidth","thumbnailHeight","thumbnailMethod","resizeWidth","resizeHeight","resizeMimeType","resizeQuality","resizeMethod","filesizeBase","maxFiles","ignoreHiddenFiles","acceptedFiles","acceptedMimeTypes","autoQueue","addRemoveLinks","disablePreviews","hiddenInputContainer","renameFilename","renameFile","forceFallback","dictDefaultMessage","dictFallbackMessage","dictFallbackText","dictFileTooBig","dictInvalidFileType","dictResponseError","dictCancelUpload","dictUploadCanceled","dictCancelUploadConfirmation","dictRemoveFile","dictRemoveFileConfirmation","dictMaxFilesExceeded","dictFileSizeUnits","tb","gb","mb","kb","chunk","dzuuid","upload","uuid","dzchunkindex","dztotalfilesize","dzchunksize","dztotalchunkcount","totalChunkCount","dzchunkbyteoffset","chunksUploaded","fallback","messageElement","getElementsByTagName","child","span","textContent","innerText","getFallbackForm","resize","srcX","srcY","srcWidth","srcHeight","srcRatio","trgRatio","trgWidth","trgHeight","transformFile","resizeImage","previewTemplate","drop","classList","dragstart","dragend","dragenter","dragover","dragleave","paste","reset","addedfile","_step2","_iterator2","_step3","_iterator3","innerHTML","filesize","_removeLink","_step4","removeFileEvent","UPLOADING","confirm","_iterator4","removedfile","removeChild","_updateMaxFilesReachedClass","thumbnail","dataUrl","_step5","_iterator5","thumbnailElement","alt","_step6","_iterator6","errormultiple","processing","processingmultiple","uploadprogress","bytesSent","_step7","_iterator7","totaluploadprogress","sending","sendingmultiple","successmultiple","canceled","canceledmultiple","completemultiple","maxfilesexceeded","maxfilesreached","queuecomplete","addedfiles","dropzone_createForOfIteratorHelper","dropzone_arrayLikeToArray","dropzone_unsupportedIterableToArray","dropzone_classCallCheck","dropzone_defineProperties","dropzone_createClass","clickableElements","listeners","instances","elementOptions","optionsForElement","isBrowserSupported","getExistingFallback","getElement","getElements","getFilesWithStatus","QUEUED","ADDED","tagName","setupHiddenFileInput","hiddenFileInput","webkitURL","updateTotalUploadProgress","getAddedFiles","noPropagation","dataTransfer","types","containsFiles","returnValue","efct","effectAllowed","dropEffect","clickableElement","elementInside","removeAllFiles","totalUploadProgress","totalBytesSent","totalBytes","getActiveFiles","existingFallback","fieldsString","_getParamName","fields","getFallback","_i","_arr","elementListeners","_this3","removeEventListeners","cancelUpload","setupEventListeners","selectedSize","selectedUnit","units","unit","getAcceptedFiles","webkitGetAsEntry","_addFilesFromItems","handleFiles","clipboardData","transform","_this4","isFile","getAsFile","isDirectory","_addFilesFromDirectory","directory","_this5","dirReader","createReader","errorHandler","methodName","readEntries","fullPath","isValidFile","_this6","uuidv4","_renameFile","_enqueueThumbnail","_errorProcessing","enqueueFile","_step8","_iterator8","_this7","_this8","_thumbnailQueue","_processThumbnailQueue","_this9","_processingThumbnail","createThumbnail","cancelIfNecessary","_step9","_iterator9","_this10","resizedDataURL","toDataURL","ExifRestore","restore","dataURL","dataURItoBlob","fixOrientation","_this11","fileReader","FileReader","onload","createThumbnailFromUrl","readAsDataURL","mockFile","imageUrl","crossOrigin","_this12","resizeThumbnail","_this13","img","getComputedStyle","loadExif","EXIF","getData","getTag","orientation","resizeInfo","getContext","translate","scale","rotate","PI","drawImageIOSFix","trgX","trgY","onerror","processingLength","queuedFiles","processFiles","processFile","_step10","_iterator10","uploadFiles","_step11","groupedFiles","_getFilesWithXhr","_iterator11","CANCELED","_step12","_iterator12","_groupedFile","_this14","_transformFiles","transformedFiles","transformedFile","chunked","_transformedFile","chunks","handleNextChunk","chunkIndex","dataBlock","webkitSlice","retries","_uploadData","finishedChunkUpload","allFinished","SUCCESS","_finished","dataBlocks","_i2","_step13","_this15","XMLHttpRequest","_iterator13","resolveOption","_finishedUploading","ontimeout","_handleUploadError","onprogress","_updateFilesUploadProgress","Accept","headerName","headerValue","formData","FormData","additionalParams","_getChunk","_step14","_iterator14","_file","_addFormElementData","_i3","submitRequest","_this16","doneCounter","_loop","_step15","_iterator15","inputName","inputType","_step16","_iterator16","_file2","loaded","_step17","_iterator17","responseType","send","_step18","_iterator18","_step19","_iterator19","ERROR","_len2","objects","_key2","_i4","_objects","initClass","camelize","forElement","discover","dropzones","checkElements","_step20","_iterator20","_step21","_iterator21","blockedBrowsers","capableBrowser","File","Blob","blacklistedBrowsers","_step22","_iterator22","dataURI","byteString","atob","mimeString","ab","ia","asc","rejectedItem","div","childNodes","els","_step23","_iterator23","_step24","_iterator24","question","rejected","_step25","mimeType","baseMimeType","_iterator25","validType","ACCEPTED","PROCESSING","sx","sy","sw","sh","dx","dy","dw","dh","vertSquashRatio","naturalWidth","ih","naturalHeight","drawImage","getImageData","ey","py","ratio","detectVerticalSquash","KEY_STR","chr1","chr2","chr3","enc1","enc2","enc3","enc4","origFileBase64","resizedFileBase64","rawImage","decode64","segments","slice2Segments","image","exifManipulation","encode64","exifArray","getExifArray","newImageArray","insertExif","seg","imageData","buf","separatePoint","mae","ato","rawImageArray","head","endPoint","_autoDiscoverFunction","win","doc","root","rem","pre","createEventObject","doScroll","frameElement","poll","contentLoaded","$overlay","$box","$wrap","$topBorder","$leftBorder","$rightBorder","$bottomBorder","$related","$window","$loaded","$loadingBay","$loadingOverlay","$current","$slideshow","$next","$prev","$close","$groupControls","interfaceHeight","interfaceWidth","loadedHeight","loadedWidth","closing","loadingTimer","publicMethod","inline","transition","speed","initialWidth","initialHeight","scalePhotos","preloading","overlayClose","escKey","arrowKey","bottom","fastIframe","reposition","slideshow","slideshowAuto","slideshowSpeed","slideshowStart","slideshowStop","photoRegex","retinaImage","retinaUrl","retinaSuffix","current","previous","xhrError","imgError","trapFocus","onLoad","onComplete","onCleanup","onClosed","rel","createImg","Image","attrs","createIframe","frameBorder","allowTransparency","allowFullscreen","boxElement","event_open","event_load","event_complete","event_cleanup","event_closed","event_purge","requests","previousCSS","$tag","cssText","winheight","Settings","dataAttr","getIndex","increment","newIndex","setSize","dimension","isImage","devicePixelRatio","setClass","timeOut","unbind","stop","launch","w","h","setResize","$inline","prep","request","mw","mh","insertBefore","marginTop","appendHTML","addBindings","clickHandler","shiftKey","altKey","metaKey","ctrlKey","live","$obj","loadedCallback","scrollLeft","modalDimensions","tempSpeed","dequeue","scrolltop","overflow","removeFilter","fadeTo","fileapi","formdata","ajaxSubmit","clk","offsetX","clk_x","clk_y","offsetY","pageX","pageY","offsetLeft","offsetTop","N","debug","postError","attr2","jquery","M","X","ajaxSettings","iframeSrc","veto","beforeSerialize","u","l","formToArray","semantic","filtering","extraData","resetForm","clearForm","includeHidden","replaceTarget","merge","y","closeKeepAlive","processData","uploadProgress","lengthComputable","ownerDocument","iframeTarget","aborted","responseXML","getAllResponseHeaders","contentDocument","skipEncodingOverride","encoding","enctype","attachEvent","forceSync","D","detachEvent","XMLDocument","isXMLDoc","Number","textarea","parseXML","loadXML","DOMParser","parseFromString","L","parseJSON","eval","dataFilter","globalEval","delegation","beforeFormUnbind","ajaxFormUnbind","isReady","makeArray","fieldValue","formSerialize","fieldSerialize","selectedIndex","specified","clearFields","clearInputs","defaultChecked","multiple","defaultSelected","define","amd","jQueryVersionSince","v1","v2","rVersionParts","v1p","v2p","compareVersions","migrateVersion","disabledPatches","migrateDisablePatches","migrateEnablePatches","migrateIsPatchEnabled","patchCode","migrateWarnings","warnedAbout","migrateWarn","migrateDeduplicateWarnings","migrateWarnProp","migrateWarnFuncInternal","newFunc","origFunc","noop","migratePatchAndWarnFunc","migratePatchFunc","migrateReset","compatMode","findProp","class2type","oldInit","oldFind","rattrHashTest","rattrHashGlob","err1","op","err2","holdReady","uniqueSort","expr","pseudos","oldAjax","rjsonp","jQXHR","fail","ajaxPrefilter","jsonp","oldRemoveAttr","oldToggleClass","rmatchNonSpace","camelCase","letter","patchNeeded","bool","origFnCss","internalCssNumber","internalSwapCall","ralphaStart","rautoPx","oldHook","cssHooks","ret","cssProps","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","fontWeight","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","order","orphans","widows","zIndex","zoom","cssNumber","camelName","origThis","origData","curData","sameKeys","hasData","fx","intervalValue","intervalMsg","oldTweenRun","Tween","run","linearEasing","pct","easing","interval","requestAnimationFrame","oldLoad","oldEventAdd","originalFix","fix","fixHooks","fixHook","addProp","_migrated_","special","setup","fnOver","fnOut","rxhtmlTag","makeMarkup","implementation","createHTMLDocument","UNSAFE_restoreLegacyHtmlPrefilter","changed","warnIfChanged","origOffset","origParam","ajaxTraditional","oldDeferred","tuples","Callbacks","newDeferredPipe","fns","newDefer","tuple","returned","notify","exceptionHook","tmpSource","dynamicGroups","hasDynamicGroups","generatedGroupCount","groupBy","searchGroups","generateGroups","requestGroups","tmpResult","groupTemplate","resultHtml","resultCountPerGroup","slugify","isContentEditable","comparedItems","hintIndex","filters","dropdownFilter","static","dropdownFilterAll","isDropdownEvent","backdrop","hasDragged","focusOnly","displayEmptyTemplate","__construct","accent","multiselect","maxItemPerGroup","dynamicFilter","backdropOnFocus","ttl","compression","blurOnTab","generateOnLoad","templateValue","correlativeTemplate","loadingAnimation","asyncResult","onReady","onLayoutBuiltAfter","onNavigateBefore","onNavigateAfter","onEnter","onLeave","onDropdownFilter","onSendRequest","onReceiveRequest","onPopulateSource","onCacheSave","onCancel","filterButton","dropdownItem","labelContainer","appVersion","_validateCacheMethod","setItem","removeItem","extendOptions","LZString","matchOn","onNavigate","unifySourceFormat","executeCallback","delegateEvents","generateSource","buildBackdropLayout","assignQuery","cancelOnBackspace","cancelMultiselectItem","navigate","toggleCancelButtonVisibility","searchResult","buildLayout","filterGenerateSource","getItem","decompressFromUTF16","populateSource","generateRequestObject","handleRequests","validForGroup","extendXhrObject","isDuplicated","jsonpCallback","compiled","compressToUTF16","incrementGeneratedGroup","buildDropdownItemLayout","resetInput","clearActiveItem","addActiveItem","preventInputChange","buildHintLayout","getTemplateValue","getCaret","matchedKey","resetLayout","searchResultData","removeAccent","resultItemCount","isMultiselectUniqueData","I","buildHtmlLayout","tmpResultHtml","limitTemplate","generateHref","addMultiselectItemLayout","setCaretAtEnd","getMultiselectComparedData","insertAfter","float","unselectable","buildDropdownLayout","all","adjustInputSize","isDynamicFilterEnabled","modifier","getValue","buildMultiselectLayout","populateMultiselectData","paddingLeft","paddingTop","buildCancelButtonLayout","mousedown","replaceAt","selectionStart","createTextRange","duplicate","moveToBookmark","getBookmark","setEndPoint","rangeCount","getRangeAt","commonAncestorContainer","endOffset","collapse","moveToElementText","createPseudo","dataName","disableSelection","enableSelection","baseEasings","dataSpace","dataSpaceStyle","dataSpaceAnimated","effects","stepHooks","rplusequals","stringParsers","execResult","space","Color","green","blue","alpha","spaces","rgba","red","hsla","hue","saturation","lightness","mod","supportElem","clamp","allowEmpty","def","stringParse","inst","_rgba","parser","parsed","spaceName","transparent","hue2rgb","_default","inArray","compare","same","localCache","isCache","_space","used","other","startColor","startValue","endValue","blend","opaque","rgb","toRgbaString","toHslaString","toHexString","includeAlpha","diff","local","vtype","_hsla","cur","hook","curElem","colorInit","expand","expanded","aqua","black","fuchsia","gray","lime","maroon","navy","olive","purple","silver","teal","white","yellow","orig","classAnimationActions","shorthandStyles","borderBottom","borderLeft","borderRight","borderTop","borderWidth","getElementStyles","defaultView","currentStyle","styles","styleDifference","oldStyle","newStyle","setAttr","prevObject","animateClass","queue","applyClassChange","animated","baseClass","allAnimations","styleInfo","opts","classNames","switchClass","_normalizeArguments","speeds","standardAnimationOption","parseClip","uiBackCompat","save","setMode","createWrapper","activeElement","removeWrapper","scaledDimensions","direction","clipToBox","animation","clip","queueLength","saveStyle","restoreStyle","getBaseline","createPlaceholder","cssPosition","marginBottom","marginLeft","marginRight","removePlaceholder","dataKey","cleanUp","setTransition","factor","cssUnit","effectMethod","defaultMode","queueName","modes","prefilter","normalizedMode","cleanup","cssClip","clipObj","transfer","targetFixed","fixTop","fixLeft","endPosition","startPosition","clipInit","Sine","cos","Circ","sqrt","Elastic","sin","Back","Bounce","pow2","bounce","easeIn","up","vertical","down","horizontal","backgroundImage","showhide","anims","times","animateTo","queuelen","escapeSelector","selectorEscape","focusable","hasTabindex","mapName","focusableIfVisible","fieldset","formResetMixin","_formResetHandler","refresh","_bindFormResetHandler","_unbindFormResetHandler","ie","BACKSPACE","COMMA","DELETE","DOWN","END","ENTER","ESCAPE","HOME","LEFT","PAGE_DOWN","PAGE_UP","PERIOD","RIGHT","SPACE","TAB","UP","ancestor","ancestors","pushStack","plugin","plugins","allowDisconnected","cachedScrollbarWidth","rhorizontal","rvertical","roffset","rposition","rpercent","_position","getOffsets","offsets","parseCss","getDimensions","raw","isWindow","scrollbarWidth","w1","w2","innerDiv","clientWidth","getScrollInfo","within","overflowX","isDocument","overflowY","hasOverflowX","getWithinInfo","withinElement","atOffset","targetWidth","targetHeight","targetOffset","basePosition","dimensions","scrollInfo","collision","horizontalOffset","verticalOffset","collisionPosition","using","elemWidth","elemHeight","collisionWidth","collisionHeight","myOffset","dir","feedback","important","fit","newOverRight","withinOffset","collisionPosLeft","overLeft","overRight","newOverBottom","collisionPosTop","overTop","overBottom","flip","newOverLeft","newOverTop","flipfit","safeActiveElement","safeBlur","scrollParent","excludeStaticParent","overflowRegex","tabbable","tabIndex","removeUniqueId","widgetUuid","widgetSlice","cleanData","elems","_data","existingConstructor","basePrototype","proxiedPrototype","fullName","_createWidget","_proto","_childConstructors","_superApply","__super","__superApply","widgetName","widgetFullName","childPrototype","bridge","inputIndex","isMethodCall","methodValue","_init","defaultElement","eventNamespace","bindings","hoverable","classesElementLookup","_getCreateOptions","_setOptionDisabled","_trigger","_getCreateEventData","_removeClass","curOption","_setOptions","_setOptionClasses","classKey","currentElements","_classes","_toggleClass","full","processClassString","checkOption","unique","_untrackClassesElement","_addClass","suppressDisabledCheck","handlers","delegateElement","handler","handlerProxy","guid","_off","_delay","_hoverable","mouseenter","mouseleave","_focusable","focusin","focusout","defaultEffect","hasOptions","effectName","isEmptyObject","iconPosition","showLabel","isInput","originalLabel","hasTitle","_enhance","_updateIcon","_updateTooltip","displayBlock","_attachIcon","iconSpace","_attachIconSpace","newShowLabel","newIcon","isDisabled","icons","primary","secondary","checkboxradio","buttonset","controlgroup","_readType","_updateLabel","change","_getRadioGroup","nameSelector","_toggleClasses","toAdd","controlgroupCornerRegex","onlyVisible","_callChildMethod","childWidgets","controlgroupLabel","_initWidgets","wrapAll","instanceOptions","_resolveClassesValues","widgetElement","_updateCornerClass","_buildSimpleOptions","_spinnerOptions","_buttonOptions","_checkboxradioOptions","_selectmenuOptions","only","datepicker_instActive","datepicker_getZindex","Datepicker","_curInst","_keyEvent","_disabledInputs","_datepickerShowing","_inDialog","_mainDivId","_inlineClass","_appendClass","_triggerClass","_dialogClass","_disableClass","_unselectableClass","_currentClass","_dayOverClass","regional","closeText","currentText","monthNames","monthNamesShort","dayNames","dayNamesShort","dayNamesMin","weekHeader","showMonthAfterYear","yearSuffix","_defaults","showAnim","showOptions","defaultDate","appendText","buttonImage","buttonImageOnly","hideIfNoPrevNext","navigationAsDateFormat","gotoCurrent","changeMonth","changeYear","yearRange","showOtherMonths","selectOtherMonths","showWeek","calculateWeek","iso8601Week","shortYearCutoff","minDate","maxDate","beforeShowDay","beforeShow","onChangeMonthYear","numberOfMonths","showCurrentAtPos","stepMonths","stepBigMonths","altFormat","constrainInput","showButtonPanel","en","dpDiv","datepicker_bindHover","datepicker_handleMouseover","datepicker_extendRemove","markerClassName","maxRows","_widgetDatepicker","_attachDatepicker","_newInst","_connectDatepicker","_inlineDatepicker","selectedDay","selectedMonth","selectedYear","drawMonth","drawYear","_attachments","_doKeyDown","_doKeyPress","_doKeyUp","_autoSize","_disableDatepicker","_get","_showDatepicker","_lastInput","_hideDatepicker","findMax","maxI","date","setMonth","setDate","getDay","_formatDate","divSpan","_setDate","_getDefaultDate","_updateDatepicker","_updateAlternate","_dialogDatepicker","browserWidth","browserHeight","scrollX","scrollY","_dialogInst","_dialogInput","_pos","blockUI","_destroyDatepicker","_enableDatepicker","_getInst","_optionDatepicker","_getMinMaxDate","_changeDatepicker","_refreshDatepicker","noDefault","_setDateFromField","_getDate","dateStr","_selectDay","_adjustDate","_clearDate","chars","_possibleChars","charCode","lastVal","parseDate","_getFormatConfig","beforeShowSettings","isFixed","_findPos","offsetHeight","_checkOffset","_shouldFocusInput","_generateHTML","_attachHandlers","origyearshtml","numMonths","_getNumberOfMonths","cols","activeCell","yearshtml","dpWidth","dpHeight","inputWidth","inputHeight","viewWidth","viewHeight","postProcess","_tidyDialog","unblockUI","_checkExternalClick","period","_adjustInstDate","currentDay","currentMonth","currentYear","getDate","getMonth","getFullYear","_notifyChange","_selectMonthYear","month","year","formatDate","noWeekends","day","time","checkDate","iFormat","dim","iValue","shortYearCutoffTemp","doy","literal","lookAhead","getNumber","isDoubled","digits","num","getName","shortNames","longNames","pair","checkLiteral","_ticksTo1970","_getDaysInMonth","_daylightSavingAdjust","ATOM","COOKIE","ISO_8601","RFC_822","RFC_850","RFC_1036","RFC_1123","RFC_2822","RSS","TICKS","TIMESTAMP","W3C","formatNumber","dates","_restrictMinMax","_determineDate","offsetNumeric","offsetString","pattern","newDate","setHours","setMinutes","setSeconds","setMilliseconds","getHours","noChange","origMonth","origYear","today","selectDay","selectMonth","selectYear","maxDraw","gotoDate","controls","buttonPanel","dow","selectedDate","cornerClass","calender","thead","daysInMonth","leadDays","curRows","printDate","dRow","tbody","daySettings","otherMonth","tempDate","isMultiMonth","currentDate","_canAdjustMonth","_isInRange","_generateMonthYearHeader","_getFirstDayOfMonth","inMinYear","inMaxYear","years","thisYear","determineYear","endYear","monthHtml","minMax","curYear","curMonth","yearSplit","minYear","maxYear","initialized","otherArgs","autoOpen","buttons","closeOnEscape","minHeight","minWidth","modal","topOffset","beforeClose","dragStart","dragStop","resizeStart","resizeStop","sizeRelatedOptions","resizableRelatedOptions","originalCss","originalPosition","originalTitle","_createWrapper","uiDialog","_createTitlebar","_createButtonPane","_makeDraggable","_makeResizable","_isOpen","_trackFocus","_appendTo","_untrackInstance","_destroyOverlay","_focusedElement","opener","_hide","isOpen","moveToTop","_moveToTop","silent","moved","zIndices","zIndexMax","_focusTabbable","_size","_createOverlay","_show","_makeFocusTarget","hasFocus","uiDialogButtonPane","uiDialogTitlebarClose","_keepFocus","checkFocus","keydown","tabbables","uiDialogTitle","uiDialogTitlebar","_title","uiButtonSet","_createButtons","buttonOptions","filteredUi","_blockFrames","_unblockFrames","handles","resizeHandles","originalSize","alsoResize","_minHeight","_trackingInstances","exists","isVisible","resizableOptions","isDraggable","isResizable","nonContentHeight","minContentHeight","maxContentHeight","iframeBlocks","_allowInteraction","isOpening","overlays","dialogClass","addClasses","connectToSortable","cursorAt","grid","iframeFix","refreshPositions","revert","revertDuration","scrollSensitivity","scrollSpeed","snap","snapMode","snapTolerance","stack","_setPositionRelative","_setHandleClassName","_mouseInit","_removeHandleClassName","destroyOnClear","_mouseDestroy","_mouseCapture","_getHandle","_blurActiveElement","_mouseStart","_createHelper","_cacheHelperProportions","ddmanager","_cacheMargins","offsetParent","hasFixedAncestor","positionAbs","_refreshOffsets","_generatePosition","originalPageX","originalPageY","_adjustOffsetFromHelper","dropBehaviour","prepareOffsets","_mouseDrag","margins","_getParentOffset","relative","_getRelativeOffset","_convertPositionTo","_uiHash","_mouseUp","_mouseStop","dropped","handleElement","helperIsFunction","_isRootNode","po","scrollIsRootNode","isUserScrollable","ce","relativeContainer","constrainPosition","co","cancelHelperRemoval","uiSortable","sortables","isOver","_storedCSS","_helper","innermostIntersecting","_intersectsWith","containerCache","_parent","currentItem","fromOutside","_revert","_cursor","_opacity","scrollParentNotHidden","overflowOffset","scrolled","snapElements","$t","$o","ts","bs","ls","rs","x1","x2","y1","y2","snapping","release","snapItem","_zIndex","greedy","activate","deactivate","out","over","proportions","_addToManager","droppables","_splice","_activate","_addActiveClass","_deactivate","_removeActiveClass","_over","_addHoverClass","_removeHoverClass","_drop","custom","childrenIntersection","intersect","isOverAxis","reference","toleranceMode","absolute","droppablesLoop","greedyChild","parentInstance","intersects","hoverClass","activeClass","mouseHandled","_mouseDown","started","_mouseMoveDelegate","_mouseUpDelegate","_mouseMoved","_mouseStarted","_mouseDownEvent","btnIsLeft","elIsCancel","mouseDelayMet","_mouseDelayTimer","_mouseDistanceMet","_mouseDelayMet","_mouseMove","documentMode","ignoreMissingWhich","animateDuration","animateEasing","aspectRatio","autoHide","ghost","_num","_isNumber","_hasScroll","_aspectRatio","originalElement","_proportionallyResizeElements","elementIsWrapper","originalResizeStyle","_proportionallyResize","_setupHandles","_handles","resizing","exp","_removeHandles","hname","se","ne","nw","_renderAxis","padPos","padWrapper","curleft","curtop","_renderProxy","sizeDiff","originalMousePosition","_propagate","smp","_change","_updatePrevProperties","_updateVirtualBoundaries","_updateRatio","_respectSize","_updateCache","_applyChanges","pr","ista","soffseth","soffsetw","prevPosition","prevSize","forceAspectRatio","pMinWidth","pMaxWidth","pMinHeight","pMaxHeight","_vBoundaries","cpos","csize","ismaxw","ismaxh","isminw","isminh","cw","_getPaddingPlusBorderDimensions","widths","borders","paddings","prel","outerDimensions","elementOffset","cs","oc","containerOffset","containerPosition","woset","hoset","isParent","isOffsetRelative","cp","pRatio","cop","continueResize","ho","os","sum","gridX","gridY","ox","oy","isMaxWidth","isMaxHeight","isMinWidth","isMinHeight","slide","numPages","_keySliding","_mouseSliding","_animateOff","_handleIndex","_detectOrientation","_calculateNewMax","_refresh","_createRange","_createHandles","_setupEvents","_refreshValue","handleCount","existingHandles","_valueMin","normValue","closestHandle","mouseOverHandle","elementSize","_normValueFromMouse","_valueMax","thisDistance","_lastChangedValue","_start","_clickOffset","_slide","_stop","pixelTotal","pixelMouse","percentMouse","valueTotal","valueMouse","_trimAlignValue","uiHash","handleIndex","_hasMultipleValues","newVal","otherVal","newValues","_value","vals","_values","valsLength","_refreshRange","valModStep","alignValue","toFixed","_precision","precision","_precisionOf","decimal","lastValPercent","valPercent","valueMin","valueMax","oRange","_set","curVal","keyup","dropOnEmpty","beforeStop","receive","_isOverAxis","_isFloating","overrideHandle","validHandle","reverting","_refreshItems","_removeCurrentsFromItems","noActivation","currentContainer","domPosition","_createPlaceholder","storedCursor","storedStylesheet","_storedOpacity","_storedZIndex","_preserveHelperProportions","containers","dragging","itemElement","intersection","lastPositionAbs","_intersectsWithPointer","_intersectsWithSides","_rearrange","_contactContainers","_noFinalSort","_getItemsAsjQuery","connected","expression","toArray","dyClick","dxClick","isOverElementHeight","isOverElementWidth","isOverElement","forcePointerForContainers","floating","verticalDirection","horizontalDirection","_getDragVerticalDirection","_getDragHorizontalDirection","isOverBottomHalf","isOverRightHalf","_connectWith","queries","addItems","targetData","_queries","queriesLength","fast","toleranceElement","refreshContainers","_createTrPlaceholder","sourceTr","targetTr","dist","itemWithLeastDistance","posProperty","sizeProperty","nearBottom","innermostContainer","innermostIndex","hardRefresh","nextSibling","delayedTriggers","delayEvent","_inst","sender","rhash","collapsible","heightStyle","beforeActivate","beforeLoad","_isLocal","anchor","anchorUrl","locationUrl","running","_processTabs","_initialActive","tabs","anchors","_findActive","locationHash","tab","panel","_getPanelForTab","_tabKeydown","focusedTab","goingForward","_handlePageNav","activating","_focusNextTab","_panelKeydown","_findNextTab","lastTabIndex","constrain","_setupHeightStyle","_sanitizeSelector","lis","tablist","panels","prevTabs","prevAnchors","prevPanels","_getList","panelId","anchorId","originalAriaControls","_createPanel","_eventHandler","clickedIsActive","collapsing","toShow","toHide","eventData","oldTab","oldPanel","newTab","newPanel","_toggle","_getIndex","_ajaxSettings","_supportedInputTypes","allowSubmit","inputTypes","checkElement","timer","override","cb","watchElement","elementType","startWatch","timerWait","overrideBool","evtElementType","timerCallbackFx","rnothtmlwhite","nonce","rquery","r20","rantiCache","rheaders","rnoContent","rprotocol","prefilters","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","originalOptions","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","deep","flatOptions","lastModified","etag","isLocal","accepts","xml","json","responseFields","ajaxTransport","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","completed","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","overrideMimeType","finalText","crossDomain","hasContent","ifModified","nativeStatusText","responses","isSuccess","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","conv","throws","ajaxConvert","resolveWith","rejectWith","fireWith","getJSON","getScript","oldCallbacks","expando","originalSettings","callbackName","overwritten","responseContainer","jsonProp","removeProp","stripAndCollapse","script","scriptAttrs","charset","scriptCharset","now","xhrSuccessStatus","xhrSupported","cors","errorCallback","xhrFields","onabort","onreadystatechange","binary","access","boolHook","attrHandle","nType","attrHooks","radioValue","attrNames","isXML","lowercaseName","dataPriv","getClass","classesToArray","curValue","finalValue","stateVal","isValidValue","rfocusable","rclickable","propFix","propHooks","optSelected","checkOn","rreturn","valueIsFunction","valHooks","optionSet","toType","flag","createOptions","firing","memory","fired","locked","firingIndex","fire","stopOnFalse","lock","getProto","flat","fnToString","ObjectFunctionString","DOMEval","rhtmlSuffix","isArrayLike","even","_elem","odd","copy","copyIsArray","Ctor","nodeValue","namespaceURI","docElem","invert","callbackExpect","preservedScriptAttributes","noModule","chainable","emptyGet","bulk","rmsPrefix","rdashAlpha","fcamelCase","_all","rsingleTag","rootjQuery","rquickExpr","isAttached","composed","getRootNode","buildFragment","keepScripts","scripts","parserErrorElem","readyList","catch","readyException","readyWait","rcssNum","rnumnonpx","rcustomProp","cssExpand","getStyles","curCSS","adjustCSS","addGetHookIf","finalPropName","rdisplayswap","cssShow","cssNormalTransform","letterSpacing","setPositiveNumber","subtract","boxModelAdjustment","isBorderBox","computedVal","marginDelta","getWidthOrHeight","boxSizingReliable","valueIsBorderBox","offsetProp","reliableTrDimensions","getClientRects","computed","borderImageSlice","floodOpacity","stopOpacity","strokeMiterlimit","strokeOpacity","origName","isCustomProp","clearCloneStyle","isFinite","scrollboxSizeBuggy","scrollboxSize","reliableMarginLeft","conditionFn","hookFn","valueParts","tween","adjusted","maxIterations","initial","initialInUnit","rboxStyle","rtrimCSS","getPropertyValue","pixelBoxStyles","cssPrefixes","emptyStyle","vendorProps","final","capName","vendorPropName","isHiddenWithinTree","defaultDisplayMap","getDefaultDisplay","showHide","computeStyleTests","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","reliableTrDimensionsVal","backgroundClip","cloneNode","pixelPosition","table","trChild","trStyle","borderTopWidth","borderBottomWidth","pnum","dataUser","rbrace","rmultiDash","_removeData","acceptData","Data","owner","Identity","Thrower","ex","adoptValue","noValue","onFulfilled","onRejected","onProgress","maxDepth","depth","mightThrow","notifyWith","getErrorHook","getStackHook","stateString","singleValue","resolveContexts","resolveValues","updateFunc","rerrorNames","asyncError","proxy","hold","isNumeric","undelegate","hover","Height","Width","defaultExtra","funcName","fxNow","inProgress","rfxtypes","rrun","schedule","tick","createFxNow","genFx","includeWidth","createTween","collection","Animation","tweeners","properties","stopped","currentTime","startTime","tweens","specialEasing","originalProperties","gotoEnd","propFilter","_queueHooks","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","optall","doAnimation","finish","clearQueue","stopQueue","timers","cssFn","slideDown","fadeToggle","slow","eased","linear","swing","rcheckableType","rtypenamespace","returnTrue","returnFalse","origFn","leverageNative","isSetup","saved","isTrigger","delegateType","isImmediatePropagationStopped","handleObjIn","eventHandle","handleObj","namespaces","origType","elemData","triggered","dispatch","bindType","needsContext","delegateCount","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","preDispatch","isPropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","noBubble","beforeunload","relatedTarget","timeStamp","isSimulated","changedTouches","eventPhase","clientX","clientY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","focusMappedHandler","simulate","attaches","dataHolder","pointerenter","pointerleave","related","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","_jQuery","_$","noConflict","noGlobal","rtagName","rscriptType","wrapMap","setGlobalEval","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","firstChild","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","ignored","hasScripts","iNoClone","checkClone","_evalUrl","keepData","nodes","htmlPrefilter","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","noCloneChecked","replaceChild","replaceAll","insert","rhtml","createDocumentFragment","lastChild","createTextNode","refElements","tfoot","colgroup","th","optgroup","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","rect","pageXOffset","parentOffset","scrollTo","startLength","preferredDoc","pushNative","Expr","outermostContext","sortInput","hasDuplicate","documentIsHTML","rbuggyQSA","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","booleans","rwhitespace","rcomma","rleadingCombinator","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","ATTR","PSEUDO","CHILD","rinputs","rheader","rsibling","runescape","funescape","escape","nonHex","high","unloadHandler","setDocument","inDisabledFieldset","addCombinator","seed","nid","newSelector","newContext","getElementsByClassName","testContext","tokenize","toSelector","qsaError","cacheLength","markFunction","assert","createInputPseudo","createButtonPseudo","createDisabledPseudo","createPositionalPseudo","matchIndexes","subWindow","getById","getElementsByName","disconnectedMatch","cssHas","attrId","getAttributeNode","compareDocumentPosition","sortDetached","duplicates","sortStable","preFilter","excess","unquoted","nodeNameSelector","expectedNodeName","operator","what","_argument","forward","ofType","_context","outerCache","nodeIndex","useCache","pseudo","setFilters","compile","unmatched","lang","elemLang","header","_matchIndexes","lt","gt","nth","checkbox","parseOnly","tokens","soFar","preFilters","cached","combinator","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","matcherOut","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","token","bup","rcssescape","fcssescape","asCodePoint","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","valueOrFunction","rneedsContext","rparentsprev","guaranteedUnique","sibling","targets","prevAll","until","nextAll","nextUntil","prevUntil","winnow","qualifier","truncate","firstElementChild","wrapInner","htmlIsFunction","months","standalone","isFormat","monthsShort","monthsParse","monthsRegex","withoutSuffix","isFuture","defineLocale","monthsShortRegex","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","weekdays","weekdaysShort","weekdaysMin","longDateFormat","LTS","LL","LLL","LLLL","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","ss","mm","hh","dd","MM","yy","dayOfMonthOrdinalParse","ordinal","week","processRelativeTime","monthsParseExact","weekdaysParseExact","ww","monthsShortDot","hours","invalidDate","meridiemParse","isPM","meridiem","hour","minute","isLower","monthsNominative","monthsSubjective","momentToFormat","suffixes","minutes","word","relativeTimeWithPlural","weekdaysCaseReplace","nominative","accusative","genitive","processHoursFunction","ll","lll","llll","meridiemHour","hm","QTIP","CORNER","CHECKS","trackingBound","TRUE","FALSE","NULL","Y","WIDTH","HEIGHT","TOP","BOTTOM","CENTER","FLIPINVERT","SHIFT","PLUGINS","NAMESPACE","ATTR_HAS","ATTR_ID","WIDGET","SELECTOR","INACTIVE_EVENTS","CLASS_FIXED","CLASS_DEFAULT","CLASS_FOCUS","CLASS_HOVER","CLASS_DISABLED","replaceSuffix","oldtitle","BROWSER","iOS","QTip","_id","onTooltip","lastClass","rendered","destroyed","waiting","hiddenDuringWait","triggering","invalidOpt","invalidContent","sanitizeOptions","loading","newContent","sanitize","convertNotation","notation","levels","setCallback","checks","_when","deferreds","posOptions","posClass","_createPosClass","_createTitle","_updateTitle","_createButton","_updateContent","_setWidget","initialize","_unassignEvents","_assignEvents","immediate","builtin","nextid","newId","_removeTitle","_updateButton","precedance","rmove","rrender","_waitForContent","imagesLoaded","titlebar","createWidgetClass","abbrev","pluginCalculations","newClass","tooltipWidth","tooltipHeight","isScroll","imagemap","svg","ownerSVGElement","adjustable","quirks","Corner","forceY","cls","showMethod","hideMethod","ontoTooltip","ontoTarget","inactiveMethod","inactive","repositionMethod","config","docBody","newTarget","metadata5","html5","center","identicalState","allow","contentOptions","sameTarget","_storeMouse","autofocus","qtips","curIndex","zindex","_bind","_unbind","_bindEvents","showEvents","hideEvents","showTargets","hideTargets","showCallback","hideCallback","similarTargets","toggleEvents","indexInShowEvents","indexInHideEvents","_assignInitialEvents","showTarget","hideTarget","hoverIntent","hoverEvent","moveEvent","onTarget","containerTarget","viewportTarget","documentTarget","windowTarget","leave","isAncestor","inactiveEvents","TIP","createVML","SCALE","PIXEL_RATIO","BACKING_STORE_RATIO","MARGIN","BORDER","COLOR","BG_COLOR","TRANSPARENT","IMPORTANT","HASCANVAS","INVALID","camel","vendorCss","ucProp","intCss","backingStorePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","Tip","_ns","lineJoin","miterLimit","_swapDimensions","_resetDimensions","_useTitle","_parseCorner","_parseWidth","side","use","_parseRadius","_invalidColour","_parseColours","borderSide","colorElem","_calculateSize","isCenter","smallHyp","hyp","_calculateTip","width2","height2","tips","br","bl","tl","tc","bc","rc","lc","lb","rb","_drawCoords","coords","beginPath","moveTo","lineTo","closePath","bigCoords","newSize","inner","curSize","mimic","clearRect","fillStyle","fill","coordsize","antialias","fillcolor","filled","stroked","calculate","corners","userOffset","newCorner","shiftflip","cornerTop","cornerLeft","shiftonly","popposite","opposite","xy","MODAL","OVERLAY","MODALCLASS","MODALSELECTOR","Modal","prevState","focusableElems","isTabIndexNotNaN","focusInputs","blurElems","stealFocus","stealfocus","visibleModals","modal_zindex","oEvent","newMy","containerStatic","viewportWidth","viewportHeight","viewportScroll","viewportOffset","methodX","methodY","otherSide","adjustment","side1","side2","lengthName","targetLength","elemLength","initialPos","mySide","atSide","isShift","myLength","atLength","sideOffset","overflow1","overflow2","polys","polygon","baseCoords","compareX","compareY","realX","realY","ax","ay","bx","by","_angles","ellipse","cx","cy","ry","rxc","rys","circle","frameOffset","mtx","transformed","points","strokeWidth2","getBBox","baseVal","numberOfItems","createSVGPoint","getScreenCTM","matrixTransform","area","imageOffset","shape","coordsArray","BGIFRAME","Ie6","_scroll","bgiframe","adjustBGIFrame","redrawContainer","redraw","tipAdjust","drawing","perc","ie6","parsers","widgets","theme","widthFixed","showProcessing","headerTemplate","onRenderTemplate","onRenderHeader","cancelSelection","sortMultiSortKey","sortResetKey","usNumberFormat","delayInit","serverSideSorting","resort","sortForce","sortList","sortAppend","sortInitialOrder","sortLocaleCompare","sortRestart","emptyTo","stringTo","duplicateSpan","textExtraction","textAttribute","textSorter","numberSorter","initWidgets","widgetClass","widgetOptions","zebra","tableClass","cssAsc","cssDesc","cssNone","cssHeader","cssHeaderRow","cssProcessing","cssChildRow","cssInfoBlock","cssNoSort","cssIgnoreRow","cssIcon","cssIconNone","cssIconAsc","cssIconDesc","cssIconDisabled","pointerClick","pointerDown","pointerUp","selectorHeaders","selectorSort","selectorRemove","headerList","empties","strings","globalize","imgAttr","cssHasChild","childRow","headerRow","headerIn","sortAsc","sortDesc","sortNone","language","sortDisabled","nextAsc","nextDesc","nextNone","regex","templateContent","templateIcon","templateName","nonWord","formElements","comma","digitNonUS","digitNegativeTest","digitNegativeReplace","digitTest","digitReplace","emptymin","emptymax","zero","none","keyCodes","enter","instanceMethods","tHead","tBodies","hasInitialized","$table","isProcessing","supportsDataObject","clickedIndex","$headers","$tbodies","widgetInit","buildHeaders","fixColumnWidth","addWidgetFromClass","applyWidgetOptions","setupParsers","validateOptions","buildCache","bindEvents","bindMethods","sortlist","applyWidget","sortOn","setHeadersCss","timerProcessing","benchmark","groupEnd","isApplyingWidgets","updateAll","updateHeaders","cell","updateCell","$row","addRows","isUpdating","appendCache","updateCache","applyWidgetId","dontapply","refreshWidgets","refreshing","removeWidget","removeClasses","core","downTarget","getClosest","$cell","$headerIndexed","initSort","$temp","indx","headerContent","sortVars","computeColumnIndex","configHeaders","getColumnData","getOrder","lockedOrder","sortedBy","updateHeader","addInstanceMethods","rows","colIndex","noParser","extractor","tbodyIndex","debugOutput","extractors","getParserById","emptyToBottom","detectParserForColumn","colSpan","addParser","rowIndex","cellIndex","$node","keepLooking","cells","getElementText","extract","getParsedText","txt","$tbody","$cells","cacheTime","prevRowData","colMax","cacheIndex","hasParser","getColumnText","rowFilter","tbodyLen","rowLen","hasCallback","allColumns","aria","updateColumnSort","$el","$extras","$sorted","include","isValueInArray","setColumnAriaLabel","$header","nextSort","vars","setColumnSort","updateHeaderSortCount","commonUpdate","resortComplete","icell","tbcache","checkResort","valid","$curTbody","appendTime","appender","processTbody","pager","removeRows","arry","headerIndx","notMultiSort","multisort","sortTime","sorter","sortLen","sortIndex","getSortType","sortNatural","aNum","bNum","aFloat","bFloat","sortNaturalAsc","sortNaturalDesc","sortText","getTextValue","sortNumericAsc","sortNumericDesc","sortNumeric","addWidget","getWidgetById","hasWidget","wo","applied","timerReady","priority","doAll","curWidgets","formatFloat","isDigit","$rows","rowSpan","firstAvailCol","matrix","matrixrow","checkColumnCount","parentElement","overallWidth","$colgroup","configHeader","cl4ss","getCell","$tb","getIt","holdr","clearTableBody","characterEquivalents","replaceAccents","acc","characterRegex","characterRegexArray","setting2","typ","ignore","restoreHeaders","$h","$r","$f","buildTable","logs","toLocaleLowerCase","nondigit","currencyReplace","currencyTest","urlProtocolTest","urlProtocolReplace","dash","isoDate","percentTest","dateReplace","usLongDateTest1","usLongDateTest2","shortDateTest","shortDateReplace","shortDateXXY","shortDateYMD","convertFormat","dateString","timeTest","timeMatch","timePart","parserMetadataName","$visibleRows","isEven","toRemove","fixedUrl","storage_fixedUrl","storage_group","storage_page","storage_storageType","storage_tableId","storage_useSessionStorage","storage","cookieIndex","cookies","hasStorage","storageType","session","useSessionStorage","page","cookie","setTime","toGMTString","themes","iconSortNone","iconSortAsc","iconSortDesc","filterRow","footerRow","footerCells","hdr","$icon","$tfoot","oldtheme","oldremove","oldIconRmv","hasOldTheme","themesAll","iconRmv","appliedTheme","uitheme_applied","filter_initialized","jui","columns_thead","columns_tfoot","tsf","tsfRegex","tscss","tskeyCodes","filterDisabled","filterRowHide","backSpace","filter_cellFilter","filter_childRows","filter_childByColumn","filter_childWithSibs","filter_columnAnyMatch","filter_columnFilters","filter_cssFilter","filter_defaultAttrib","filter_defaultFilter","filter_excludeFilter","filter_external","filter_filteredRow","filter_filterLabel","filter_formatter","filter_functions","filter_hideEmpty","filter_hideFilters","filter_ignoreCase","filter_liveSearch","filter_matchType","filter_onlyAvail","filter_placeholder","filter_reset","filter_resetOnEsc","filter_saveFilters","filter_searchDelay","filter_searchFiltered","filter_selectSource","filter_selectSourceSeparator","filter_serversideFiltering","filter_startsWith","filter_useParsedData","exact","operators","wild01","wild0More","quote","isNeg1","isNeg2","or","orTest","iFilter","orSplit","filterMatched","data2","nestedFilters","parseFilter","isMatch","processTypes","and","andTest","andSplit","filter_regexCache","isRegex","operTest","iExact","cachedValue","savedSearch","gtTest","gteTest","ltTest","lteTest","notMatch","notTest","anyMatch","rowArray","toTest","range1","range2","toSplit","wild","wildOrTest","wildTest","fuzzy","fuzzyTest","patternIndx","fxn","noSelect","processStr","lastSearch","filter_searchTimer","filter_initTimer","filter_formatterCount","filter_formatterInit","filter_anyColumnSelector","filter_multipleColumnSelector","alreadyFiltered","iQuery","igQuery","exactTest","buildRow","buildDefault","filter_$externalFilters","searching","lastCombinedFilter","buildSelect","bindSearch","hideFilters","filteredRows","completeInit","filterInitComplete","formatterUpdated","findRows","processFilters","$filters","getFilters","makeSelect","ffxn","cellFilter","buildFilter","getColumnElm","internal","$ext","filter_$anyMatch","liveSearch","skipFirst","checkFilters","equalFilters","filter1","filter2","f1","f2","filterArray","currentFilters","hideFiltersCheck","defaultFilter","mask","maskLen","getLatestSearch","$input","findRange","ignoreRanges","ranges","singles","$elements","multipleColumns","excludeMatch","matchedOn","matchType","columnIndex","processRow","showRow","hasAnyMatchInput","anyMatchFlag","anyMatchFilter","cacheArray","rawArray","iAnyMatchFilter","noAnyMatch","childRowText","excludeFilter","defaultColFilter","functions","norm_rows","showParent","notFiltered","searchFiltered","injected","storedFilters","defaultAnyFilter","getOptionSource","onlyAvail","getOptions","processOptions","cts","parsedTxt","validColumn","childLen","updating","getRaw","$column","getStickyOffset","stickyHeaders_offset","stickyVis","stickyHide","stickyWrap","addHeaderResizeEvent","checkSizes","sizes","resize_flag","clearInterval","resize_timer","setInterval","stickyHeaders","stickyHeaders_appendTo","stickyHeaders_attachTo","stickyHeaders_xScroll","stickyHeaders_yScroll","stickyHeaders_filteredToTop","stickyHeaders_cloneId","stickyHeaders_addResizeEvent","stickyHeaders_includeCaption","stickyHeaders_zIndex","$stickyCells","$attach","$yScroll","$xScroll","stickyOffset","$nestedSticky","$sticky","nestedStickyTop","$stickyTable","$stickyWrap","$stickyThead","laststate","setWidth","$orig","$clone","getLeftPosition","yWindow","resizeHeader","scrollSticky","yScroll","attachTop","captionHeight","tableHeight","needsUpdating","cssSettings","resizer","$td","resizableContainer","resizableHandle","resizableNoSelect","resizableStorage","storedSizes","$parent","resizable_vars","useStorage","mouseXPosition","resizableReset","tableWidth","fullWidth","setWidths","updateStoredSizes","$resizable_container","$extra","$col","setHandlePosition","$handles","handleCenter","scrollerWrap","resizable_includeFooter","resizable_addLastColumn","checkVisibleColumns","toggleTextSelection","resizable_targetLast","resizable_throttle","mouseMove","stopResize","allowClick","tar","leftEdge","resizable_widths","thisWidget","getStoredSortList","stored","sortListChanged","saveSort","ARROW_LEFT","ARROW_RIGHT","DEFAULTS","additionalTagClasses","allowDuplicates","saveOnBlur","clearOnBlur","duplicateTagClass","containerFocusClass","focusInputOnContainerClick","hiddenInputName","tags","delimeter","delimiter","attachTagId","allowedTags","disallowedTags","trimTags","maxTags","submitKeys","preserveCase","inputFormatter","tagFormatter","onBeforeTagAdd","onTagAdd","onBeforeTagRemove","onTagRemove","_extend","master","_isArray","_trim","_setText","_clamp","measurements","inputLi","sizer","pasting","_backspacePressed","_inputPosition","_closeEvents","_closeButtons","_setMeasurements","_setupTextarea","_attachEvents","lpad","rpad","paddingRight","lborder","borderLeftWidth","rborder","borderRightWidth","taggle","_createTag","_hidePlaceholder","_showPlaceholder","formattedInput","_eventsAttached","containerClick","_handleContainerClick","_handleFocus","_setFocusStateForContainer","_handleBlur","_blurEvent","_handleKeydown","_keydownEvents","_handleKeyup","_keyupEvents","_detachEvents","_fixInputWidth","_setInputWidth","_canAdd","getTagValues","_hasDupes","sensitive","_tagIsInArray","disallowed","caseSensitive","_add","_formatTag","currentTagLength","tagIndex","lastLi","_checkPrevOrNextTag","taggles","prevTagIndex","nextTagIndex","targetTaggle","hotClass","isDeleteOrBackspace","_remove","dupes","needle","tagglelist","_isConfirmKey","confirmKey","_confirmValidTagEvent","_moveInput","currentIndex","leftNewIndex","leftIndexChanged","rightNewIndex","rightIndexChanged","eventFn","formatted","localName","_isIndexInRange","getTags","getTagElements","getInput","getContainer","startingIndex","edit","destinationIndex","tagText","removeAll","setOptions","setData","attachEvents","removeEvents","_colorpicker_index","_container_popup","_container_inlineFrame","_container_inline","_intToHex","dec","_keycode","isPrint","keycode","isHex","_layoutTable","layout","colspan","walked","hsvH","hsvS","hsvV","rgbR","rgbG","rgbB","labL","labA","labB","hslH","hslS","hslL","cmykC","cmykM","cmykY","cmykK","alphaA","swatchesNames","swatches","writers","_formatColor","hex3","HEX3","getRGB","hexa4","HEXA4","getAlpha","_closestName","_exactName","_getSwatch","setHSL","setAlpha","partslists","limits","swatch","setRGB","_html","_getRegional","showCloseButton","_onclick","draggableOptions","_mousedown","_mouseup","_mousemove","_keydown","layers","opened","setHSV","x_channel_map","x_change","y_channel_map","y_change","getChannel","setChannel","repaint","hsv","getHSV","toCSS","bar","preview","both","initial_alpha","current_alpha","onclick","currentColor","_updateAllParts","lab","setLAB","getLAB","cmyk","setCMYK","getCMYK","parseHex","toHex","_eachSwatch","swatchesWidth","_parseColor","footer","id_transparent","colorpicker_index","id_none","showNoneButton","showCancelButton","hsl","illuminant","_clip","_hexify","lsd","msd","_rgb_to_xyz","_xyz_to_rgb","xyz","_rgb_to_hsv","del_R","del_G","del_B","minVal","maxVal","_hsv_to_rgb","var_h","var_i","var_1","var_2","var_3","_rgb_to_hsl","_hsl_to_rgb","hue_to_rgb","vH","_xyz_to_lab","_lab_to_xyz","lab2","_rgb_to_cmy","_cmy_to_rgb","cmy","_cmy_to_cmyk","K","_cmyk_to_cmy","_a","channel","getHSL","getChannels","getSpaces","equals","steps","altAlpha","altOnChange","altProperties","buttonClass","buttonColorize","closeOnOutside","hideOn","inlineFrame","okOnEnter","generated","window_resize","document_keydown","document_click_html","_setColor","_setImageBackground","_generate","_setAltField","setColor","getColor","_generateInline","_generatePopup","parts_list","layout_parts","_initAllParts","_effectGeneric","fade","_effectShow","_effectHide","_repaintAllParts","colorPicker","stoppedChanging","_getSwatches","currentSwatches","nameOrIndex","swatchName","_parseFormat","typeRegexps","typeConverters","setters","setterChannels","channels","channelIndex","formats","vanderlee"],"sourceRoot":""}