Your IP : 216.73.216.138


Current Path : /home/ereika83/public_html/wp-content/plugins/wpmudev-updates/assets/js/
Upload File :
Current File : /home/ereika83/public_html/wp-content/plugins/wpmudev-updates/assets/js/dashboard-admin.min.js.map

{"version":3,"file":"dashboard-admin.min.js","mappings":"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,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAQ,KACR,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAQ,KACR,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAQ,IACR,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,KACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAQ,IACR,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV,IAAU,IACV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","sources":["webpack://wpmudev-updates/./node_modules/@wpmudev/shared-ui/dist/js/_src/dropdowns.js","webpack://wpmudev-updates/./node_modules/@wpmudev/shared-ui/dist/js/_src/modal-dialog.js","webpack://wpmudev-updates/./node_modules/@wpmudev/shared-ui/dist/js/_src/notifications.js","webpack://wpmudev-updates/./node_modules/@wpmudev/shared-ui/dist/js/_src/password.js","webpack://wpmudev-updates/./node_modules/@wpmudev/shared-ui/dist/js/_src/select2.full.js","webpack://wpmudev-updates/./node_modules/@wpmudev/shared-ui/dist/js/_src/select2.js","webpack://wpmudev-updates/./node_modules/@wpmudev/shared-ui/dist/js/_src/side-tabs.js","webpack://wpmudev-updates/./node_modules/@wpmudev/shared-ui/dist/js/_src/tabs.js","webpack://wpmudev-updates/./node_modules/ajaxq/ajaxq.js","webpack://wpmudev-updates/./assets/src/js/admin/common.js","webpack://wpmudev-updates/./assets/src/js/admin/dashboard.js","webpack://wpmudev-updates/./assets/src/js/admin/login.js","webpack://wpmudev-updates/./assets/src/js/admin/plugins.js","webpack://wpmudev-updates/./assets/src/js/admin/settings.js","webpack://wpmudev-updates/./assets/src/js/admin/settings/data.js","webpack://wpmudev-updates/./assets/src/js/admin/support.js","webpack://wpmudev-updates/./assets/src/js/admin/tools.js","webpack://wpmudev-updates/external var \"jQuery\"","webpack://wpmudev-updates/webpack/bootstrap","webpack://wpmudev-updates/webpack/runtime/compat get default export","webpack://wpmudev-updates/webpack/runtime/define property getters","webpack://wpmudev-updates/webpack/runtime/hasOwnProperty shorthand","webpack://wpmudev-updates/./assets/src/js/dashboard-admin.js"],"sourcesContent":["function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n(function ($) {\n  // Enable strict mode.\n  'use strict'; // Define global SUI object if it doesn't exist.\n\n  if ('object' !== _typeof(window.SUI)) {\n    window.SUI = {};\n  }\n\n  SUI.linkDropdown = function () {\n    function closeAllDropdowns($except) {\n      var $dropdowns = $('.sui-2-12-24 .sui-dropdown');\n\n      if ($except) {\n        $dropdowns = $dropdowns.not($except);\n      }\n\n      $dropdowns.removeClass('open');\n    }\n\n    $('body').on('click', '.sui-dropdown-anchor', function (e) {\n      var $button = $(this),\n          $parent = $button.parent();\n      closeAllDropdowns($parent);\n\n      if ($parent.hasClass('sui-dropdown')) {\n        $parent.toggleClass('open');\n      }\n\n      e.preventDefault();\n    });\n    $('body').on('mouseup', function (e) {\n      var $anchor = $('.sui-2-12-24 .sui-dropdown-anchor');\n\n      if (!$anchor.is(e.target) && 0 === $anchor.has(e.target).length) {\n        closeAllDropdowns();\n      }\n    });\n  };\n\n  SUI.linkDropdown();\n})(jQuery);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n(function () {\n  // Enable strict mode.\n  'use strict';\n\n  if ('object' !== _typeof(window.SUI)) {\n    window.SUI = {};\n  }\n  /**\n   * @namespace aria\n   */\n\n\n  var aria = aria || {}; // REF: Key codes.\n\n  aria.KeyCode = {\n    BACKSPACE: 8,\n    TAB: 9,\n    RETURN: 13,\n    ESC: 27,\n    SPACE: 32,\n    PAGE_UP: 33,\n    PAGE_DOWN: 34,\n    END: 35,\n    HOME: 36,\n    LEFT: 37,\n    UP: 38,\n    RIGHT: 39,\n    DOWN: 40,\n    DELETE: 46\n  };\n  aria.Utils = aria.Utils || {}; // UTILS: Remove function.\n\n  aria.Utils.remove = function (item) {\n    if (item.remove && 'function' === typeof item.remove) {\n      return item.remove();\n    }\n\n    if (item.parentNode && item.parentNode.removeChild && 'function' === typeof item.parentNode.removeChild) {\n      return item.parentNode.removeChild(item);\n    }\n\n    return false;\n  }; // UTILS: Verify if element can be focused.\n\n\n  aria.Utils.isFocusable = function (element) {\n    if (0 < element.tabIndex || 0 === element.tabIndex && null !== element.getAttribute('tabIndex')) {\n      return true;\n    }\n\n    if (element.disabled) {\n      return false;\n    }\n\n    switch (element.nodeName) {\n      case 'A':\n        return !!element.href && 'ignore' != element.rel;\n\n      case 'INPUT':\n        return 'hidden' != element.type && 'file' != element.type;\n\n      case 'BUTTON':\n      case 'SELECT':\n      case 'TEXTAREA':\n        return true;\n\n      default:\n        return false;\n    }\n  };\n  /**\n   * Simulate a click event.\n   * @public\n   * @param {Element} element the element to simulate a click on\n   */\n\n\n  aria.Utils.simulateClick = function (element) {\n    // Create our event (with options)\n    var evt = new MouseEvent('click', {\n      bubbles: true,\n      cancelable: true,\n      view: window\n    }); // If cancelled, don't dispatch our event\n\n    var canceled = !element.dispatchEvent(evt);\n  }; // When util functions move focus around, set this true so\n  // the focus listener can ignore the events.\n\n\n  aria.Utils.IgnoreUtilFocusChanges = false;\n  aria.Utils.dialogOpenClass = 'sui-has-modal';\n  /**\n   * @desc Set focus on descendant nodes until the first\n   * focusable element is found.\n   *\n   * @param element\n   * DOM node for which to find the first focusable descendant.\n   *\n   * @returns\n   * true if a focusable element is found and focus is set.\n   */\n\n  aria.Utils.focusFirstDescendant = function (element) {\n    for (var i = 0; i < element.childNodes.length; i++) {\n      var child = element.childNodes[i];\n\n      if (aria.Utils.attemptFocus(child) || aria.Utils.focusFirstDescendant(child)) {\n        return true;\n      }\n    }\n\n    return false;\n  }; // end focusFirstDescendant\n\n  /**\n   * @desc Find the last descendant node that is focusable.\n   *\n   * @param element\n   * DOM node for which to find the last focusable descendant.\n   *\n   * @returns\n   * true if a focusable element is found and focus is set.\n   */\n\n\n  aria.Utils.focusLastDescendant = function (element) {\n    for (var i = element.childNodes.length - 1; 0 <= i; i--) {\n      var child = element.childNodes[i];\n\n      if (aria.Utils.attemptFocus(child) || aria.Utils.focusLastDescendant(child)) {\n        return true;\n      }\n    }\n\n    return false;\n  }; // end focusLastDescendant\n\n  /**\n   * @desc Set Attempt to set focus on the current node.\n   *\n   * @param element\n   * The node to attempt to focus on.\n   *\n   * @returns\n   * true if element is focused.\n   */\n\n\n  aria.Utils.attemptFocus = function (element) {\n    if (!aria.Utils.isFocusable(element)) {\n      return false;\n    }\n\n    aria.Utils.IgnoreUtilFocusChanges = true;\n\n    try {\n      element.focus();\n    } catch (e) {// Done.\n    }\n\n    aria.Utils.IgnoreUtilFocusChanges = false;\n    return document.activeElement === element;\n  }; // end attemptFocus\n  // Modals can open modals. Keep track of them with this array.\n\n\n  aria.OpenDialogList = aria.OpenDialogList || new Array(0);\n  /**\n   * @returns the last opened dialog (the current dialog)\n   */\n\n  aria.getCurrentDialog = function () {\n    if (aria.OpenDialogList && aria.OpenDialogList.length) {\n      return aria.OpenDialogList[aria.OpenDialogList.length - 1];\n    }\n  };\n\n  aria.closeCurrentDialog = function () {\n    var currentDialog = aria.getCurrentDialog();\n\n    if (currentDialog) {\n      currentDialog.close();\n      return true;\n    }\n\n    return false;\n  };\n\n  aria.handleEscape = function (event) {\n    var key = event.which || event.keyCode;\n\n    if (key === aria.KeyCode.ESC && aria.closeCurrentDialog()) {\n      event.stopPropagation();\n    }\n  };\n  /**\n   * @constructor\n   * @desc Dialog object providing modal focus management.\n   *\n   * Assumptions: The element serving as the dialog container is present in the\n   * DOM and hidden. The dialog container has role='dialog'.\n   *\n   * @param dialogId\n   * The ID of the element serving as the dialog container.\n   *\n   * @param focusAfterClosed\n   * Either the DOM node or the ID of the DOM node to focus when the\n   * dialog closes.\n   *\n   * @param focusFirst\n   * Optional parameter containing either the DOM node or the ID of the\n   * DOM node to focus when the dialog opens. If not specified, the\n   * first focusable element in the dialog will receive focus.\n   *\n   * @param hasOverlayMask\n   * Optional boolean parameter that when is set to \"true\" will enable\n   * a clickable overlay mask. This mask will fire close modal function\n   * when you click on it.\n   *\n   * @param isCloseOnEsc\n   * Default: true\n   * Optional boolean parameter that when it's set to \"true\", it will enable closing the\n   * dialog with the Esc key.\n   *\n   * @param isAnimated\n   * Default: true\n   * Optional boolean parameter that when it's set to \"true\", it will enable animation in dialog box.\n   */\n\n\n  aria.Dialog = function (dialogId, focusAfterClosed, focusFirst, hasOverlayMask) {\n    var isCloseOnEsc = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n    var isAnimated = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n    this.dialogNode = document.getElementById(dialogId);\n\n    if (null === this.dialogNode) {\n      throw new Error('No element found with id=\"' + dialogId + '\".');\n    }\n\n    var validRoles = ['dialog', 'alertdialog'];\n    var isDialog = (this.dialogNode.getAttribute('role') || '').trim().split(/\\s+/g).some(function (token) {\n      return validRoles.some(function (role) {\n        return token === role;\n      });\n    });\n\n    if (!isDialog) {\n      throw new Error('Dialog() requires a DOM element with ARIA role of dialog or alertdialog.');\n    }\n\n    this.isCloseOnEsc = isCloseOnEsc; // Trigger the 'open' event at the beginning of the opening process.\n    // After validating the modal's attributes.\n\n    var openEvent = new Event('open');\n    this.dialogNode.dispatchEvent(openEvent); // Wrap in an individual backdrop element if one doesn't exist\n    // Native <dialog> elements use the ::backdrop pseudo-element, which\n    // works similarly.\n\n    var backdropClass = 'sui-modal';\n\n    if (this.dialogNode.parentNode.classList.contains(backdropClass)) {\n      this.backdropNode = this.dialogNode.parentNode;\n    } else {\n      this.backdropNode = document.createElement('div');\n      this.backdropNode.className = backdropClass;\n      this.backdropNode.setAttribute('data-markup', 'new');\n      this.dialogNode.parentNode.insertBefore(this.backdropNode, this.dialogNodev);\n      this.backdropNode.appendChild(this.dialogNode);\n    }\n\n    this.backdropNode.classList.add('sui-active'); // Disable scroll on the body element\n\n    document.body.parentNode.classList.add(aria.Utils.dialogOpenClass);\n\n    if ('string' === typeof focusAfterClosed) {\n      this.focusAfterClosed = document.getElementById(focusAfterClosed);\n    } else if ('object' === _typeof(focusAfterClosed)) {\n      this.focusAfterClosed = focusAfterClosed;\n    } else {\n      throw new Error('the focusAfterClosed parameter is required for the aria.Dialog constructor.');\n    }\n\n    if ('string' === typeof focusFirst) {\n      this.focusFirst = document.getElementById(focusFirst);\n    } else if ('object' === _typeof(focusFirst)) {\n      this.focusFirst = focusFirst;\n    } else {\n      this.focusFirst = null;\n    } // Bracket the dialog node with two invisible, focusable nodes.\n    // While this dialog is open, we use these to make sure that focus never\n    // leaves the document even if dialogNode is the first or last node.\n\n\n    var preDiv = document.createElement('div');\n    this.preNode = this.dialogNode.parentNode.insertBefore(preDiv, this.dialogNode);\n    this.preNode.tabIndex = 0;\n\n    if ('boolean' === typeof hasOverlayMask && true === hasOverlayMask) {\n      this.preNode.classList.add('sui-modal-overlay');\n\n      this.preNode.onclick = function () {\n        aria.getCurrentDialog().close();\n      };\n    }\n\n    var postDiv = document.createElement('div');\n    this.postNode = this.dialogNode.parentNode.insertBefore(postDiv, this.dialogNode.nextSibling);\n    this.postNode.tabIndex = 0; // If this modal is opening on top of one that is already open,\n    // get rid of the document focus listener of the open dialog.\n\n    if (0 < aria.OpenDialogList.length) {\n      aria.getCurrentDialog().removeListeners();\n    }\n\n    this.addListeners();\n    aria.OpenDialogList.push(this); // If isAnimated is set true then modal box will animate.\n\n    if (isAnimated) {\n      this.dialogNode.classList.add('sui-content-fade-in'); // make visible\n\n      this.dialogNode.classList.remove('sui-content-fade-out');\n    } else {\n      this.dialogNode.classList.remove('sui-content-fade-in');\n      this.dialogNode.classList.remove('sui-content-fade-out');\n    }\n\n    if (this.focusFirst) {\n      this.focusFirst.focus();\n    } else {\n      aria.Utils.focusFirstDescendant(this.dialogNode);\n    }\n\n    this.lastFocus = document.activeElement; // Trigger the 'afteropen' event at the end of the opening process.\n\n    var afterOpenEvent = new Event('afterOpen');\n    this.dialogNode.dispatchEvent(afterOpenEvent);\n  }; // end Dialog constructor.\n\n  /**\n   * @desc Hides the current top dialog, removes listeners of the top dialog,\n   * restore listeners of a parent dialog if one was open under the one that\n   * just closed, and sets focus on the element specified for focusAfterClosed.\n   *\n   * @param isAnimated\n   * Default: true\n   * Optional boolean parameter that when it's set to \"true\", it will enable animation in dialog box.\n   */\n\n\n  aria.Dialog.prototype.close = function () {\n    var isAnimated = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n    var self = this; // Trigger the 'close' event at the beginning of the closing process.\n\n    var closeEvent = new Event('close');\n    this.dialogNode.dispatchEvent(closeEvent);\n    aria.OpenDialogList.pop();\n    this.removeListeners();\n    this.preNode.parentNode.removeChild(this.preNode);\n    this.postNode.parentNode.removeChild(this.postNode); // If isAnimated is set true then modal box will animate.\n\n    if (isAnimated) {\n      this.dialogNode.classList.add('sui-content-fade-out');\n      this.dialogNode.classList.remove('sui-content-fade-in');\n    } else {\n      this.dialogNode.classList.remove('sui-content-fade-in');\n      this.dialogNode.classList.remove('sui-content-fade-out');\n    }\n\n    this.focusAfterClosed.focus();\n    setTimeout(function () {\n      self.backdropNode.classList.remove('sui-active');\n    }, 300);\n    setTimeout(function () {\n      var slides = self.dialogNode.querySelectorAll('.sui-modal-slide');\n\n      if (0 < slides.length) {\n        // Hide all slides.\n        for (var i = 0; i < slides.length; i++) {\n          slides[i].setAttribute('disabled', true);\n          slides[i].classList.remove('sui-loaded');\n          slides[i].classList.remove('sui-active');\n          slides[i].setAttribute('tabindex', '-1');\n          slides[i].setAttribute('aria-hidden', true);\n        } // Change modal size.\n\n\n        if (slides[0].hasAttribute('data-modal-size')) {\n          var newDialogSize = slides[0].getAttribute('data-modal-size');\n\n          switch (newDialogSize) {\n            case 'sm':\n            case 'small':\n              newDialogSize = 'sm';\n              break;\n\n            case 'md':\n            case 'med':\n            case 'medium':\n              newDialogSize = 'md';\n              break;\n\n            case 'lg':\n            case 'large':\n              newDialogSize = 'lg';\n              break;\n\n            case 'xl':\n            case 'extralarge':\n            case 'extraLarge':\n            case 'extra-large':\n              newDialogSize = 'xl';\n              break;\n\n            default:\n              newDialogSize = undefined;\n          }\n\n          if (undefined !== newDialogSize) {\n            // Remove others sizes from dialog to prevent any conflicts with styles.\n            self.dialogNode.parentNode.classList.remove('sui-modal-sm');\n            self.dialogNode.parentNode.classList.remove('sui-modal-md');\n            self.dialogNode.parentNode.classList.remove('sui-modal-lg');\n            self.dialogNode.parentNode.classList.remove('sui-modal-xl'); // Apply the new size to dialog.\n\n            self.dialogNode.parentNode.classList.add('sui-modal-' + newDialogSize);\n          }\n        } // Show first slide.\n\n\n        slides[0].classList.add('sui-active');\n        slides[0].classList.add('sui-loaded');\n        slides[0].removeAttribute('disabled');\n        slides[0].removeAttribute('tabindex');\n        slides[0].removeAttribute('aria-hidden'); // Change modal label.\n\n        if (slides[0].hasAttribute('data-modal-labelledby')) {\n          var newDialogLabel, getDialogLabel;\n          newDialogLabel = '';\n          getDialogLabel = slides[0].getAttribute('data-modal-labelledby');\n\n          if ('' !== getDialogLabel || undefined !== getDialogLabel) {\n            newDialogLabel = getDialogLabel;\n          }\n\n          self.dialogNode.setAttribute('aria-labelledby', newDialogLabel);\n        } // Change modal description.\n\n\n        if (slides[0].hasAttribute('data-modal-describedby')) {\n          var newDialogDesc, getDialogDesc;\n          newDialogDesc = '';\n          getDialogDesc = slides[0].getAttribute('data-modal-describedby');\n\n          if ('' !== getDialogDesc || undefined !== getDialogDesc) {\n            newDialogDesc = getDialogDesc;\n          }\n\n          self.dialogNode.setAttribute('aria-describedby', newDialogDesc);\n        }\n      }\n    }, 350); // If a dialog was open underneath this one, restore its listeners.\n\n    if (0 < aria.OpenDialogList.length) {\n      aria.getCurrentDialog().addListeners();\n    } else {\n      document.body.parentNode.classList.remove(aria.Utils.dialogOpenClass);\n    } // Trigger the 'afterclose' event at the end of the closing process.\n\n\n    var afterCloseEvent = new Event('afterClose');\n    this.dialogNode.dispatchEvent(afterCloseEvent);\n  }; // end close.\n\n  /**\n   * @desc Hides the current dialog and replaces it with another.\n   *\n   * @param newDialogId\n   * ID of the dialog that will replace the currently open top dialog.\n   *\n   * @param newFocusAfterClosed\n   * Optional ID or DOM node specifying where to place focus when the new dialog closes.\n   * If not specified, focus will be placed on the element specified by the dialog being replaced.\n   *\n   * @param newFocusFirst\n   * Optional ID or DOM node specifying where to place focus in the new dialog when it opens.\n   * If not specified, the first focusable element will receive focus.\n   *\n   * @param hasOverlayMask\n   * Optional boolean parameter that when is set to \"true\" will enable a clickable overlay\n   * mask to the new opened dialog. This mask will fire close dialog function when you click it.\n   *\n   * @param isCloseOnEsc\n   * Default: true\n   * Optional boolean parameter that when it's set to \"true\", it will enable closing the\n   * dialog with the Esc key.\n   *\n   * @param isAnimated\n   * Default: true\n   * Optional boolean parameter that when it's set to \"true\", it will enable animation in dialog box.\n   */\n\n\n  aria.Dialog.prototype.replace = function (newDialogId, newFocusAfterClosed, newFocusFirst, hasOverlayMask) {\n    var isCloseOnEsc = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n    var isAnimated = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;\n    var self = this;\n    aria.OpenDialogList.pop();\n    this.removeListeners();\n    aria.Utils.remove(this.preNode);\n    aria.Utils.remove(this.postNode); // If isAnimated is set true then modal box will animate.\n\n    if (isAnimated) {\n      this.dialogNode.classList.add('sui-content-fade-in'); // make visible\n\n      this.dialogNode.classList.remove('sui-content-fade-out');\n    } else {\n      this.dialogNode.classList.remove('sui-content-fade-in');\n      this.dialogNode.classList.remove('sui-content-fade-out');\n    }\n\n    this.backdropNode.classList.remove('sui-active');\n    setTimeout(function () {\n      var slides = self.dialogNode.querySelectorAll('.sui-modal-slide');\n\n      if (0 < slides.length) {\n        // Hide all slides.\n        for (var i = 0; i < slides.length; i++) {\n          slides[i].setAttribute('disabled', true);\n          slides[i].classList.remove('sui-loaded');\n          slides[i].classList.remove('sui-active');\n          slides[i].setAttribute('tabindex', '-1');\n          slides[i].setAttribute('aria-hidden', true);\n        } // Change modal size.\n\n\n        if (slides[0].hasAttribute('data-modal-size')) {\n          var newDialogSize = slides[0].getAttribute('data-modal-size');\n\n          switch (newDialogSize) {\n            case 'sm':\n            case 'small':\n              newDialogSize = 'sm';\n              break;\n\n            case 'md':\n            case 'med':\n            case 'medium':\n              newDialogSize = 'md';\n              break;\n\n            case 'lg':\n            case 'large':\n              newDialogSize = 'lg';\n              break;\n\n            case 'xl':\n            case 'extralarge':\n            case 'extraLarge':\n            case 'extra-large':\n              newDialogSize = 'xl';\n              break;\n\n            default:\n              newDialogSize = undefined;\n          }\n\n          if (undefined !== newDialogSize) {\n            // Remove others sizes from dialog to prevent any conflicts with styles.\n            self.dialogNode.parentNode.classList.remove('sui-modal-sm');\n            self.dialogNode.parentNode.classList.remove('sui-modal-md');\n            self.dialogNode.parentNode.classList.remove('sui-modal-lg');\n            self.dialogNode.parentNode.classList.remove('sui-modal-xl'); // Apply the new size to dialog.\n\n            self.dialogNode.parentNode.classList.add('sui-modal-' + newDialogSize);\n          }\n        } // Show first slide.\n\n\n        slides[0].classList.add('sui-active');\n        slides[0].classList.add('sui-loaded');\n        slides[0].removeAttribute('disabled');\n        slides[0].removeAttribute('tabindex');\n        slides[0].removeAttribute('aria-hidden'); // Change modal label.\n\n        if (slides[0].hasAttribute('data-modal-labelledby')) {\n          var newDialogLabel, getDialogLabel;\n          newDialogLabel = '';\n          getDialogLabel = slides[0].getAttribute('data-modal-labelledby');\n\n          if ('' !== getDialogLabel || undefined !== getDialogLabel) {\n            newDialogLabel = getDialogLabel;\n          }\n\n          self.dialogNode.setAttribute('aria-labelledby', newDialogLabel);\n        } // Change modal description.\n\n\n        if (slides[0].hasAttribute('data-modal-describedby')) {\n          var newDialogDesc, getDialogDesc;\n          newDialogDesc = '';\n          getDialogDesc = slides[0].getAttribute('data-modal-describedby');\n\n          if ('' !== getDialogDesc || undefined !== getDialogDesc) {\n            newDialogDesc = getDialogDesc;\n          }\n\n          self.dialogNode.setAttribute('aria-describedby', newDialogDesc);\n        }\n      }\n    }, 350);\n    var focusAfterClosed = newFocusAfterClosed || this.focusAfterClosed;\n    var dialog = new aria.Dialog(newDialogId, focusAfterClosed, newFocusFirst, hasOverlayMask, isCloseOnEsc, isAnimated);\n  }; // end replace\n\n  /**\n   * @desc Uses the same dialog to display different content that will slide to show.\n   *\n   * @param newSlideId\n   * ID of the slide that will replace the currently active slide content.\n   *\n   * @param newSlideFocus\n   * Optional ID or DOM node specifying where to place focus in the new slide when it shows.\n   * If not specified, the first focusable element will receive focus.\n   *\n   * @param newSlideEntrance\n   * Determine if the new slide will show up from \"left\" or \"right\" of the screen.\n   * If not specified, the slide entrance animation will be \"fade in\".\n   */\n\n\n  aria.Dialog.prototype.slide = function (newSlideId, newSlideFocus, newSlideEntrance) {\n    var animation = 'sui-fadein',\n        currentDialog = aria.getCurrentDialog(),\n        getAllSlides = this.dialogNode.querySelectorAll('.sui-modal-slide'),\n        getNewSlide = document.getElementById(newSlideId);\n\n    switch (newSlideEntrance) {\n      case 'back':\n      case 'left':\n        animation = 'sui-fadein-left';\n        break;\n\n      case 'next':\n      case 'right':\n        animation = 'sui-fadein-right';\n        break;\n\n      default:\n        animation = 'sui-fadein';\n        break;\n    } // Hide all slides.\n\n\n    for (var i = 0; i < getAllSlides.length; i++) {\n      getAllSlides[i].setAttribute('disabled', true);\n      getAllSlides[i].classList.remove('sui-loaded');\n      getAllSlides[i].classList.remove('sui-active');\n      getAllSlides[i].setAttribute('tabindex', '-1');\n      getAllSlides[i].setAttribute('aria-hidden', true);\n    } // Change modal size.\n\n\n    if (getNewSlide.hasAttribute('data-modal-size')) {\n      var newDialogSize = getNewSlide.getAttribute('data-modal-size');\n\n      switch (newDialogSize) {\n        case 'sm':\n        case 'small':\n          newDialogSize = 'sm';\n          break;\n\n        case 'md':\n        case 'med':\n        case 'medium':\n          newDialogSize = 'md';\n          break;\n\n        case 'lg':\n        case 'large':\n          newDialogSize = 'lg';\n          break;\n\n        case 'xl':\n        case 'extralarge':\n        case 'extraLarge':\n        case 'extra-large':\n          newDialogSize = 'xl';\n          break;\n\n        default:\n          newDialogSize = undefined;\n      }\n\n      if (undefined !== newDialogSize) {\n        // Remove others sizes from dialog to prevent any conflicts with styles.\n        this.dialogNode.parentNode.classList.remove('sui-modal-sm');\n        this.dialogNode.parentNode.classList.remove('sui-modal-md');\n        this.dialogNode.parentNode.classList.remove('sui-modal-lg');\n        this.dialogNode.parentNode.classList.remove('sui-modal-xl'); // Apply the new size to dialog.\n\n        this.dialogNode.parentNode.classList.add('sui-modal-' + newDialogSize);\n      }\n    } // Change modal label.\n\n\n    if (getNewSlide.hasAttribute('data-modal-labelledby')) {\n      var newDialogLabel, getDialogLabel;\n      newDialogLabel = '';\n      getDialogLabel = getNewSlide.getAttribute('data-modal-labelledby');\n\n      if ('' !== getDialogLabel || undefined !== getDialogLabel) {\n        newDialogLabel = getDialogLabel;\n      }\n\n      this.dialogNode.setAttribute('aria-labelledby', newDialogLabel);\n    } // Change modal description.\n\n\n    if (getNewSlide.hasAttribute('data-modal-describedby')) {\n      var newDialogDesc, getDialogDesc;\n      newDialogDesc = '';\n      getDialogDesc = getNewSlide.getAttribute('data-modal-describedby');\n\n      if ('' !== getDialogDesc || undefined !== getDialogDesc) {\n        newDialogDesc = getDialogDesc;\n      }\n\n      this.dialogNode.setAttribute('aria-describedby', newDialogDesc);\n    } // Show new slide.\n\n\n    getNewSlide.classList.add('sui-active');\n    getNewSlide.classList.add(animation);\n    getNewSlide.removeAttribute('tabindex');\n    getNewSlide.removeAttribute('aria-hidden');\n    setTimeout(function () {\n      getNewSlide.classList.add('sui-loaded');\n      getNewSlide.classList.remove(animation);\n      getNewSlide.removeAttribute('disabled');\n    }, 600);\n\n    if ('string' === typeof newSlideFocus) {\n      this.newSlideFocus = document.getElementById(newSlideFocus);\n    } else if ('object' === _typeof(newSlideFocus)) {\n      this.newSlideFocus = newSlideFocus;\n    } else {\n      this.newSlideFocus = null;\n    }\n\n    if (this.newSlideFocus) {\n      this.newSlideFocus.focus();\n    } else {\n      aria.Utils.focusFirstDescendant(this.dialogNode);\n    }\n  }; // end slide.\n\n\n  aria.Dialog.prototype.addListeners = function () {\n    document.addEventListener('focus', this.trapFocus, true);\n\n    if (this.isCloseOnEsc) {\n      this.dialogNode.addEventListener('keyup', aria.handleEscape);\n    }\n  }; // end addListeners.\n\n\n  aria.Dialog.prototype.removeListeners = function () {\n    document.removeEventListener('focus', this.trapFocus, true);\n  }; // end removeListeners.\n\n\n  aria.Dialog.prototype.trapFocus = function (event) {\n    var parentElement = event.target.parentElement;\n\n    if (aria.Utils.IgnoreUtilFocusChanges || parentElement && parentElement.classList.contains('wp-link-input')) {\n      return;\n    }\n\n    var currentDialog = aria.getCurrentDialog();\n\n    if (currentDialog.dialogNode.contains(event.target)) {\n      currentDialog.lastFocus = event.target;\n    } else {\n      aria.Utils.focusFirstDescendant(currentDialog.dialogNode);\n\n      if (currentDialog.lastFocus == document.activeElement) {\n        aria.Utils.focusLastDescendant(currentDialog.dialogNode);\n      }\n\n      currentDialog.lastFocus = document.activeElement;\n    }\n  }; // end trapFocus.\n\n\n  SUI.openModal = function (dialogId, focusAfterClosed, focusFirst, dialogOverlay) {\n    var isCloseOnEsc = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n    var isAnimated = arguments.length > 5 ? arguments[5] : undefined;\n    var dialog = new aria.Dialog(dialogId, focusAfterClosed, focusFirst, dialogOverlay, isCloseOnEsc, isAnimated);\n  }; // end openModal.\n\n\n  SUI.closeModal = function (isAnimated) {\n    var topDialog = aria.getCurrentDialog();\n    topDialog.close(isAnimated);\n  }; // end closeDialog.\n\n\n  SUI.replaceModal = function (newDialogId, newFocusAfterClosed, newFocusFirst, hasOverlayMask) {\n    var isCloseOnEsc = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n    var isAnimated = arguments.length > 5 ? arguments[5] : undefined;\n    var topDialog = aria.getCurrentDialog();\n    /**\n     * BUG #1:\n     * When validating document.activeElement it always returns \"false\" but\n     * even when \"false\" on Chrome function is fired correctly while on Firefox\n     * and Safari this validation prevents function to be fired on click.\n     *\n     * if ( topDialog.dialogNode.contains( document.activeElement ) ) { ... }\n     */\n\n    topDialog.replace(newDialogId, newFocusAfterClosed, newFocusFirst, hasOverlayMask, isCloseOnEsc, isAnimated);\n  }; // end replaceModal.\n\n\n  SUI.slideModal = function (newSlideId, newSlideFocus, newSlideEntrance) {\n    var topDialog = aria.getCurrentDialog();\n    topDialog.slide(newSlideId, newSlideFocus, newSlideEntrance);\n  }; // end slideModal.\n\n})();\n\n(function ($) {\n  // Enable strict mode.\n  'use strict';\n\n  if ('object' !== _typeof(window.SUI)) {\n    window.SUI = {};\n  }\n\n  SUI.modalDialog = function () {\n    function init() {\n      var button, buttonOpen, buttonClose, buttonReplace, buttonSlide, overlayMask, modalId, slideId, closeFocus, newFocus, animation, isAnimated;\n      buttonOpen = $('[data-modal-open]');\n      buttonClose = $('[data-modal-close]');\n      buttonReplace = $('[data-modal-replace]');\n      buttonSlide = $('[data-modal-slide]');\n      overlayMask = $('.sui-modal-overlay');\n      buttonOpen.on('click', function (e) {\n        button = $(this);\n        modalId = button.attr('data-modal-open');\n        closeFocus = button.attr('data-modal-close-focus');\n        newFocus = button.attr('data-modal-open-focus');\n        overlayMask = button.attr('data-modal-mask');\n        isAnimated = button.attr('data-modal-animated');\n        var isCloseOnEsc = 'false' === button.attr('data-esc-close') ? false : true;\n\n        if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) === _typeof(closeFocus) || false === closeFocus || '' === closeFocus) {\n          closeFocus = this;\n        }\n\n        if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) === _typeof(newFocus) || false === newFocus || '' === newFocus) {\n          newFocus = undefined;\n        }\n\n        if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) !== _typeof(overlayMask) && false !== overlayMask && 'true' === overlayMask) {\n          overlayMask = true;\n        } else {\n          overlayMask = false;\n        }\n\n        if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) !== _typeof(isAnimated) && false !== isAnimated && 'false' === isAnimated) {\n          isAnimated = false;\n        } else {\n          isAnimated = true;\n        }\n\n        if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) !== _typeof(modalId) && false !== modalId && '' !== modalId) {\n          SUI.openModal(modalId, closeFocus, newFocus, overlayMask, isCloseOnEsc, isAnimated);\n        }\n\n        e.preventDefault();\n      });\n      buttonReplace.on('click', function (e) {\n        button = $(this);\n        modalId = button.attr('data-modal-replace');\n        closeFocus = button.attr('data-modal-close-focus');\n        newFocus = button.attr('data-modal-open-focus');\n        overlayMask = button.attr('data-modal-replace-mask');\n        var isCloseOnEsc = 'false' === button.attr('data-esc-close') ? false : true;\n\n        if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) === _typeof(closeFocus) || false === closeFocus || '' === closeFocus) {\n          closeFocus = undefined;\n        }\n\n        if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) === _typeof(newFocus) || false === newFocus || '' === newFocus) {\n          newFocus = undefined;\n        }\n\n        if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) !== _typeof(overlayMask) && false !== overlayMask && 'true' === overlayMask) {\n          overlayMask = true;\n        } else {\n          overlayMask = false;\n        }\n\n        if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) !== _typeof(modalId) && false !== modalId && '' !== modalId) {\n          SUI.replaceModal(modalId, closeFocus, newFocus, overlayMask, isCloseOnEsc, isAnimated);\n        }\n\n        e.preventDefault();\n      });\n      buttonSlide.on('click', function (e) {\n        button = $(this);\n        slideId = button.attr('data-modal-slide');\n        newFocus = button.attr('data-modal-slide-focus');\n        animation = button.attr('data-modal-slide-intro');\n\n        if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) === _typeof(newFocus) || false === newFocus || '' === newFocus) {\n          newFocus = undefined;\n        }\n\n        if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) === _typeof(animation) || false === animation || '' === animation) {\n          animation = '';\n        }\n\n        if ((typeof undefined === \"undefined\" ? \"undefined\" : _typeof(undefined)) !== _typeof(slideId) && false !== slideId && '' !== slideId) {\n          SUI.slideModal(slideId, newFocus, animation);\n        }\n\n        e.preventDefault();\n      });\n      buttonClose.on('click', function (e) {\n        SUI.closeModal(isAnimated);\n        e.preventDefault();\n      });\n    }\n\n    init();\n    return this;\n  };\n\n  SUI.modalDialog();\n})(jQuery);","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n(function ($) {\n  // Enable strict mode.\n  'use strict'; // Define global SUI object if it does not exist.\n\n  var _this = this;\n\n  if ('object' !== _typeof(window.SUI)) {\n    window.SUI = {};\n  }\n  /**\n   * @desc Notifications function to show when alert.\n   *\n   * Assumptions: The element serving as the alert container is present in the\n   * DOM and hidden. The alert container has role='alert'.\n   *\n   * @param noticeId\n   * The ID of the element serving as the alert container.\n   *\n   * @param noticeMessage\n   * The content to be printed when the alert shows up. It accepts HTML.\n   *\n   * @param noticeOptions\n   * An object with different paramethers to modify the alert appearance.\n   */\n\n\n  SUI.openNotice = function (noticeId, noticeMessage, noticeOptions) {\n    // Get notification node by ID.\n    var noticeNode = $('#' + noticeId);\n    var nodeWrapper = noticeNode.parent(); // Check if element ID exists.\n\n    if (null === typeof noticeNode || 'undefined' === typeof noticeNode) {\n      throw new Error('No element found with id=\"' + noticeId + '\".');\n    } // Check if element has correct attribute.\n\n\n    if ('alert' !== noticeNode.attr('role')) {\n      throw new Error('Notice requires a DOM element with ARIA role of alert.');\n    } // Check if notice message is empty.\n\n\n    if (null === typeof noticeMessage || 'undefined' === typeof noticeMessage || '' === noticeMessage) {\n      throw new Error('Notice requires a message to print.');\n    }\n\n    var utils = utils || {};\n    /**\n     * @desc Allowed types for notification.\n     */\n\n    utils.allowedNotices = ['info', 'blue', 'green', 'success', 'yellow', 'warning', 'red', 'error', 'purple', 'upsell'];\n    /**\n     * @desc Verify if property is an array.\n     */\n\n    utils.isObject = function (obj) {\n      if ((null !== obj || 'undefined' !== obj) && $.isPlainObject(obj)) {\n        return true;\n      }\n\n      return false;\n    };\n    /**\n     * @desc Deep merge two objects.\n     * Watch out for infinite recursion on circular references.\n     */\n\n\n    utils.deepMerge = function (target) {\n      for (var _len = arguments.length, sources = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        sources[_key - 1] = arguments[_key];\n      }\n\n      if (!sources.length) {\n        return target;\n      }\n\n      var source = sources.shift();\n\n      if (utils.isObject(target) && utils.isObject(source)) {\n        for (var key in source) {\n          if (utils.isObject(source[key])) {\n            if (!target[key]) {\n              Object.assign(target, _defineProperty({}, key, {}));\n            }\n\n            utils.deepMerge(target[key], source[key]);\n          } else {\n            Object.assign(target, _defineProperty({}, key, source[key]));\n          }\n        }\n      }\n\n      return utils.deepMerge.apply(utils, [target].concat(sources));\n    };\n    /**\n     * @desc Declare default styling options for notifications.\n     */\n\n\n    utils.setProperties = function () {\n      var incomingOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      utils.options = [];\n      var defaults = {\n        type: 'default',\n        icon: 'info',\n        dismiss: {\n          show: false,\n          label: 'Close this notice',\n          tooltip: ''\n        },\n        autoclose: {\n          show: true,\n          timeout: 3000\n        }\n      };\n      utils.options[0] = utils.deepMerge(defaults, incomingOptions);\n    };\n\n    utils.setProperties(noticeOptions);\n    /**\n     * @desc Build notice dismiss.\n     */\n\n    utils.buildDismiss = function () {\n      var html = '';\n      var dismiss = utils.options[0].dismiss;\n\n      if (true === dismiss.show) {\n        html = document.createElement('div');\n        html.className = 'sui-notice-actions';\n        var innerHTML = '';\n\n        if ('' !== dismiss.tooltip) {\n          if (nodeWrapper.hasClass('sui-floating-notices')) {\n            innerHTML += '<div class=\"sui-tooltip sui-tooltip-bottom\" data-tooltip=\"' + dismiss.tooltip + '\">';\n          } else {\n            innerHTML += '<div class=\"sui-tooltip\" data-tooltip=\"' + dismiss.tooltip + '\">';\n          }\n        }\n\n        innerHTML += '<button class=\"sui-button-icon\">';\n        innerHTML += '<span class=\"sui-icon-check\" aria-hidden=\"true\"></span>';\n\n        if ('' !== dismiss.label) {\n          innerHTML += '<span class=\"sui-screen-reader-text\">' + dismiss.label + '</span>';\n        }\n\n        innerHTML += '</button>';\n\n        if ('' !== dismiss.tooltip) {\n          innerHTML += '</div>';\n        }\n\n        html.innerHTML = innerHTML;\n      }\n\n      return html;\n    };\n    /**\n     * @desc Build notice icon.\n     */\n\n\n    utils.buildIcon = function () {\n      var html = '';\n      var icon = utils.options[0].icon;\n\n      if ('' !== icon || 'undefined' !== typeof icon || null !== typeof icon) {\n        html = document.createElement('span');\n        html.className += 'sui-notice-icon sui-icon-' + icon + ' sui-md';\n        html.setAttribute('aria-hidden', true);\n\n        if ('loader' === icon) {\n          html.classList.add('sui-loading');\n        }\n      }\n\n      return html;\n    };\n    /**\n     * @desc Build notice message.\n     */\n\n\n    utils.buildMessage = function () {\n      var html = document.createElement('div');\n      html.className = 'sui-notice-message';\n      html.innerHTML = noticeMessage;\n      html.prepend(utils.buildIcon());\n      return html;\n    };\n    /**\n     * @desc Build notice markup.\n     */\n\n\n    utils.buildNotice = function () {\n      var html = document.createElement('div');\n      html.className = 'sui-notice-content';\n      html.append(utils.buildMessage(), utils.buildDismiss());\n      return html;\n    };\n    /**\n     * @desc Show notification message.\n     */\n\n\n    utils.showNotice = function (animation) {\n      var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 300;\n      var type = utils.options[0].type;\n      var dismiss = utils.options[0].dismiss;\n      var autoclose = utils.options[0].autoclose; // Add active class.\n\n      noticeNode.addClass('sui-active'); // Check for allowed notification types.\n\n      $.each(utils.allowedNotices, function (key, value) {\n        if (value === type) {\n          noticeNode.addClass('sui-notice-' + value);\n        }\n      }); // Remove tabindex.\n\n      noticeNode.removeAttr('tabindex'); // Print notification message.\n\n      noticeNode.html(utils.buildNotice()); // Show animation.\n\n      if ('slide' === animation) {\n        noticeNode.slideDown(timeout, function () {\n          // Check if dismiss button enabled.\n          if (true === dismiss.show) {\n            // Focus dismiss button.\n            noticeNode.find('.sui-notice-actions button').trigger('focus'); // Dismiss button.\n\n            noticeNode.find('.sui-notice-actions button').on('click', function () {\n              SUI.closeNotice(noticeId);\n            });\n          } else {\n            // Check if notice auto-closes.\n            if (true === autoclose.show) {\n              setTimeout(function () {\n                return SUI.closeNotice(noticeId);\n              }, parseInt(autoclose.timeout));\n            }\n          }\n        });\n      } else if ('fade' === animation) {\n        noticeNode.fadeIn(timeout, function () {\n          // Check if dismiss button enabled.\n          if (true === dismiss.show) {\n            // Focus dismiss button.\n            noticeNode.find('.sui-notice-actions button').trigger('focus'); // Dismiss button.\n\n            noticeNode.find('.sui-notice-actions button').on('click', function () {\n              SUI.closeNotice(noticeId);\n            });\n          } else {\n            // Check if notice auto-closes.\n            if (true === autoclose.show) {\n              setTimeout(function () {\n                return SUI.closeNotice(noticeId);\n              }, parseInt(autoclose.timeout));\n            }\n          }\n        });\n      } else {\n        noticeNode.show(timeout, function () {\n          // Check if dismiss button enabled.\n          if (true === dismiss.show) {\n            // Focus dismiss button.\n            noticeNode.find('.sui-notice-actions button').trigger('focus'); // Dismiss button.\n\n            noticeNode.find('.sui-notice-actions button').on('click', function () {\n              SUI.closeNotice(noticeId);\n            });\n          } else {\n            // Check if notice auto-closes.\n            if (true === autoclose.show) {\n              setTimeout(function () {\n                return SUI.closeNotice(noticeId);\n              }, parseInt(autoclose.timeout));\n            }\n          }\n        });\n      }\n    };\n    /**\n     * @desc Open notification message.\n     */\n\n\n    utils.openNotice = function (animation) {\n      var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 300;\n\n      if (noticeNode.hasClass('sui-active')) {\n        if ('slide' === animation) {\n          noticeNode.slideUp(timeout, function () {\n            utils.showNotice('slide', timeout);\n          });\n        } else if ('fade' === animation) {\n          noticeNode.fadeOut(timeout, function () {\n            utils.showNotice('fade', timeout);\n          });\n        } else {\n          noticeNode.hide(timeout, function () {\n            utils.showNotice(null, timeout);\n          });\n        }\n      } else {\n        // Show notice.\n        utils.showNotice(animation, timeout);\n      }\n    };\n    /**\n     * @desc Initialize function.\n     */\n\n\n    var init = function init() {\n      /**\n       * When notice should float, it needs to be wrapped inside:\n       * <div class=\"sui-floating-notices\"></div>\n       *\n       * IMPORTANT: This wrapper goes before \"sui-wrap\" closing tag\n       * and after modals markup.\n       */\n      if (nodeWrapper.hasClass('sui-floating-notices')) {\n        utils.openNotice('slide');\n      } else {\n        utils.openNotice('fade');\n      }\n    };\n\n    init();\n    return _this;\n  };\n  /**\n   * @desc Close and clear the alert.\n   *\n   * Assumptions: The element that will trigger this function is part of alert content.\n   *\n   * @param noticeId\n   * The ID of the element serving as the alert container.\n   *\n   */\n\n\n  SUI.closeNotice = function (noticeId) {\n    // Get notification node by ID.\n    var noticeNode = $('#' + noticeId);\n    var nodeWrapper = noticeNode.parent(); // Check if element ID exists.\n\n    if (null === typeof noticeNode || 'undefined' === typeof noticeNode) {\n      throw new Error('No element found with id=\"' + noticeId + '\".');\n    }\n\n    var utils = utils || {};\n    /**\n     * @desc Allowed types for notification.\n     */\n\n    utils.allowedNotices = ['info', 'blue', 'green', 'success', 'yellow', 'warning', 'red', 'error', 'purple', 'upsell'];\n    /**\n     * @desc Destroy notification.\n     */\n\n    utils.hideNotice = function () {\n      // Remove active class.\n      noticeNode.removeClass('sui-active'); // Remove styling classes.\n\n      $.each(utils.allowedNotices, function (key, value) {\n        noticeNode.removeClass('sui-notice-' + value);\n      }); // Prevent TAB key from accessing the element.\n\n      noticeNode.attr('tabindex', '-1'); // Remove all content from notification.\n\n      noticeNode.empty();\n    };\n    /**\n     * @desc Close notification message.\n     */\n\n\n    utils.closeNotice = function (animation) {\n      var timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 300;\n\n      // Close animation.\n      if ('slide' === animation) {\n        noticeNode.slideUp(timeout, function () {\n          return utils.hideNotice();\n        });\n      } else if ('fade' === animation) {\n        noticeNode.fadeOut(timeout, function () {\n          return utils.hideNotice();\n        });\n      } else {\n        noticeNode.hide(timeout, function () {\n          return utils.hideNotice();\n        });\n      }\n    };\n    /**\n     * @desc Initialize function.\n     */\n\n\n    var init = function init() {\n      /**\n       * When notice should float, it needs to be wrapped inside:\n       * <div class=\"sui-floating-notices\"></div>\n       *\n       * IMPORTANT: This wrapper goes before \"sui-wrap\" closing tag\n       * and after modals markup.\n       */\n      if (nodeWrapper.hasClass('sui-floating-notices')) {\n        utils.closeNotice('slide');\n      } else {\n        utils.closeNotice('fade');\n      }\n    };\n\n    init();\n    return _this;\n  };\n  /**\n   * @desc Trigger open and close alert notification functions through element attributes.\n   *\n   * Assumptions: Elements in charge of triggering the actions will be a button or a non-hyperlink element.\n   *\n   */\n\n\n  SUI.notice = function () {\n    var notice = notice || {};\n    notice.Utils = notice.Utils || {};\n    /**\n     * @desc Click an element to open a notification.\n     */\n\n    notice.Utils.Open = function (element) {\n      element.on('click', function () {\n        self = $(this); // Define main variables for open function.\n\n        var noticeId = self.attr('data-notice-open');\n        var noticeMessage = '';\n        var noticeOptions = {}; // Define index to use on for loops.\n\n        var i; // Define maximum number of paragraphs.\n\n        var numbLines = 4; // Check if `data-notice-message` exists.\n\n        if (self.is('[data-notice-message]') && '' !== self.attr('data-notice-message')) {\n          noticeMessage += self.attr('data-notice-message'); // If `data-notice-message` doesn't exists, look for `data-notice-paragraph-[i]` attributes.\n        } else {\n          for (i = 0; i < numbLines; i++) {\n            var index = i + 1;\n            var paragraph = 'data-notice-paragraph-' + index;\n\n            if (self.is('[' + paragraph + ']') && '' !== self.attr(paragraph)) {\n              noticeMessage += '<p>' + self.attr(paragraph) + '</p>';\n            }\n          }\n        } // Check if `data-notice-type` exists.\n\n\n        if (self.is('[data-notice-type]') && '' !== self.attr('data-notice-dismiss-type')) {\n          noticeOptions.type = self.attr('data-notice-type');\n        } // Check if `data-notice-icon` exists.\n\n\n        if (self.is('[data-notice-icon]')) {\n          noticeOptions.icon = self.attr('data-notice-icon');\n        } // Check if `data-notice-dismiss` exists.\n\n\n        if (self.is('[data-notice-dismiss]')) {\n          noticeOptions.dismiss = {};\n\n          if ('true' === self.attr('data-notice-dismiss')) {\n            noticeOptions.dismiss.show = true;\n          } else if ('false' === self.attr('data-notice-dismiss')) {\n            noticeOptions.dismiss.show = false;\n          }\n        } // Check if `data-notice-dismiss-label` exists.\n\n\n        if (self.is('[data-notice-dismiss-label]') && '' !== self.attr('data-notice-dismiss-label')) {\n          noticeOptions.dismiss.label = self.attr('data-notice-dismiss-label');\n        } // Check if `data-notice-dismiss-label` exists.\n\n\n        if (self.is('[data-notice-dismiss-tooltip]') && '' !== self.attr('data-notice-dismiss-tooltip')) {\n          noticeOptions.dismiss.tooltip = self.attr('data-notice-dismiss-tooltip');\n        } // Check if `data-notice-autoclose` exists.\n\n\n        if (self.is('[data-notice-autoclose]')) {\n          noticeOptions.autoclose = {};\n\n          if ('true' === self.attr('data-notice-autoclose')) {\n            noticeOptions.autoclose.show = true;\n          } else if ('false' === self.attr('data-notice-autoclose')) {\n            noticeOptions.autoclose.show = false;\n          }\n        } // Check if `data-notice-autoclose-timeout` exists.\n\n\n        if (self.is('[data-notice-autoclose-timeout]')) {\n          noticeOptions.autoclose = noticeOptions.autoclose || {};\n          noticeOptions.autoclose.timeout = parseInt(self.attr('data-notice-autoclose-timeout'));\n        }\n\n        SUI.openNotice(noticeId, noticeMessage, noticeOptions);\n      });\n    };\n    /**\n     * @desc Close a notification.\n     */\n\n\n    notice.Utils.Close = function (element) {\n      element.on('click', function () {\n        self = $(this);\n        var noticeId;\n\n        if (self.is('[data-notice-close]')) {\n          noticeId = self.closest('.sui-notice').attr('id');\n\n          if ('' !== self.attr('[data-notice-close]')) {\n            noticeId = self.attr('data-notice-close');\n          }\n\n          SUI.closeNotice(noticeId);\n        }\n      });\n    };\n\n    var init = function init() {\n      // Open a notification.\n      var btnOpen = $('[data-notice-open]');\n      notice.Utils.Open(btnOpen); // Close a notification.\n\n      var btnClose = $('[data-notice-close]');\n      notice.Utils.Close(btnClose);\n    };\n\n    init();\n    return _this;\n  };\n\n  SUI.notice();\n})(jQuery);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n(function ($) {\n  // Enable strict mode.\n  'use strict'; // Define global SUI object if it doesn't exist.\n\n  if ('object' !== _typeof(window.SUI)) {\n    window.SUI = {};\n  }\n\n  SUI.showHidePassword = function () {\n    $('.sui-2-12-24 .sui-form-field').each(function () {\n      var $this = $(this);\n\n      if (0 !== $this.find('input[type=\"password\"]').length) {\n        $this.find('[class*=\"sui-button\"], .sui-password-toggle').off('click.toggle-password').on('click.toggle-password', function () {\n          var $button = $(this),\n              $input = $button.parent().find('input'),\n              $icon = $button.find('> span');\n          $button.parent().toggleClass('sui-password-visible');\n          $button.find('.sui-password-text').toggleClass('sui-hidden');\n\n          if ($button.parent().hasClass('sui-password-visible')) {\n            $input.prop('type', 'text');\n            $icon.removeClass('sui-icon-eye').addClass('sui-icon-eye-hide');\n          } else {\n            $input.prop('type', 'password');\n            $icon.removeClass('sui-icon-eye-hide').addClass('sui-icon-eye');\n          }\n        });\n      }\n    });\n  };\n\n  SUI.showHidePassword();\n})(jQuery);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n/*!\n * Select2 4.1.0-rc.0\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n *\n * Modified logic/function,etc besides formatting should be marked with //SUI-SELECT2\n * For easy debugging process or update upstream of select\n */\n;\n\n(function (factory) {\n  // Disable AMD and module exports. @edited\n  if (false && typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define(['jquery'], factory);\n  } else if (false && (typeof module === \"undefined\" ? \"undefined\" : _typeof(module)) === 'object' && module.exports) {\n    // Node/CommonJS\n    module.exports = function (root, jQuery) {\n      if (jQuery === undefined) {\n        // require('jQuery') returns a factory that requires window to\n        // build a jQuery instance, we normalize how we use modules\n        // that require this pattern but the window provided is a noop\n        // if it's defined (how jquery works)\n        if (typeof window !== 'undefined') {\n          jQuery = require('jquery');\n        } else {\n          jQuery = require('jquery')(root);\n        }\n      }\n\n      factory(jQuery);\n      return jQuery;\n    };\n  } else {\n    // Browser globals\n    factory(jQuery);\n  }\n})(function (jQuery) {\n  // This is needed so we can catch the AMD loader configuration and use it\n  // The inner file should be wrapped (by `banner.start.js`) in a function that\n  // returns the AMD loader references.\n  var S2 = function () {\n    // Restore the Select2 AMD loader so it can be used\n    // Needed mostly in the language files, where the loader is not inserted\n    if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n      var S2 = jQuery.fn.select2.amd;\n    }\n\n    var S2;\n\n    (function () {\n      if (!S2 || !S2.requirejs) {\n        if (!S2) {\n          S2 = {};\n        } else {\n          require = S2;\n        }\n        /**\n         * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\n         * Released under MIT license, http://github.com/requirejs/almond/LICENSE\n         */\n        //Going sloppy to avoid 'use strict' string cost, but strict practices should\n        //be followed.\n\n        /*global setTimeout: false */\n\n\n        var requirejs, require, define;\n\n        (function (undef) {\n          var main,\n              _req,\n              makeMap,\n              handlers,\n              defined = {},\n              waiting = {},\n              config = {},\n              defining = {},\n              hasOwn = Object.prototype.hasOwnProperty,\n              aps = [].slice,\n              jsSuffixRegExp = /\\.js$/;\n\n          function hasProp(obj, prop) {\n            return hasOwn.call(obj, prop);\n          }\n          /**\n           * Given a relative module name, like ./something, normalize it to\n           * a real name that can be mapped to a path.\n           * @param {String} name the relative name\n           * @param {String} baseName a real name that the name arg is relative\n           * to.\n           * @returns {String} normalized name\n           */\n\n\n          function normalize(name, baseName) {\n            var nameParts,\n                nameSegment,\n                mapValue,\n                foundMap,\n                lastIndex,\n                foundI,\n                foundStarMap,\n                starI,\n                i,\n                j,\n                part,\n                normalizedBaseParts,\n                baseParts = baseName && baseName.split(\"/\"),\n                map = config.map,\n                starMap = map && map['*'] || {}; //Adjust any relative paths.\n\n            if (name) {\n              name = name.split('/');\n              lastIndex = name.length - 1; // If wanting node ID compatibility, strip .js from end\n              // of IDs. Have to do this here, and not in nameToUrl\n              // because node allows either .js or non .js to map\n              // to same file.\n\n              if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n                name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n              } // Starts with a '.' so need the baseName\n\n\n              if (name[0].charAt(0) === '.' && baseParts) {\n                //Convert baseName to array, and lop off the last part,\n                //so that . matches that 'directory' and not name of the baseName's\n                //module. For instance, baseName of 'one/two/three', maps to\n                //'one/two/three.js', but we want the directory, 'one/two' for\n                //this normalization.\n                normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n                name = normalizedBaseParts.concat(name);\n              } //start trimDots\n\n\n              for (i = 0; i < name.length; i++) {\n                part = name[i];\n\n                if (part === '.') {\n                  name.splice(i, 1);\n                  i -= 1;\n                } else if (part === '..') {\n                  // If at the start, or previous value is still ..,\n                  // keep them so that when converted to a path it may\n                  // still work when converted to a path, even though\n                  // as an ID it is less than ideal. In larger point\n                  // releases, may be better to just kick out an error.\n                  if (i === 0 || i === 1 && name[2] === '..' || name[i - 1] === '..') {\n                    continue;\n                  } else if (i > 0) {\n                    name.splice(i - 1, 2);\n                    i -= 2;\n                  }\n                }\n              } //end trimDots\n\n\n              name = name.join('/');\n            } //Apply map config if available.\n\n\n            if ((baseParts || starMap) && map) {\n              nameParts = name.split('/');\n\n              for (i = nameParts.length; i > 0; i -= 1) {\n                nameSegment = nameParts.slice(0, i).join(\"/\");\n\n                if (baseParts) {\n                  //Find the longest baseName segment match in the config.\n                  //So, do joins on the biggest to smallest lengths of baseParts.\n                  for (j = baseParts.length; j > 0; j -= 1) {\n                    mapValue = map[baseParts.slice(0, j).join('/')]; //baseName segment has config, find if it has one for\n                    //this name.\n\n                    if (mapValue) {\n                      mapValue = mapValue[nameSegment];\n\n                      if (mapValue) {\n                        //Match, update name to the new value.\n                        foundMap = mapValue;\n                        foundI = i;\n                        break;\n                      }\n                    }\n                  }\n                }\n\n                if (foundMap) {\n                  break;\n                } //Check for a star map match, but just hold on to it,\n                //if there is a shorter segment match later in a matching\n                //config, then favor over this star map.\n\n\n                if (!foundStarMap && starMap && starMap[nameSegment]) {\n                  foundStarMap = starMap[nameSegment];\n                  starI = i;\n                }\n              }\n\n              if (!foundMap && foundStarMap) {\n                foundMap = foundStarMap;\n                foundI = starI;\n              }\n\n              if (foundMap) {\n                nameParts.splice(0, foundI, foundMap);\n                name = nameParts.join('/');\n              }\n            }\n\n            return name;\n          }\n\n          function makeRequire(relName, forceSync) {\n            return function () {\n              //A version of a require function that passes a moduleName\n              //value for items that may need to\n              //look up paths relative to the moduleName\n              var args = aps.call(arguments, 0); //If first arg is not require('string'), and there is only\n              //one arg, it is the array form without a callback. Insert\n              //a null so that the following concat is correct.\n\n              if (typeof args[0] !== 'string' && args.length === 1) {\n                args.push(null);\n              }\n\n              return _req.apply(undef, args.concat([relName, forceSync]));\n            };\n          }\n\n          function makeNormalize(relName) {\n            return function (name) {\n              return normalize(name, relName);\n            };\n          }\n\n          function makeLoad(depName) {\n            return function (value) {\n              defined[depName] = value;\n            };\n          }\n\n          function callDep(name) {\n            if (hasProp(waiting, name)) {\n              var args = waiting[name];\n              delete waiting[name];\n              defining[name] = true;\n              main.apply(undef, args);\n            }\n\n            if (!hasProp(defined, name) && !hasProp(defining, name)) {\n              throw new Error('No ' + name);\n            }\n\n            return defined[name];\n          } //Turns a plugin!resource to [plugin, resource]\n          //with the plugin being undefined if the name\n          //did not have a plugin prefix.\n\n\n          function splitPrefix(name) {\n            var prefix,\n                index = name ? name.indexOf('!') : -1;\n\n            if (index > -1) {\n              prefix = name.substring(0, index);\n              name = name.substring(index + 1, name.length);\n            }\n\n            return [prefix, name];\n          } //Creates a parts array for a relName where first part is plugin ID,\n          //second part is resource ID. Assumes relName has already been normalized.\n\n\n          function makeRelParts(relName) {\n            return relName ? splitPrefix(relName) : [];\n          }\n          /**\n           * Makes a name map, normalizing the name, and using a plugin\n           * for normalization if necessary. Grabs a ref to plugin\n           * too, as an optimization.\n           */\n\n\n          makeMap = function makeMap(name, relParts) {\n            var plugin,\n                parts = splitPrefix(name),\n                prefix = parts[0],\n                relResourceName = relParts[1];\n            name = parts[1];\n\n            if (prefix) {\n              prefix = normalize(prefix, relResourceName);\n              plugin = callDep(prefix);\n            } //Normalize according\n\n\n            if (prefix) {\n              if (plugin && plugin.normalize) {\n                name = plugin.normalize(name, makeNormalize(relResourceName));\n              } else {\n                name = normalize(name, relResourceName);\n              }\n            } else {\n              name = normalize(name, relResourceName);\n              parts = splitPrefix(name);\n              prefix = parts[0];\n              name = parts[1];\n\n              if (prefix) {\n                plugin = callDep(prefix);\n              }\n            } //Using ridiculous property names for space reasons\n\n\n            return {\n              f: prefix ? prefix + '!' + name : name,\n              //fullName\n              n: name,\n              pr: prefix,\n              p: plugin\n            };\n          };\n\n          function makeConfig(name) {\n            return function () {\n              return config && config.config && config.config[name] || {};\n            };\n          }\n\n          handlers = {\n            require: function require(name) {\n              return makeRequire(name);\n            },\n            exports: function exports(name) {\n              var e = defined[name];\n\n              if (typeof e !== 'undefined') {\n                return e;\n              } else {\n                return defined[name] = {};\n              }\n            },\n            module: function module(name) {\n              return {\n                id: name,\n                uri: '',\n                exports: defined[name],\n                config: makeConfig(name)\n              };\n            }\n          };\n\n          main = function main(name, deps, callback, relName) {\n            var cjsModule,\n                depName,\n                ret,\n                map,\n                i,\n                relParts,\n                args = [],\n                callbackType = _typeof(callback),\n                usingExports; //Use name if no relName\n\n\n            relName = relName || name;\n            relParts = makeRelParts(relName); //Call the callback to define the module, if necessary.\n\n            if (callbackType === 'undefined' || callbackType === 'function') {\n              //Pull out the defined dependencies and pass the ordered\n              //values to the callback.\n              //Default to [require, exports, module] if no deps\n              deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n\n              for (i = 0; i < deps.length; i += 1) {\n                map = makeMap(deps[i], relParts);\n                depName = map.f; //Fast path CommonJS standard dependencies.\n\n                if (depName === \"require\") {\n                  args[i] = handlers.require(name);\n                } else if (depName === \"exports\") {\n                  //CommonJS module spec 1.1\n                  args[i] = handlers.exports(name);\n                  usingExports = true;\n                } else if (depName === \"module\") {\n                  //CommonJS module spec 1.1\n                  cjsModule = args[i] = handlers.module(name);\n                } else if (hasProp(defined, depName) || hasProp(waiting, depName) || hasProp(defining, depName)) {\n                  args[i] = callDep(depName);\n                } else if (map.p) {\n                  map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n                  args[i] = defined[depName];\n                } else {\n                  throw new Error(name + ' missing ' + depName);\n                }\n              }\n\n              ret = callback ? callback.apply(defined[name], args) : undefined;\n\n              if (name) {\n                //If setting exports via \"module\" is in play,\n                //favor that over return value and exports. After that,\n                //favor a non-undefined return value over exports use.\n                if (cjsModule && cjsModule.exports !== undef && cjsModule.exports !== defined[name]) {\n                  defined[name] = cjsModule.exports;\n                } else if (ret !== undef || !usingExports) {\n                  //Use the return value from the function.\n                  defined[name] = ret;\n                }\n              }\n            } else if (name) {\n              //May just be an object definition for the module. Only\n              //worry about defining if have a module name.\n              defined[name] = callback;\n            }\n          };\n\n          requirejs = require = _req = function req(deps, callback, relName, forceSync, alt) {\n            if (typeof deps === \"string\") {\n              if (handlers[deps]) {\n                //callback in this case is really relName\n                return handlers[deps](callback);\n              } //Just return the module wanted. In this scenario, the\n              //deps arg is the module name, and second arg (if passed)\n              //is just the relName.\n              //Normalize module name, if it contains . or ..\n\n\n              return callDep(makeMap(deps, makeRelParts(callback)).f);\n            } else if (!deps.splice) {\n              //deps is a config object, not an array.\n              config = deps;\n\n              if (config.deps) {\n                _req(config.deps, config.callback);\n              }\n\n              if (!callback) {\n                return;\n              }\n\n              if (callback.splice) {\n                //callback is an array, which means it is a dependency list.\n                //Adjust args if there are dependencies\n                deps = callback;\n                callback = relName;\n                relName = null;\n              } else {\n                deps = undef;\n              }\n            } //Support require(['a'])\n\n\n            callback = callback || function () {}; //If relName is a function, it is an errback handler,\n            //so remove it.\n\n\n            if (typeof relName === 'function') {\n              relName = forceSync;\n              forceSync = alt;\n            } //Simulate async callback;\n\n\n            if (forceSync) {\n              main(undef, deps, callback, relName);\n            } else {\n              //Using a non-zero value because of concern for what old browsers\n              //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n              //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n              //If want a value immediately, use require('id') instead -- something\n              //that works in almond on the global level, but not guaranteed and\n              //unlikely to work in other AMD implementations.\n              setTimeout(function () {\n                main(undef, deps, callback, relName);\n              }, 4);\n            }\n\n            return _req;\n          };\n          /**\n           * Just drops the config on the floor, but returns req in case\n           * the config return value is used.\n           */\n\n\n          _req.config = function (cfg) {\n            return _req(cfg);\n          };\n          /**\n           * Expose module registry for debugging and tooling\n           */\n\n\n          requirejs._defined = defined;\n\n          define = function define(name, deps, callback) {\n            if (typeof name !== 'string') {\n              throw new Error('See almond README: incorrect module build, no module name');\n            } //This module may not have dependencies\n\n\n            if (!deps.splice) {\n              //deps is not an array, so probably means\n              //an object literal or factory function for\n              //the value. Adjust args.\n              callback = deps;\n              deps = [];\n            }\n\n            if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n              waiting[name] = [name, deps, callback];\n            }\n          };\n\n          define.amd = {\n            jQuery: true\n          };\n        })();\n\n        S2.requirejs = requirejs;\n        S2.require = require;\n        S2.define = define;\n      }\n    })();\n\n    S2.define(\"almond\", function () {});\n    /* global jQuery:false, $:false */\n\n    S2.define('jquery', [], function () {\n      var _$ = jQuery || $;\n\n      if (_$ == null && console && console.error) {\n        console.error('Select2: An instance of jQuery or a jQuery-compatible library was not ' + 'found. Make sure that you are including jQuery before Select2 on your ' + 'web page.');\n      }\n\n      return _$;\n    });\n    S2.define('select2/utils', ['jquery'], function ($) {\n      var Utils = {};\n\n      Utils.Extend = function (ChildClass, SuperClass) {\n        var __hasProp = {}.hasOwnProperty;\n\n        function BaseConstructor() {\n          this.constructor = ChildClass;\n        }\n\n        for (var key in SuperClass) {\n          if (__hasProp.call(SuperClass, key)) {\n            ChildClass[key] = SuperClass[key];\n          }\n        }\n\n        BaseConstructor.prototype = SuperClass.prototype;\n        ChildClass.prototype = new BaseConstructor();\n        ChildClass.__super__ = SuperClass.prototype;\n        return ChildClass;\n      };\n\n      function getMethods(theClass) {\n        var proto = theClass.prototype;\n        var methods = [];\n\n        for (var methodName in proto) {\n          var m = proto[methodName];\n\n          if (typeof m !== 'function') {\n            continue;\n          }\n\n          if (methodName === 'constructor') {\n            continue;\n          }\n\n          methods.push(methodName);\n        }\n\n        return methods;\n      }\n\n      Utils.Decorate = function (SuperClass, DecoratorClass) {\n        var decoratedMethods = getMethods(DecoratorClass);\n        var superMethods = getMethods(SuperClass);\n\n        function DecoratedClass() {\n          var unshift = Array.prototype.unshift;\n          var argCount = DecoratorClass.prototype.constructor.length;\n          var calledConstructor = SuperClass.prototype.constructor;\n\n          if (argCount > 0) {\n            unshift.call(arguments, SuperClass.prototype.constructor);\n            calledConstructor = DecoratorClass.prototype.constructor;\n          }\n\n          calledConstructor.apply(this, arguments);\n        }\n\n        DecoratorClass.displayName = SuperClass.displayName;\n\n        function ctr() {\n          this.constructor = DecoratedClass;\n        }\n\n        DecoratedClass.prototype = new ctr();\n\n        for (var m = 0; m < superMethods.length; m++) {\n          var superMethod = superMethods[m];\n          DecoratedClass.prototype[superMethod] = SuperClass.prototype[superMethod];\n        }\n\n        var calledMethod = function calledMethod(methodName) {\n          // Stub out the original method if it's not decorating an actual method\n          var originalMethod = function originalMethod() {};\n\n          if (methodName in DecoratedClass.prototype) {\n            originalMethod = DecoratedClass.prototype[methodName];\n          }\n\n          var decoratedMethod = DecoratorClass.prototype[methodName];\n          return function () {\n            var unshift = Array.prototype.unshift;\n            unshift.call(arguments, originalMethod);\n            return decoratedMethod.apply(this, arguments);\n          };\n        };\n\n        for (var d = 0; d < decoratedMethods.length; d++) {\n          var decoratedMethod = decoratedMethods[d];\n          DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n        }\n\n        return DecoratedClass;\n      };\n\n      var Observable = function Observable() {\n        this.listeners = {};\n      };\n\n      Observable.prototype.on = function (event, callback) {\n        this.listeners = this.listeners || {};\n\n        if (event in this.listeners) {\n          this.listeners[event].push(callback);\n        } else {\n          this.listeners[event] = [callback];\n        }\n      };\n\n      Observable.prototype.trigger = function (event) {\n        var slice = Array.prototype.slice;\n        var params = slice.call(arguments, 1);\n        this.listeners = this.listeners || {}; // Params should always come in as an array\n\n        if (params == null) {\n          params = [];\n        } // If there are no arguments to the event, use a temporary object\n\n\n        if (params.length === 0) {\n          params.push({});\n        } // Set the `_type` of the first object to the event\n\n\n        params[0]._type = event;\n\n        if (event in this.listeners) {\n          this.invoke(this.listeners[event], slice.call(arguments, 1));\n        }\n\n        if ('*' in this.listeners) {\n          this.invoke(this.listeners['*'], arguments);\n        }\n      };\n\n      Observable.prototype.invoke = function (listeners, params) {\n        for (var i = 0, len = listeners.length; i < len; i++) {\n          listeners[i].apply(this, params);\n        }\n      };\n\n      Utils.Observable = Observable;\n\n      Utils.generateChars = function (length) {\n        var chars = '';\n\n        for (var i = 0; i < length; i++) {\n          var randomChar = Math.floor(Math.random() * 36);\n          chars += randomChar.toString(36);\n        }\n\n        return chars;\n      };\n\n      Utils.bind = function (func, context) {\n        return function () {\n          func.apply(context, arguments);\n        };\n      };\n\n      Utils._convertData = function (data) {\n        for (var originalKey in data) {\n          var keys = originalKey.split('-');\n          var dataLevel = data;\n\n          if (keys.length === 1) {\n            continue;\n          }\n\n          for (var k = 0; k < keys.length; k++) {\n            var key = keys[k]; // Lowercase the first letter\n            // By default, dash-separated becomes camelCase\n\n            key = key.substring(0, 1).toLowerCase() + key.substring(1);\n\n            if (!(key in dataLevel)) {\n              dataLevel[key] = {};\n            }\n\n            if (k == keys.length - 1) {\n              dataLevel[key] = data[originalKey];\n            }\n\n            dataLevel = dataLevel[key];\n          }\n\n          delete data[originalKey];\n        }\n\n        return data;\n      };\n\n      Utils.hasScroll = function (index, el) {\n        // Adapted from the function created by @ShadowScripter\n        // and adapted by @BillBarry on the Stack Exchange Code Review website.\n        // The original code can be found at\n        // http://codereview.stackexchange.com/q/13338\n        // and was designed to be used with the Sizzle selector engine.\n        var $el = $(el);\n        var overflowX = el.style.overflowX;\n        var overflowY = el.style.overflowY; //Check both x and y declarations\n\n        if (overflowX === overflowY && (overflowY === 'hidden' || overflowY === 'visible')) {\n          return false;\n        }\n\n        if (overflowX === 'scroll' || overflowY === 'scroll') {\n          return true;\n        }\n\n        return $el.innerHeight() < el.scrollHeight || $el.innerWidth() < el.scrollWidth;\n      };\n\n      Utils.escapeMarkup = function (markup) {\n        var replaceMap = {\n          '\\\\': '&#92;',\n          '&': '&amp;',\n          '<': '&lt;',\n          '>': '&gt;',\n          '\"': '&quot;',\n          '\\'': '&#39;',\n          '/': '&#47;'\n        }; // Do not try to escape the markup if it's not a string\n\n        if (typeof markup !== 'string') {\n          return markup;\n        }\n\n        return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n          return replaceMap[match];\n        });\n      }; // Cache objects in Utils.__cache instead of $.data (see #4346)\n\n\n      Utils.__cache = {};\n      var id = 0;\n\n      Utils.GetUniqueElementId = function (element) {\n        // Get a unique element Id. If element has no id,\n        // creates a new unique number, stores it in the id\n        // attribute and returns the new id with a prefix.\n        // If an id already exists, it simply returns it with a prefix.\n        var select2Id = element.getAttribute('data-select2-id');\n\n        if (select2Id != null) {\n          return select2Id;\n        } // If element has id, use it.\n\n\n        if (element.id) {\n          select2Id = 'select2-data-' + element.id;\n        } else {\n          select2Id = 'select2-data-' + (++id).toString() + '-' + Utils.generateChars(4);\n        }\n\n        element.setAttribute('data-select2-id', select2Id);\n        return select2Id;\n      };\n\n      Utils.StoreData = function (element, name, value) {\n        // Stores an item in the cache for a specified element.\n        // name is the cache key.\n        var id = Utils.GetUniqueElementId(element);\n\n        if (!Utils.__cache[id]) {\n          Utils.__cache[id] = {};\n        }\n\n        Utils.__cache[id][name] = value;\n      };\n\n      Utils.GetData = function (element, name) {\n        // Retrieves a value from the cache by its key (name)\n        // name is optional. If no name specified, return\n        // all cache items for the specified element.\n        // and for a specified element.\n        var id = Utils.GetUniqueElementId(element);\n\n        if (name) {\n          if (Utils.__cache[id]) {\n            if (Utils.__cache[id][name] != null) {\n              return Utils.__cache[id][name];\n            }\n\n            return $(element).data(name); // Fallback to HTML5 data attribs.\n          }\n\n          return $(element).data(name); // Fallback to HTML5 data attribs.\n        } else {\n          return Utils.__cache[id];\n        }\n      };\n\n      Utils.RemoveData = function (element) {\n        // Removes all cached items for a specified element.\n        var id = Utils.GetUniqueElementId(element);\n\n        if (Utils.__cache[id] != null) {\n          delete Utils.__cache[id];\n        }\n\n        element.removeAttribute('data-select2-id');\n      };\n\n      Utils.copyNonInternalCssClasses = function (dest, src) {\n        var classes;\n        var destinationClasses = dest.getAttribute('class').trim().split(/\\s+/);\n        destinationClasses = destinationClasses.filter(function (clazz) {\n          // Save all Select2 classes\n          return clazz.indexOf('select2-') === 0;\n        });\n        var sourceClasses = src.getAttribute('class').trim().split(/\\s+/);\n        sourceClasses = sourceClasses.filter(function (clazz) {\n          // Only copy non-Select2 classes\n          return clazz.indexOf('select2-') !== 0;\n        });\n        var replacements = destinationClasses.concat(sourceClasses);\n        dest.setAttribute('class', replacements.join(' '));\n      };\n\n      return Utils;\n    });\n    S2.define('select2/results', ['jquery', './utils'], function ($, Utils) {\n      function Results($element, options, dataAdapter) {\n        this.$element = $element;\n        this.data = dataAdapter;\n        this.options = options;\n\n        Results.__super__.constructor.call(this);\n      }\n\n      Utils.Extend(Results, Utils.Observable);\n\n      Results.prototype.render = function () {\n        var $results = $('<ul class=\"select2-results__options\" role=\"listbox\"></ul>');\n\n        if (this.options.get('multiple')) {\n          $results.attr('aria-multiselectable', 'true');\n        }\n\n        this.$results = $results;\n        return $results;\n      };\n\n      Results.prototype.clear = function () {\n        this.$results.empty();\n      };\n\n      Results.prototype.displayMessage = function (params) {\n        var escapeMarkup = this.options.get('escapeMarkup');\n        this.clear();\n        this.hideLoading();\n        var $message = $('<li role=\"alert\" aria-live=\"assertive\"' + ' class=\"select2-results__option\"></li>');\n        var message = this.options.get('translations').get(params.message);\n        $message.append(escapeMarkup(message(params.args)));\n        $message[0].className += ' select2-results__message';\n        this.$results.append($message);\n      };\n\n      Results.prototype.hideMessages = function () {\n        this.$results.find('.select2-results__message').remove();\n      };\n\n      Results.prototype.append = function (data) {\n        this.hideLoading();\n        var $options = [];\n\n        if (data.results == null || data.results.length === 0) {\n          if (this.$results.children().length === 0) {\n            this.trigger('results:message', {\n              message: 'noResults'\n            });\n          }\n\n          return;\n        }\n\n        data.results = this.sort(data.results);\n\n        for (var d = 0; d < data.results.length; d++) {\n          var item = data.results[d];\n          var $option = this.option(item);\n          $options.push($option);\n        }\n\n        this.$results.append($options);\n      };\n\n      Results.prototype.position = function ($results, $dropdown) {\n        var $resultsContainer = $dropdown.find('.select2-results');\n        $resultsContainer.append($results);\n      };\n\n      Results.prototype.sort = function (data) {\n        var sorter = this.options.get('sorter');\n        return sorter(data);\n      };\n\n      Results.prototype.highlightFirstItem = function () {\n        var $options = this.$results.find('.select2-results__option--selectable');\n        var $selected = $options.filter('.select2-results__option--selected'); // Check if there are any selected options\n\n        if ($selected.length > 0) {\n          // If there are selected options, highlight the first\n          $selected.first().trigger('mouseenter');\n        } else {\n          // If there are no selected options, highlight the first option\n          // in the dropdown\n          $options.first().trigger('mouseenter');\n        }\n\n        this.ensureHighlightVisible();\n      };\n\n      Results.prototype.setClasses = function () {\n        var self = this;\n        this.data.current(function (selected) {\n          var selectedIds = selected.map(function (s) {\n            return s.id.toString();\n          });\n          var $options = self.$results.find('.select2-results__option--selectable');\n          $options.each(function () {\n            var $option = $(this);\n            var item = Utils.GetData(this, 'data'); // id needs to be converted to a string when comparing\n\n            var id = '' + item.id;\n\n            if (item.element != null && item.element.selected || item.element == null && selectedIds.indexOf(id) > -1) {\n              this.classList.add('select2-results__option--selected');\n              $option.attr('aria-selected', 'true');\n            } else {\n              this.classList.remove('select2-results__option--selected');\n              $option.attr('aria-selected', 'false');\n            }\n          });\n        });\n      };\n\n      Results.prototype.showLoading = function (params) {\n        this.hideLoading();\n        var loadingMore = this.options.get('translations').get('searching');\n        var loading = {\n          disabled: true,\n          loading: true,\n          text: loadingMore(params)\n        };\n        var $loading = this.option(loading);\n        $loading.className += ' loading-results';\n        this.$results.prepend($loading);\n      };\n\n      Results.prototype.hideLoading = function () {\n        this.$results.find('.loading-results').remove();\n      };\n\n      Results.prototype.option = function (data) {\n        var option = document.createElement('li');\n        option.classList.add('select2-results__option');\n        option.classList.add('select2-results__option--selectable');\n        var attrs = {\n          'role': 'option'\n        };\n        var matches = window.Element.prototype.matches || window.Element.prototype.msMatchesSelector || window.Element.prototype.webkitMatchesSelector;\n\n        if (data.element != null && matches.call(data.element, ':disabled') || data.element == null && data.disabled) {\n          attrs['aria-disabled'] = 'true';\n          option.classList.remove('select2-results__option--selectable');\n          option.classList.add('select2-results__option--disabled');\n        }\n\n        if (data.id == null) {\n          option.classList.remove('select2-results__option--selectable');\n        }\n\n        if (data._resultId != null) {\n          option.id = data._resultId;\n        }\n\n        if (data.title) {\n          option.title = data.title;\n        }\n\n        if (data.children) {\n          attrs.role = 'group';\n          attrs['aria-label'] = data.text;\n          option.classList.remove('select2-results__option--selectable');\n          option.classList.add('select2-results__option--group');\n        }\n\n        for (var attr in attrs) {\n          var val = attrs[attr];\n          option.setAttribute(attr, val);\n        }\n\n        if (data.children) {\n          var $option = $(option);\n          var label = document.createElement('strong');\n          label.className = 'select2-results__group';\n          this.template(data, label);\n          var $children = [];\n\n          for (var c = 0; c < data.children.length; c++) {\n            var child = data.children[c];\n            var $child = this.option(child);\n            $children.push($child);\n          }\n\n          var $childrenContainer = $('<ul></ul>', {\n            'class': 'select2-results__options select2-results__options--nested',\n            'role': 'none'\n          });\n          $childrenContainer.append($children);\n          $option.append(label);\n          $option.append($childrenContainer);\n        } else {\n          this.template(data, option);\n        }\n\n        Utils.StoreData(option, 'data', data);\n        return option;\n      };\n\n      Results.prototype.bind = function (container, $container) {\n        var self = this;\n        var id = container.id + '-results';\n        this.$results.attr('id', id);\n        container.on('results:all', function (params) {\n          self.clear();\n          self.append(params.data);\n\n          if (container.isOpen()) {\n            self.setClasses();\n            self.highlightFirstItem();\n          }\n        });\n        container.on('results:append', function (params) {\n          self.append(params.data);\n\n          if (container.isOpen()) {\n            self.setClasses();\n          }\n        });\n        container.on('query', function (params) {\n          self.hideMessages();\n          self.showLoading(params);\n        });\n        container.on('select', function () {\n          if (!container.isOpen()) {\n            return;\n          }\n\n          self.setClasses();\n\n          if (self.options.get('scrollAfterSelect')) {\n            self.highlightFirstItem();\n          }\n        });\n        container.on('unselect', function () {\n          if (!container.isOpen()) {\n            return;\n          }\n\n          self.setClasses();\n\n          if (self.options.get('scrollAfterSelect')) {\n            self.highlightFirstItem();\n          }\n        });\n        container.on('open', function () {\n          // When the dropdown is open, aria-expended=\"true\"\n          self.$results.attr('aria-expanded', 'true');\n          self.$results.attr('aria-hidden', 'false');\n          self.setClasses();\n          self.ensureHighlightVisible();\n        });\n        container.on('close', function () {\n          // When the dropdown is closed, aria-expended=\"false\"\n          self.$results.attr('aria-expanded', 'false');\n          self.$results.attr('aria-hidden', 'true');\n          self.$results.removeAttr('aria-activedescendant');\n        });\n        container.on('results:toggle', function () {\n          var $highlighted = self.getHighlightedResults();\n\n          if ($highlighted.length === 0) {\n            return;\n          }\n\n          $highlighted.trigger('mouseup');\n        });\n        container.on('results:select', function () {\n          var $highlighted = self.getHighlightedResults();\n\n          if ($highlighted.length === 0) {\n            return;\n          }\n\n          var data = Utils.GetData($highlighted[0], 'data');\n\n          if ($highlighted.hasClass('select2-results__option--selected')) {\n            self.trigger('close', {});\n          } else {\n            self.trigger('select', {\n              data: data\n            });\n          }\n        });\n        container.on('results:previous', function () {\n          var $highlighted = self.getHighlightedResults();\n          var $options = self.$results.find('.select2-results__option--selectable');\n          var currentIndex = $options.index($highlighted); // If we are already at the top, don't move further\n          // If no options, currentIndex will be -1\n\n          if (currentIndex <= 0) {\n            return;\n          }\n\n          var nextIndex = currentIndex - 1; // If none are highlighted, highlight the first\n\n          if ($highlighted.length === 0) {\n            nextIndex = 0;\n          }\n\n          var $next = $options.eq(nextIndex);\n          $next.trigger('mouseenter');\n          var currentOffset = self.$results.offset().top;\n          var nextTop = $next.offset().top;\n          var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n\n          if (nextIndex === 0) {\n            self.$results.scrollTop(0);\n          } else if (nextTop - currentOffset < 0) {\n            self.$results.scrollTop(nextOffset);\n          }\n        });\n        container.on('results:next', function () {\n          var $highlighted = self.getHighlightedResults();\n          var $options = self.$results.find('.select2-results__option--selectable');\n          var currentIndex = $options.index($highlighted);\n          var nextIndex = currentIndex + 1; // If we are at the last option, stay there\n\n          if (nextIndex >= $options.length) {\n            return;\n          }\n\n          var $next = $options.eq(nextIndex);\n          $next.trigger('mouseenter');\n          var currentOffset = self.$results.offset().top + self.$results.outerHeight(false);\n          var nextBottom = $next.offset().top + $next.outerHeight(false);\n          var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n\n          if (nextIndex === 0) {\n            self.$results.scrollTop(0);\n          } else if (nextBottom > currentOffset) {\n            self.$results.scrollTop(nextOffset);\n          }\n        });\n        container.on('results:focus', function (params) {\n          params.element[0].classList.add('select2-results__option--highlighted');\n          params.element[0].setAttribute('aria-selected', 'true');\n        });\n        container.on('results:message', function (params) {\n          self.displayMessage(params);\n        });\n\n        if ($.fn.mousewheel) {\n          this.$results.on('mousewheel', function (e) {\n            var top = self.$results.scrollTop();\n            var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n            var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n            var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n\n            if (isAtTop) {\n              self.$results.scrollTop(0);\n              e.preventDefault();\n              e.stopPropagation();\n            } else if (isAtBottom) {\n              self.$results.scrollTop(self.$results.get(0).scrollHeight - self.$results.height());\n              e.preventDefault();\n              e.stopPropagation();\n            }\n          });\n        }\n\n        this.$results.on('mouseup', '.select2-results__option--selectable', function (evt) {\n          var $this = $(this);\n          var data = Utils.GetData(this, 'data');\n\n          if ($this.hasClass('select2-results__option--selected')) {\n            if (self.options.get('multiple')) {\n              self.trigger('unselect', {\n                originalEvent: evt,\n                data: data\n              });\n            } else {\n              self.trigger('close', {});\n            }\n\n            return;\n          }\n\n          self.trigger('select', {\n            originalEvent: evt,\n            data: data\n          });\n        });\n        this.$results.on('mouseenter', '.select2-results__option--selectable', function (evt) {\n          var data = Utils.GetData(this, 'data');\n          self.getHighlightedResults().removeClass('select2-results__option--highlighted').attr('aria-selected', 'false');\n          self.trigger('results:focus', {\n            data: data,\n            element: $(this)\n          });\n        });\n      };\n\n      Results.prototype.getHighlightedResults = function () {\n        var $highlighted = this.$results.find('.select2-results__option--highlighted');\n        return $highlighted;\n      };\n\n      Results.prototype.destroy = function () {\n        this.$results.remove();\n      };\n\n      Results.prototype.ensureHighlightVisible = function () {\n        var $highlighted = this.getHighlightedResults();\n\n        if ($highlighted.length === 0) {\n          return;\n        }\n\n        var $options = this.$results.find('.select2-results__option--selectable');\n        var currentIndex = $options.index($highlighted);\n        var currentOffset = this.$results.offset().top;\n        var nextTop = $highlighted.offset().top;\n        var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n        var offsetDelta = nextTop - currentOffset;\n        nextOffset -= $highlighted.outerHeight(false) * 2;\n\n        if (currentIndex <= 2) {\n          this.$results.scrollTop(0);\n        } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\n          this.$results.scrollTop(nextOffset);\n        }\n      };\n\n      Results.prototype.template = function (result, container) {\n        var template = this.options.get('templateResult');\n        var escapeMarkup = this.options.get('escapeMarkup');\n        var content = template(result, container);\n\n        if (content == null) {\n          container.style.display = 'none';\n        } else if (typeof content === 'string') {\n          container.innerHTML = escapeMarkup(content);\n        } else {\n          $(container).append(content);\n        }\n      };\n\n      return Results;\n    });\n    S2.define('select2/keys', [], function () {\n      var KEYS = {\n        BACKSPACE: 8,\n        TAB: 9,\n        ENTER: 13,\n        SHIFT: 16,\n        CTRL: 17,\n        ALT: 18,\n        ESC: 27,\n        SPACE: 32,\n        PAGE_UP: 33,\n        PAGE_DOWN: 34,\n        END: 35,\n        HOME: 36,\n        LEFT: 37,\n        UP: 38,\n        RIGHT: 39,\n        DOWN: 40,\n        DELETE: 46\n      };\n      return KEYS;\n    });\n    S2.define('select2/selection/base', ['jquery', '../utils', '../keys'], function ($, Utils, KEYS) {\n      function BaseSelection($element, options) {\n        this.$element = $element;\n        this.options = options;\n\n        BaseSelection.__super__.constructor.call(this);\n      }\n\n      Utils.Extend(BaseSelection, Utils.Observable);\n\n      BaseSelection.prototype.render = function () {\n        var $selection = $('<span class=\"select2-selection\" role=\"combobox\" ' + ' aria-haspopup=\"true\" aria-expanded=\"false\">' + '</span>');\n        this._tabindex = 0;\n\n        if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {\n          this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');\n        } else if (this.$element.attr('tabindex') != null) {\n          this._tabindex = this.$element.attr('tabindex');\n        }\n\n        $selection.attr('title', this.$element.attr('title'));\n        $selection.attr('tabindex', this._tabindex);\n        $selection.attr('aria-disabled', 'false');\n        this.$selection = $selection;\n        return $selection;\n      };\n\n      BaseSelection.prototype.bind = function (container, $container) {\n        var self = this;\n        var resultsId = container.id + '-results';\n        this.container = container;\n        this.$selection.on('focus', function (evt) {\n          self.trigger('focus', evt);\n        });\n        this.$selection.on('blur', function (evt) {\n          self._handleBlur(evt);\n        });\n        this.$selection.on('keydown', function (evt) {\n          self.trigger('keypress', evt);\n\n          if (evt.which === KEYS.SPACE) {\n            evt.preventDefault();\n          }\n        });\n        container.on('results:focus', function (params) {\n          self.$selection.attr('aria-activedescendant', params.data._resultId);\n        });\n        container.on('selection:update', function (params) {\n          self.update(params.data);\n        });\n        container.on('open', function () {\n          // When the dropdown is open, aria-expanded=\"true\"\n          self.$selection.attr('aria-expanded', 'true');\n          self.$selection.attr('aria-owns', resultsId);\n\n          self._attachCloseHandler(container);\n        });\n        container.on('close', function () {\n          // When the dropdown is closed, aria-expanded=\"false\"\n          self.$selection.attr('aria-expanded', 'false');\n          self.$selection.removeAttr('aria-activedescendant');\n          self.$selection.removeAttr('aria-owns');\n          self.$selection.trigger('focus');\n\n          self._detachCloseHandler(container);\n        });\n        container.on('enable', function () {\n          self.$selection.attr('tabindex', self._tabindex);\n          self.$selection.attr('aria-disabled', 'false');\n        });\n        container.on('disable', function () {\n          self.$selection.attr('tabindex', '-1');\n          self.$selection.attr('aria-disabled', 'true');\n        });\n      };\n\n      BaseSelection.prototype._handleBlur = function (evt) {\n        var self = this; // This needs to be delayed as the active element is the body when the tab\n        // key is pressed, possibly along with others.\n\n        window.setTimeout(function () {\n          // Don't trigger `blur` if the focus is still in the selection\n          if (document.activeElement == self.$selection[0] || $.contains(self.$selection[0], document.activeElement)) {\n            return;\n          }\n\n          self.trigger('blur', evt);\n        }, 1);\n      };\n\n      BaseSelection.prototype._attachCloseHandler = function (container) {\n        $(document.body).on('mousedown.select2.' + container.id, function (e) {\n          var $target = $(e.target);\n          var $select = $target.closest('.select2');\n          var $all = $('.select2.select2-container--open');\n          $all.each(function () {\n            if (this == $select[0]) {\n              return;\n            }\n\n            var $element = Utils.GetData(this, 'element'); // Renamed function. @edited\n            // old: $element.select2('close');\n\n            $element.SUIselect2('close');\n          });\n        });\n      };\n\n      BaseSelection.prototype._detachCloseHandler = function (container) {\n        $(document.body).off('mousedown.select2.' + container.id);\n      };\n\n      BaseSelection.prototype.position = function ($selection, $container) {\n        var $selectionContainer = $container.find('.selection');\n        $selectionContainer.append($selection);\n      };\n\n      BaseSelection.prototype.destroy = function () {\n        this._detachCloseHandler(this.container);\n      };\n\n      BaseSelection.prototype.update = function (data) {\n        throw new Error('The `update` method must be defined in child classes.');\n      };\n      /**\n       * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n       * object.\n       *\n       * @return {true} if the instance is not disabled.\n       * @return {false} if the instance is disabled.\n       */\n\n\n      BaseSelection.prototype.isEnabled = function () {\n        return !this.isDisabled();\n      };\n      /**\n       * Helper method to abstract the \"disabled\" state of this object.\n       *\n       * @return {true} if the disabled option is true.\n       * @return {false} if the disabled option is false.\n       */\n\n\n      BaseSelection.prototype.isDisabled = function () {\n        return this.options.get('disabled');\n      };\n\n      return BaseSelection;\n    });\n    S2.define('select2/selection/single', ['jquery', './base', '../utils', '../keys'], function ($, BaseSelection, Utils, KEYS) {\n      function SingleSelection() {\n        SingleSelection.__super__.constructor.apply(this, arguments);\n      }\n\n      Utils.Extend(SingleSelection, BaseSelection);\n\n      SingleSelection.prototype.render = function () {\n        var $selection = SingleSelection.__super__.render.call(this);\n\n        $selection[0].classList.add('select2-selection--single'); // Assign SUI icon to select button. @edited\n\n        $selection.html('<span class=\"select2-selection__rendered\"></span>' + '<span class=\"select2-selection__arrow\" role=\"presentation\">' + '<span class=\"sui-icon-chevron-down sui-sm\" aria-hidden=\"true\"></span>' + '</span>');\n        return $selection;\n      };\n\n      SingleSelection.prototype.bind = function (container, $container) {\n        var self = this;\n\n        SingleSelection.__super__.bind.apply(this, arguments);\n\n        var id = container.id + '-container';\n        this.$selection.find('.select2-selection__rendered').attr('id', id).attr('role', 'textbox').attr('aria-readonly', 'true');\n        this.$selection.attr('aria-labelledby', id);\n        this.$selection.attr('aria-controls', id);\n        this.$selection.on('mousedown', function (evt) {\n          // Only respond to left clicks\n          if (evt.which !== 1) {\n            return;\n          }\n\n          self.trigger('toggle', {\n            originalEvent: evt\n          });\n        });\n        this.$selection.on('focus', function (evt) {// User focuses on the container\n        });\n        this.$selection.on('blur', function (evt) {// User exits the container\n        });\n        container.on('focus', function (evt) {\n          if (!container.isOpen()) {\n            self.$selection.trigger('focus');\n          }\n        });\n      };\n\n      SingleSelection.prototype.clear = function () {\n        var $rendered = this.$selection.find('.select2-selection__rendered');\n        $rendered.empty();\n        $rendered.removeAttr('title'); // clear tooltip on empty\n      };\n\n      SingleSelection.prototype.display = function (data, container) {\n        var template = this.options.get('templateSelection');\n        var escapeMarkup = this.options.get('escapeMarkup');\n        return escapeMarkup(template(data, container));\n      };\n\n      SingleSelection.prototype.selectionContainer = function () {\n        return $('<span></span>');\n      };\n\n      SingleSelection.prototype.update = function (data) {\n        // Add icon when variables is empty. @edited\n        if (data.length === 0) {\n          this.clear();\n\n          if ('vars' === this.options.get('theme')) {\n            this.$selection.find('.select2-selection__rendered').html('<span class=\"sui-icon-plus-circle sui-md\" aria-hidden=\"true\"></span>');\n          }\n\n          return;\n        }\n\n        var selection = data[0];\n        var $rendered = this.$selection.find('.select2-selection__rendered');\n        var formatted = this.display(selection, $rendered);\n        $rendered.empty().append(formatted);\n        var title = selection.title || selection.text;\n\n        if (title) {\n          $rendered.attr('title', title);\n        } else {\n          $rendered.removeAttr('title');\n        }\n      };\n\n      return SingleSelection;\n    });\n    S2.define('select2/selection/multiple', ['jquery', './base', '../utils'], function ($, BaseSelection, Utils) {\n      function MultipleSelection($element, options) {\n        MultipleSelection.__super__.constructor.apply(this, arguments);\n      }\n\n      Utils.Extend(MultipleSelection, BaseSelection);\n\n      MultipleSelection.prototype.render = function () {\n        var $selection = MultipleSelection.__super__.render.call(this);\n\n        $selection[0].classList.add('select2-selection--multiple');\n        $selection.html('<ul class=\"select2-selection__rendered\"></ul>');\n        return $selection;\n      };\n\n      MultipleSelection.prototype.bind = function (container, $container) {\n        var self = this;\n\n        MultipleSelection.__super__.bind.apply(this, arguments);\n\n        var id = container.id + '-container';\n        this.$selection.find('.select2-selection__rendered').attr('id', id);\n        this.$selection.on('click', function (evt) {\n          self.trigger('toggle', {\n            originalEvent: evt\n          });\n        });\n        this.$selection.on('click', '.sui-button-icon', function (evt) {\n          // Ignore the event if it is disabled\n          if (self.isDisabled()) {\n            return;\n          }\n\n          var $remove = $(this);\n          var $selection = $remove.parent();\n          var data = Utils.GetData($selection[0], 'data');\n          self.trigger('unselect', {\n            originalEvent: evt,\n            data: data\n          });\n        });\n        this.$selection.on('keydown', '.sui-button-icon', function (evt) {\n          // Ignore the event if it is disabled\n          if (self.isDisabled()) {\n            return;\n          }\n\n          evt.stopPropagation();\n        });\n      };\n\n      MultipleSelection.prototype.clear = function () {\n        var $rendered = this.$selection.find('.select2-selection__rendered');\n        $rendered.empty();\n        $rendered.removeAttr('title');\n        $rendered.removeClass('has-option-selected');\n      };\n\n      MultipleSelection.prototype.display = function (data, container) {\n        var template = this.options.get('templateSelection');\n        var escapeMarkup = this.options.get('escapeMarkup');\n        return escapeMarkup(template(data, container));\n      };\n\n      MultipleSelection.prototype.selectionContainer = function () {\n        var $container = $('<li class=\"select2-selection__choice\">' + '<span class=\"select2-selection__choice__display\"></span>' + '<button type=\"button\" class=\"sui-button-icon\" ' + 'tabindex=\"-1\">' + '<span class=\"sui-icon-close sui-sm\" aria-hidden=\"true\"></span>' + '</button>' + '</li>');\n        return $container;\n      };\n\n      MultipleSelection.prototype.update = function (data) {\n        this.clear();\n\n        if (data.length === 0) {\n          return;\n        }\n\n        var $selections = [];\n        var selectionIdPrefix = this.$selection.find('.select2-selection__rendered').attr('id') + '-choice-';\n\n        for (var d = 0; d < data.length; d++) {\n          var selection = data[d];\n          var $selection = this.selectionContainer();\n          var formatted = this.display(selection, $selection);\n          var selectionId = selectionIdPrefix + Utils.generateChars(4) + '-';\n\n          if (selection.id) {\n            selectionId += selection.id;\n          } else {\n            selectionId += Utils.generateChars(4);\n          }\n\n          $selection.find('.select2-selection__choice__display').append(formatted).attr('id', selectionId);\n          var title = selection.title || selection.text;\n\n          if (title) {\n            $selection.attr('title', title);\n          }\n\n          var removeItem = this.options.get('translations').get('removeItem');\n          var $remove = $selection.find('.sui-button-icon');\n          $remove.attr('title', removeItem());\n          $remove.attr('aria-label', removeItem());\n          $remove.attr('aria-describedby', selectionId);\n          Utils.StoreData($selection[0], 'data', selection);\n          $selections.push($selection);\n        }\n\n        var $rendered = this.$selection.find('.select2-selection__rendered');\n        $rendered.append($selections).addClass('has-option-selected');\n      };\n\n      return MultipleSelection;\n    });\n    S2.define('select2/selection/placeholder', [], function () {\n      function Placeholder(decorated, $element, options) {\n        this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n        decorated.call(this, $element, options);\n      }\n\n      Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n        if (typeof placeholder === 'string') {\n          placeholder = {\n            id: '',\n            text: placeholder\n          };\n        }\n\n        return placeholder;\n      };\n\n      Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n        var $placeholder = this.selectionContainer();\n        $placeholder.html(this.display(placeholder));\n        $placeholder[0].classList.add('select2-selection__placeholder');\n        $placeholder[0].classList.remove('select2-selection__choice');\n        var placeholderTitle = placeholder.title || placeholder.text || $placeholder.text();\n        this.$selection.find('.select2-selection__rendered').attr('title', placeholderTitle);\n        return $placeholder;\n      };\n\n      Placeholder.prototype.update = function (decorated, data) {\n        var singlePlaceholder = data.length == 1 && data[0].id != this.placeholder.id;\n        var multipleSelections = data.length > 1;\n\n        if (multipleSelections || singlePlaceholder) {\n          return decorated.call(this, data);\n        }\n\n        this.clear();\n        var $placeholder = this.createPlaceholder(this.placeholder);\n        this.$selection.find('.select2-selection__rendered').append($placeholder);\n      };\n\n      return Placeholder;\n    });\n    S2.define('select2/selection/allowClear', ['jquery', '../keys', '../utils'], function ($, KEYS, Utils) {\n      function AllowClear() {}\n\n      AllowClear.prototype.bind = function (decorated, container, $container) {\n        var self = this;\n        decorated.call(this, container, $container);\n\n        if (this.placeholder == null) {\n          if (this.options.get('debug') && window.console && console.error) {\n            console.error('Select2: The `allowClear` option should be used in combination ' + 'with the `placeholder` option.');\n          }\n        }\n\n        this.$selection.on('mousedown', '.select2-selection__clear', function (evt) {\n          self._handleClear(evt);\n        });\n        container.on('keypress', function (evt) {\n          self._handleKeyboardClear(evt, container);\n        });\n      };\n\n      AllowClear.prototype._handleClear = function (_, evt) {\n        // Ignore the event if it is disabled\n        if (this.isDisabled()) {\n          return;\n        }\n\n        var $clear = this.$selection.find('.select2-selection__clear'); // Ignore the event if nothing has been selected\n\n        if ($clear.length === 0) {\n          return;\n        }\n\n        evt.stopPropagation();\n        var data = Utils.GetData($clear[0], 'data');\n        var previousVal = this.$element.val();\n        this.$element.val(this.placeholder.id);\n        var unselectData = {\n          data: data\n        };\n        this.trigger('clear', unselectData);\n\n        if (unselectData.prevented) {\n          this.$element.val(previousVal);\n          return;\n        }\n\n        for (var d = 0; d < data.length; d++) {\n          unselectData = {\n            data: data[d]\n          }; // Trigger the `unselect` event, so people can prevent it from being\n          // cleared.\n\n          this.trigger('unselect', unselectData); // If the event was prevented, don't clear it out.\n\n          if (unselectData.prevented) {\n            this.$element.val(previousVal);\n            return;\n          }\n        }\n\n        this.$element.trigger('input').trigger('change');\n        this.trigger('toggle', {});\n      };\n\n      AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n        if (container.isOpen()) {\n          return;\n        }\n\n        if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n          this._handleClear(evt);\n        }\n      };\n\n      AllowClear.prototype.update = function (decorated, data) {\n        decorated.call(this, data);\n        this.$selection.find('.select2-selection__clear').remove();\n        this.$selection[0].classList.remove('select2-selection--clearable');\n\n        if (this.$selection.find('.select2-selection__placeholder').length > 0 || data.length === 0) {\n          return;\n        }\n\n        var selectionId = this.$selection.find('.select2-selection__rendered').attr('id');\n        var removeAll = this.options.get('translations').get('removeAllItems');\n        var $remove = $('<button type=\"button\" class=\"select2-selection__clear\" tabindex=\"-1\">' + '<span aria-hidden=\"true\">&times;</span>' + '</button>');\n        $remove.attr('title', removeAll());\n        $remove.attr('aria-label', removeAll());\n        $remove.attr('aria-describedby', selectionId);\n        Utils.StoreData($remove[0], 'data', data);\n        this.$selection.prepend($remove);\n        this.$selection[0].classList.add('select2-selection--clearable');\n      };\n\n      return AllowClear;\n    });\n    S2.define('select2/selection/search', ['jquery', '../utils', '../keys'], function ($, Utils, KEYS) {\n      function Search(decorated, $element, options) {\n        decorated.call(this, $element, options);\n      }\n\n      Search.prototype.render = function (decorated) {\n        var searchLabel = this.options.get('translations').get('search');\n        var $search = $('<span class=\"select2-search select2-search--inline\">' + '<textarea class=\"select2-search__field\"' + ' type=\"search\" tabindex=\"-1\"' + ' autocorrect=\"off\" autocapitalize=\"none\"' + ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" >' + '</textarea>' + '</span>');\n        this.$searchContainer = $search;\n        this.$search = $search.find('textarea');\n        this.$search.prop('autocomplete', this.options.get('autocomplete'));\n        this.$search.attr('aria-label', searchLabel());\n        var $rendered = decorated.call(this);\n\n        this._transferTabIndex();\n\n        $rendered.append(this.$searchContainer);\n        return $rendered;\n      };\n\n      Search.prototype.bind = function (decorated, container, $container) {\n        var self = this;\n        var resultsId = container.id + '-results';\n        var selectionId = container.id + '-container';\n        decorated.call(this, container, $container);\n        self.$search.attr('aria-describedby', selectionId);\n        container.on('open', function () {\n          self.$search.attr('aria-controls', resultsId);\n          self.$search.trigger('focus');\n        });\n        container.on('close', function () {\n          self.$search.val('');\n          self.resizeSearch();\n          self.$search.removeAttr('aria-controls');\n          self.$search.removeAttr('aria-activedescendant');\n          self.$search.trigger('focus');\n        });\n        container.on('enable', function () {\n          self.$search.prop('disabled', false);\n\n          self._transferTabIndex();\n        });\n        container.on('disable', function () {\n          self.$search.prop('disabled', true);\n        });\n        container.on('focus', function (evt) {\n          self.$search.trigger('focus');\n        });\n        container.on('results:focus', function (params) {\n          if (params.data._resultId) {\n            self.$search.attr('aria-activedescendant', params.data._resultId);\n          } else {\n            self.$search.removeAttr('aria-activedescendant');\n          }\n        });\n        this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n          self.trigger('focus', evt);\n        });\n        this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n          self._handleBlur(evt);\n        });\n        this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n          evt.stopPropagation();\n          self.trigger('keypress', evt);\n          self._keyUpPrevented = evt.isDefaultPrevented();\n          var key = evt.which;\n\n          if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n            var $previousChoice = self.$selection.find('.select2-selection__choice').last();\n\n            if ($previousChoice.length > 0) {\n              var item = Utils.GetData($previousChoice[0], 'data');\n              self.searchRemoveChoice(item);\n              evt.preventDefault();\n            }\n          }\n        });\n        this.$selection.on('click', '.select2-search--inline', function (evt) {\n          if (self.$search.val()) {\n            evt.stopPropagation();\n          }\n        }); // Try to detect the IE version should the `documentMode` property that\n        // is stored on the document. This is only implemented in IE and is\n        // slightly cleaner than doing a user agent check.\n        // This property is not available in Edge, but Edge also doesn't have\n        // this bug.\n\n        var msie = document.documentMode;\n        var disableInputEvents = msie && msie <= 11; // Workaround for browsers which do not support the `input` event\n        // This will prevent double-triggering of events for browsers which support\n        // both the `keyup` and `input` events.\n\n        this.$selection.on('input.searchcheck', '.select2-search--inline', function (evt) {\n          // IE will trigger the `input` event when a placeholder is used on a\n          // search box. To get around this issue, we are forced to ignore all\n          // `input` events in IE and keep using `keyup`.\n          if (disableInputEvents) {\n            self.$selection.off('input.search input.searchcheck');\n            return;\n          } // Unbind the duplicated `keyup` event\n\n\n          self.$selection.off('keyup.search');\n        });\n        this.$selection.on('keyup.search input.search', '.select2-search--inline', function (evt) {\n          // IE will trigger the `input` event when a placeholder is used on a\n          // search box. To get around this issue, we are forced to ignore all\n          // `input` events in IE and keep using `keyup`.\n          if (disableInputEvents && evt.type === 'input') {\n            self.$selection.off('input.search input.searchcheck');\n            return;\n          }\n\n          var key = evt.which; // We can freely ignore events from modifier keys\n\n          if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n            return;\n          } // Tabbing will be handled during the `keydown` phase\n\n\n          if (key == KEYS.TAB) {\n            return;\n          }\n\n          self.handleSearch(evt);\n        });\n      };\n      /**\n       * This method will transfer the tabindex attribute from the rendered\n       * selection to the search box. This allows for the search box to be used as\n       * the primary focus instead of the selection container.\n       *\n       * @private\n       */\n\n\n      Search.prototype._transferTabIndex = function (decorated) {\n        this.$search.attr('tabindex', this.$selection.attr('tabindex'));\n        this.$selection.attr('tabindex', '-1');\n      };\n\n      Search.prototype.createPlaceholder = function (decorated, placeholder) {\n        this.$search.attr('placeholder', placeholder.text);\n      };\n\n      Search.prototype.update = function (decorated, data) {\n        var searchHadFocus = this.$search[0] == document.activeElement;\n        this.$search.attr('placeholder', '');\n        decorated.call(this, data);\n        this.resizeSearch();\n\n        if (searchHadFocus) {\n          this.$search.trigger('focus');\n        }\n      };\n\n      Search.prototype.handleSearch = function () {\n        this.resizeSearch();\n\n        if (!this._keyUpPrevented) {\n          var input = this.$search.val();\n          this.trigger('query', {\n            term: input\n          });\n        }\n\n        this._keyUpPrevented = false;\n      };\n\n      Search.prototype.searchRemoveChoice = function (decorated, item) {\n        this.trigger('unselect', {\n          data: item\n        });\n        this.$search.val(item.text);\n        this.handleSearch();\n      };\n\n      Search.prototype.resizeSearch = function () {\n        this.$search.css('width', '25px');\n        var width = '100%';\n\n        if (this.$search.attr('placeholder') === '') {\n          var minimumWidth = this.$search.val().length + 1;\n          width = minimumWidth * 0.75 + 'em';\n        }\n\n        this.$search.css('width', width);\n      };\n\n      return Search;\n    });\n    S2.define('select2/selection/selectionCss', ['../utils'], function (Utils) {\n      function SelectionCSS() {}\n\n      SelectionCSS.prototype.render = function (decorated) {\n        var $selection = decorated.call(this);\n        var selectionCssClass = this.options.get('selectionCssClass') || '';\n\n        if (selectionCssClass.indexOf(':all:') !== -1) {\n          selectionCssClass = selectionCssClass.replace(':all:', '');\n          Utils.copyNonInternalCssClasses($selection[0], this.$element[0]);\n        }\n\n        $selection.addClass(selectionCssClass);\n        return $selection;\n      };\n\n      return SelectionCSS;\n    });\n    S2.define('select2/selection/eventRelay', ['jquery'], function ($) {\n      function EventRelay() {}\n\n      EventRelay.prototype.bind = function (decorated, container, $container) {\n        var self = this;\n        var relayEvents = ['open', 'opening', 'close', 'closing', 'select', 'selecting', 'unselect', 'unselecting', 'clear', 'clearing'];\n        var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting', 'clearing'];\n        decorated.call(this, container, $container);\n        container.on('*', function (name, params) {\n          // Ignore events that should not be relayed\n          if (relayEvents.indexOf(name) === -1) {\n            return;\n          } // The parameters should always be an object\n\n\n          params = params || {}; // Generate the jQuery event for the Select2 event\n\n          var evt = $.Event('select2:' + name, {\n            params: params\n          });\n          self.$element.trigger(evt); // Only handle preventable events if it was one\n\n          if (preventableEvents.indexOf(name) === -1) {\n            return;\n          }\n\n          params.prevented = evt.isDefaultPrevented();\n        });\n      };\n\n      return EventRelay;\n    });\n    S2.define('select2/translation', ['jquery', 'require'], function ($, require) {\n      function Translation(dict) {\n        this.dict = dict || {};\n      }\n\n      Translation.prototype.all = function () {\n        return this.dict;\n      };\n\n      Translation.prototype.get = function (key) {\n        return this.dict[key];\n      };\n\n      Translation.prototype.extend = function (translation) {\n        this.dict = $.extend({}, translation.all(), this.dict);\n      }; // Static functions\n\n\n      Translation._cache = {};\n\n      Translation.loadPath = function (path) {\n        if (!(path in Translation._cache)) {\n          var translations = require(path);\n\n          Translation._cache[path] = translations;\n        }\n\n        return new Translation(Translation._cache[path]);\n      };\n\n      return Translation;\n    });\n    S2.define('select2/diacritics', [], function () {\n      var diacritics = {\n        \"\\u24B6\": 'A',\n        \"\\uFF21\": 'A',\n        \"\\xC0\": 'A',\n        \"\\xC1\": 'A',\n        \"\\xC2\": 'A',\n        \"\\u1EA6\": 'A',\n        \"\\u1EA4\": 'A',\n        \"\\u1EAA\": 'A',\n        \"\\u1EA8\": 'A',\n        \"\\xC3\": 'A',\n        \"\\u0100\": 'A',\n        \"\\u0102\": 'A',\n        \"\\u1EB0\": 'A',\n        \"\\u1EAE\": 'A',\n        \"\\u1EB4\": 'A',\n        \"\\u1EB2\": 'A',\n        \"\\u0226\": 'A',\n        \"\\u01E0\": 'A',\n        \"\\xC4\": 'A',\n        \"\\u01DE\": 'A',\n        \"\\u1EA2\": 'A',\n        \"\\xC5\": 'A',\n        \"\\u01FA\": 'A',\n        \"\\u01CD\": 'A',\n        \"\\u0200\": 'A',\n        \"\\u0202\": 'A',\n        \"\\u1EA0\": 'A',\n        \"\\u1EAC\": 'A',\n        \"\\u1EB6\": 'A',\n        \"\\u1E00\": 'A',\n        \"\\u0104\": 'A',\n        \"\\u023A\": 'A',\n        \"\\u2C6F\": 'A',\n        \"\\uA732\": 'AA',\n        \"\\xC6\": 'AE',\n        \"\\u01FC\": 'AE',\n        \"\\u01E2\": 'AE',\n        \"\\uA734\": 'AO',\n        \"\\uA736\": 'AU',\n        \"\\uA738\": 'AV',\n        \"\\uA73A\": 'AV',\n        \"\\uA73C\": 'AY',\n        \"\\u24B7\": 'B',\n        \"\\uFF22\": 'B',\n        \"\\u1E02\": 'B',\n        \"\\u1E04\": 'B',\n        \"\\u1E06\": 'B',\n        \"\\u0243\": 'B',\n        \"\\u0182\": 'B',\n        \"\\u0181\": 'B',\n        \"\\u24B8\": 'C',\n        \"\\uFF23\": 'C',\n        \"\\u0106\": 'C',\n        \"\\u0108\": 'C',\n        \"\\u010A\": 'C',\n        \"\\u010C\": 'C',\n        \"\\xC7\": 'C',\n        \"\\u1E08\": 'C',\n        \"\\u0187\": 'C',\n        \"\\u023B\": 'C',\n        \"\\uA73E\": 'C',\n        \"\\u24B9\": 'D',\n        \"\\uFF24\": 'D',\n        \"\\u1E0A\": 'D',\n        \"\\u010E\": 'D',\n        \"\\u1E0C\": 'D',\n        \"\\u1E10\": 'D',\n        \"\\u1E12\": 'D',\n        \"\\u1E0E\": 'D',\n        \"\\u0110\": 'D',\n        \"\\u018B\": 'D',\n        \"\\u018A\": 'D',\n        \"\\u0189\": 'D',\n        \"\\uA779\": 'D',\n        \"\\u01F1\": 'DZ',\n        \"\\u01C4\": 'DZ',\n        \"\\u01F2\": 'Dz',\n        \"\\u01C5\": 'Dz',\n        \"\\u24BA\": 'E',\n        \"\\uFF25\": 'E',\n        \"\\xC8\": 'E',\n        \"\\xC9\": 'E',\n        \"\\xCA\": 'E',\n        \"\\u1EC0\": 'E',\n        \"\\u1EBE\": 'E',\n        \"\\u1EC4\": 'E',\n        \"\\u1EC2\": 'E',\n        \"\\u1EBC\": 'E',\n        \"\\u0112\": 'E',\n        \"\\u1E14\": 'E',\n        \"\\u1E16\": 'E',\n        \"\\u0114\": 'E',\n        \"\\u0116\": 'E',\n        \"\\xCB\": 'E',\n        \"\\u1EBA\": 'E',\n        \"\\u011A\": 'E',\n        \"\\u0204\": 'E',\n        \"\\u0206\": 'E',\n        \"\\u1EB8\": 'E',\n        \"\\u1EC6\": 'E',\n        \"\\u0228\": 'E',\n        \"\\u1E1C\": 'E',\n        \"\\u0118\": 'E',\n        \"\\u1E18\": 'E',\n        \"\\u1E1A\": 'E',\n        \"\\u0190\": 'E',\n        \"\\u018E\": 'E',\n        \"\\u24BB\": 'F',\n        \"\\uFF26\": 'F',\n        \"\\u1E1E\": 'F',\n        \"\\u0191\": 'F',\n        \"\\uA77B\": 'F',\n        \"\\u24BC\": 'G',\n        \"\\uFF27\": 'G',\n        \"\\u01F4\": 'G',\n        \"\\u011C\": 'G',\n        \"\\u1E20\": 'G',\n        \"\\u011E\": 'G',\n        \"\\u0120\": 'G',\n        \"\\u01E6\": 'G',\n        \"\\u0122\": 'G',\n        \"\\u01E4\": 'G',\n        \"\\u0193\": 'G',\n        \"\\uA7A0\": 'G',\n        \"\\uA77D\": 'G',\n        \"\\uA77E\": 'G',\n        \"\\u24BD\": 'H',\n        \"\\uFF28\": 'H',\n        \"\\u0124\": 'H',\n        \"\\u1E22\": 'H',\n        \"\\u1E26\": 'H',\n        \"\\u021E\": 'H',\n        \"\\u1E24\": 'H',\n        \"\\u1E28\": 'H',\n        \"\\u1E2A\": 'H',\n        \"\\u0126\": 'H',\n        \"\\u2C67\": 'H',\n        \"\\u2C75\": 'H',\n        \"\\uA78D\": 'H',\n        \"\\u24BE\": 'I',\n        \"\\uFF29\": 'I',\n        \"\\xCC\": 'I',\n        \"\\xCD\": 'I',\n        \"\\xCE\": 'I',\n        \"\\u0128\": 'I',\n        \"\\u012A\": 'I',\n        \"\\u012C\": 'I',\n        \"\\u0130\": 'I',\n        \"\\xCF\": 'I',\n        \"\\u1E2E\": 'I',\n        \"\\u1EC8\": 'I',\n        \"\\u01CF\": 'I',\n        \"\\u0208\": 'I',\n        \"\\u020A\": 'I',\n        \"\\u1ECA\": 'I',\n        \"\\u012E\": 'I',\n        \"\\u1E2C\": 'I',\n        \"\\u0197\": 'I',\n        \"\\u24BF\": 'J',\n        \"\\uFF2A\": 'J',\n        \"\\u0134\": 'J',\n        \"\\u0248\": 'J',\n        \"\\u24C0\": 'K',\n        \"\\uFF2B\": 'K',\n        \"\\u1E30\": 'K',\n        \"\\u01E8\": 'K',\n        \"\\u1E32\": 'K',\n        \"\\u0136\": 'K',\n        \"\\u1E34\": 'K',\n        \"\\u0198\": 'K',\n        \"\\u2C69\": 'K',\n        \"\\uA740\": 'K',\n        \"\\uA742\": 'K',\n        \"\\uA744\": 'K',\n        \"\\uA7A2\": 'K',\n        \"\\u24C1\": 'L',\n        \"\\uFF2C\": 'L',\n        \"\\u013F\": 'L',\n        \"\\u0139\": 'L',\n        \"\\u013D\": 'L',\n        \"\\u1E36\": 'L',\n        \"\\u1E38\": 'L',\n        \"\\u013B\": 'L',\n        \"\\u1E3C\": 'L',\n        \"\\u1E3A\": 'L',\n        \"\\u0141\": 'L',\n        \"\\u023D\": 'L',\n        \"\\u2C62\": 'L',\n        \"\\u2C60\": 'L',\n        \"\\uA748\": 'L',\n        \"\\uA746\": 'L',\n        \"\\uA780\": 'L',\n        \"\\u01C7\": 'LJ',\n        \"\\u01C8\": 'Lj',\n        \"\\u24C2\": 'M',\n        \"\\uFF2D\": 'M',\n        \"\\u1E3E\": 'M',\n        \"\\u1E40\": 'M',\n        \"\\u1E42\": 'M',\n        \"\\u2C6E\": 'M',\n        \"\\u019C\": 'M',\n        \"\\u24C3\": 'N',\n        \"\\uFF2E\": 'N',\n        \"\\u01F8\": 'N',\n        \"\\u0143\": 'N',\n        \"\\xD1\": 'N',\n        \"\\u1E44\": 'N',\n        \"\\u0147\": 'N',\n        \"\\u1E46\": 'N',\n        \"\\u0145\": 'N',\n        \"\\u1E4A\": 'N',\n        \"\\u1E48\": 'N',\n        \"\\u0220\": 'N',\n        \"\\u019D\": 'N',\n        \"\\uA790\": 'N',\n        \"\\uA7A4\": 'N',\n        \"\\u01CA\": 'NJ',\n        \"\\u01CB\": 'Nj',\n        \"\\u24C4\": 'O',\n        \"\\uFF2F\": 'O',\n        \"\\xD2\": 'O',\n        \"\\xD3\": 'O',\n        \"\\xD4\": 'O',\n        \"\\u1ED2\": 'O',\n        \"\\u1ED0\": 'O',\n        \"\\u1ED6\": 'O',\n        \"\\u1ED4\": 'O',\n        \"\\xD5\": 'O',\n        \"\\u1E4C\": 'O',\n        \"\\u022C\": 'O',\n        \"\\u1E4E\": 'O',\n        \"\\u014C\": 'O',\n        \"\\u1E50\": 'O',\n        \"\\u1E52\": 'O',\n        \"\\u014E\": 'O',\n        \"\\u022E\": 'O',\n        \"\\u0230\": 'O',\n        \"\\xD6\": 'O',\n        \"\\u022A\": 'O',\n        \"\\u1ECE\": 'O',\n        \"\\u0150\": 'O',\n        \"\\u01D1\": 'O',\n        \"\\u020C\": 'O',\n        \"\\u020E\": 'O',\n        \"\\u01A0\": 'O',\n        \"\\u1EDC\": 'O',\n        \"\\u1EDA\": 'O',\n        \"\\u1EE0\": 'O',\n        \"\\u1EDE\": 'O',\n        \"\\u1EE2\": 'O',\n        \"\\u1ECC\": 'O',\n        \"\\u1ED8\": 'O',\n        \"\\u01EA\": 'O',\n        \"\\u01EC\": 'O',\n        \"\\xD8\": 'O',\n        \"\\u01FE\": 'O',\n        \"\\u0186\": 'O',\n        \"\\u019F\": 'O',\n        \"\\uA74A\": 'O',\n        \"\\uA74C\": 'O',\n        \"\\u0152\": 'OE',\n        \"\\u01A2\": 'OI',\n        \"\\uA74E\": 'OO',\n        \"\\u0222\": 'OU',\n        \"\\u24C5\": 'P',\n        \"\\uFF30\": 'P',\n        \"\\u1E54\": 'P',\n        \"\\u1E56\": 'P',\n        \"\\u01A4\": 'P',\n        \"\\u2C63\": 'P',\n        \"\\uA750\": 'P',\n        \"\\uA752\": 'P',\n        \"\\uA754\": 'P',\n        \"\\u24C6\": 'Q',\n        \"\\uFF31\": 'Q',\n        \"\\uA756\": 'Q',\n        \"\\uA758\": 'Q',\n        \"\\u024A\": 'Q',\n        \"\\u24C7\": 'R',\n        \"\\uFF32\": 'R',\n        \"\\u0154\": 'R',\n        \"\\u1E58\": 'R',\n        \"\\u0158\": 'R',\n        \"\\u0210\": 'R',\n        \"\\u0212\": 'R',\n        \"\\u1E5A\": 'R',\n        \"\\u1E5C\": 'R',\n        \"\\u0156\": 'R',\n        \"\\u1E5E\": 'R',\n        \"\\u024C\": 'R',\n        \"\\u2C64\": 'R',\n        \"\\uA75A\": 'R',\n        \"\\uA7A6\": 'R',\n        \"\\uA782\": 'R',\n        \"\\u24C8\": 'S',\n        \"\\uFF33\": 'S',\n        \"\\u1E9E\": 'S',\n        \"\\u015A\": 'S',\n        \"\\u1E64\": 'S',\n        \"\\u015C\": 'S',\n        \"\\u1E60\": 'S',\n        \"\\u0160\": 'S',\n        \"\\u1E66\": 'S',\n        \"\\u1E62\": 'S',\n        \"\\u1E68\": 'S',\n        \"\\u0218\": 'S',\n        \"\\u015E\": 'S',\n        \"\\u2C7E\": 'S',\n        \"\\uA7A8\": 'S',\n        \"\\uA784\": 'S',\n        \"\\u24C9\": 'T',\n        \"\\uFF34\": 'T',\n        \"\\u1E6A\": 'T',\n        \"\\u0164\": 'T',\n        \"\\u1E6C\": 'T',\n        \"\\u021A\": 'T',\n        \"\\u0162\": 'T',\n        \"\\u1E70\": 'T',\n        \"\\u1E6E\": 'T',\n        \"\\u0166\": 'T',\n        \"\\u01AC\": 'T',\n        \"\\u01AE\": 'T',\n        \"\\u023E\": 'T',\n        \"\\uA786\": 'T',\n        \"\\uA728\": 'TZ',\n        \"\\u24CA\": 'U',\n        \"\\uFF35\": 'U',\n        \"\\xD9\": 'U',\n        \"\\xDA\": 'U',\n        \"\\xDB\": 'U',\n        \"\\u0168\": 'U',\n        \"\\u1E78\": 'U',\n        \"\\u016A\": 'U',\n        \"\\u1E7A\": 'U',\n        \"\\u016C\": 'U',\n        \"\\xDC\": 'U',\n        \"\\u01DB\": 'U',\n        \"\\u01D7\": 'U',\n        \"\\u01D5\": 'U',\n        \"\\u01D9\": 'U',\n        \"\\u1EE6\": 'U',\n        \"\\u016E\": 'U',\n        \"\\u0170\": 'U',\n        \"\\u01D3\": 'U',\n        \"\\u0214\": 'U',\n        \"\\u0216\": 'U',\n        \"\\u01AF\": 'U',\n        \"\\u1EEA\": 'U',\n        \"\\u1EE8\": 'U',\n        \"\\u1EEE\": 'U',\n        \"\\u1EEC\": 'U',\n        \"\\u1EF0\": 'U',\n        \"\\u1EE4\": 'U',\n        \"\\u1E72\": 'U',\n        \"\\u0172\": 'U',\n        \"\\u1E76\": 'U',\n        \"\\u1E74\": 'U',\n        \"\\u0244\": 'U',\n        \"\\u24CB\": 'V',\n        \"\\uFF36\": 'V',\n        \"\\u1E7C\": 'V',\n        \"\\u1E7E\": 'V',\n        \"\\u01B2\": 'V',\n        \"\\uA75E\": 'V',\n        \"\\u0245\": 'V',\n        \"\\uA760\": 'VY',\n        \"\\u24CC\": 'W',\n        \"\\uFF37\": 'W',\n        \"\\u1E80\": 'W',\n        \"\\u1E82\": 'W',\n        \"\\u0174\": 'W',\n        \"\\u1E86\": 'W',\n        \"\\u1E84\": 'W',\n        \"\\u1E88\": 'W',\n        \"\\u2C72\": 'W',\n        \"\\u24CD\": 'X',\n        \"\\uFF38\": 'X',\n        \"\\u1E8A\": 'X',\n        \"\\u1E8C\": 'X',\n        \"\\u24CE\": 'Y',\n        \"\\uFF39\": 'Y',\n        \"\\u1EF2\": 'Y',\n        \"\\xDD\": 'Y',\n        \"\\u0176\": 'Y',\n        \"\\u1EF8\": 'Y',\n        \"\\u0232\": 'Y',\n        \"\\u1E8E\": 'Y',\n        \"\\u0178\": 'Y',\n        \"\\u1EF6\": 'Y',\n        \"\\u1EF4\": 'Y',\n        \"\\u01B3\": 'Y',\n        \"\\u024E\": 'Y',\n        \"\\u1EFE\": 'Y',\n        \"\\u24CF\": 'Z',\n        \"\\uFF3A\": 'Z',\n        \"\\u0179\": 'Z',\n        \"\\u1E90\": 'Z',\n        \"\\u017B\": 'Z',\n        \"\\u017D\": 'Z',\n        \"\\u1E92\": 'Z',\n        \"\\u1E94\": 'Z',\n        \"\\u01B5\": 'Z',\n        \"\\u0224\": 'Z',\n        \"\\u2C7F\": 'Z',\n        \"\\u2C6B\": 'Z',\n        \"\\uA762\": 'Z',\n        \"\\u24D0\": 'a',\n        \"\\uFF41\": 'a',\n        \"\\u1E9A\": 'a',\n        \"\\xE0\": 'a',\n        \"\\xE1\": 'a',\n        \"\\xE2\": 'a',\n        \"\\u1EA7\": 'a',\n        \"\\u1EA5\": 'a',\n        \"\\u1EAB\": 'a',\n        \"\\u1EA9\": 'a',\n        \"\\xE3\": 'a',\n        \"\\u0101\": 'a',\n        \"\\u0103\": 'a',\n        \"\\u1EB1\": 'a',\n        \"\\u1EAF\": 'a',\n        \"\\u1EB5\": 'a',\n        \"\\u1EB3\": 'a',\n        \"\\u0227\": 'a',\n        \"\\u01E1\": 'a',\n        \"\\xE4\": 'a',\n        \"\\u01DF\": 'a',\n        \"\\u1EA3\": 'a',\n        \"\\xE5\": 'a',\n        \"\\u01FB\": 'a',\n        \"\\u01CE\": 'a',\n        \"\\u0201\": 'a',\n        \"\\u0203\": 'a',\n        \"\\u1EA1\": 'a',\n        \"\\u1EAD\": 'a',\n        \"\\u1EB7\": 'a',\n        \"\\u1E01\": 'a',\n        \"\\u0105\": 'a',\n        \"\\u2C65\": 'a',\n        \"\\u0250\": 'a',\n        \"\\uA733\": 'aa',\n        \"\\xE6\": 'ae',\n        \"\\u01FD\": 'ae',\n        \"\\u01E3\": 'ae',\n        \"\\uA735\": 'ao',\n        \"\\uA737\": 'au',\n        \"\\uA739\": 'av',\n        \"\\uA73B\": 'av',\n        \"\\uA73D\": 'ay',\n        \"\\u24D1\": 'b',\n        \"\\uFF42\": 'b',\n        \"\\u1E03\": 'b',\n        \"\\u1E05\": 'b',\n        \"\\u1E07\": 'b',\n        \"\\u0180\": 'b',\n        \"\\u0183\": 'b',\n        \"\\u0253\": 'b',\n        \"\\u24D2\": 'c',\n        \"\\uFF43\": 'c',\n        \"\\u0107\": 'c',\n        \"\\u0109\": 'c',\n        \"\\u010B\": 'c',\n        \"\\u010D\": 'c',\n        \"\\xE7\": 'c',\n        \"\\u1E09\": 'c',\n        \"\\u0188\": 'c',\n        \"\\u023C\": 'c',\n        \"\\uA73F\": 'c',\n        \"\\u2184\": 'c',\n        \"\\u24D3\": 'd',\n        \"\\uFF44\": 'd',\n        \"\\u1E0B\": 'd',\n        \"\\u010F\": 'd',\n        \"\\u1E0D\": 'd',\n        \"\\u1E11\": 'd',\n        \"\\u1E13\": 'd',\n        \"\\u1E0F\": 'd',\n        \"\\u0111\": 'd',\n        \"\\u018C\": 'd',\n        \"\\u0256\": 'd',\n        \"\\u0257\": 'd',\n        \"\\uA77A\": 'd',\n        \"\\u01F3\": 'dz',\n        \"\\u01C6\": 'dz',\n        \"\\u24D4\": 'e',\n        \"\\uFF45\": 'e',\n        \"\\xE8\": 'e',\n        \"\\xE9\": 'e',\n        \"\\xEA\": 'e',\n        \"\\u1EC1\": 'e',\n        \"\\u1EBF\": 'e',\n        \"\\u1EC5\": 'e',\n        \"\\u1EC3\": 'e',\n        \"\\u1EBD\": 'e',\n        \"\\u0113\": 'e',\n        \"\\u1E15\": 'e',\n        \"\\u1E17\": 'e',\n        \"\\u0115\": 'e',\n        \"\\u0117\": 'e',\n        \"\\xEB\": 'e',\n        \"\\u1EBB\": 'e',\n        \"\\u011B\": 'e',\n        \"\\u0205\": 'e',\n        \"\\u0207\": 'e',\n        \"\\u1EB9\": 'e',\n        \"\\u1EC7\": 'e',\n        \"\\u0229\": 'e',\n        \"\\u1E1D\": 'e',\n        \"\\u0119\": 'e',\n        \"\\u1E19\": 'e',\n        \"\\u1E1B\": 'e',\n        \"\\u0247\": 'e',\n        \"\\u025B\": 'e',\n        \"\\u01DD\": 'e',\n        \"\\u24D5\": 'f',\n        \"\\uFF46\": 'f',\n        \"\\u1E1F\": 'f',\n        \"\\u0192\": 'f',\n        \"\\uA77C\": 'f',\n        \"\\u24D6\": 'g',\n        \"\\uFF47\": 'g',\n        \"\\u01F5\": 'g',\n        \"\\u011D\": 'g',\n        \"\\u1E21\": 'g',\n        \"\\u011F\": 'g',\n        \"\\u0121\": 'g',\n        \"\\u01E7\": 'g',\n        \"\\u0123\": 'g',\n        \"\\u01E5\": 'g',\n        \"\\u0260\": 'g',\n        \"\\uA7A1\": 'g',\n        \"\\u1D79\": 'g',\n        \"\\uA77F\": 'g',\n        \"\\u24D7\": 'h',\n        \"\\uFF48\": 'h',\n        \"\\u0125\": 'h',\n        \"\\u1E23\": 'h',\n        \"\\u1E27\": 'h',\n        \"\\u021F\": 'h',\n        \"\\u1E25\": 'h',\n        \"\\u1E29\": 'h',\n        \"\\u1E2B\": 'h',\n        \"\\u1E96\": 'h',\n        \"\\u0127\": 'h',\n        \"\\u2C68\": 'h',\n        \"\\u2C76\": 'h',\n        \"\\u0265\": 'h',\n        \"\\u0195\": 'hv',\n        \"\\u24D8\": 'i',\n        \"\\uFF49\": 'i',\n        \"\\xEC\": 'i',\n        \"\\xED\": 'i',\n        \"\\xEE\": 'i',\n        \"\\u0129\": 'i',\n        \"\\u012B\": 'i',\n        \"\\u012D\": 'i',\n        \"\\xEF\": 'i',\n        \"\\u1E2F\": 'i',\n        \"\\u1EC9\": 'i',\n        \"\\u01D0\": 'i',\n        \"\\u0209\": 'i',\n        \"\\u020B\": 'i',\n        \"\\u1ECB\": 'i',\n        \"\\u012F\": 'i',\n        \"\\u1E2D\": 'i',\n        \"\\u0268\": 'i',\n        \"\\u0131\": 'i',\n        \"\\u24D9\": 'j',\n        \"\\uFF4A\": 'j',\n        \"\\u0135\": 'j',\n        \"\\u01F0\": 'j',\n        \"\\u0249\": 'j',\n        \"\\u24DA\": 'k',\n        \"\\uFF4B\": 'k',\n        \"\\u1E31\": 'k',\n        \"\\u01E9\": 'k',\n        \"\\u1E33\": 'k',\n        \"\\u0137\": 'k',\n        \"\\u1E35\": 'k',\n        \"\\u0199\": 'k',\n        \"\\u2C6A\": 'k',\n        \"\\uA741\": 'k',\n        \"\\uA743\": 'k',\n        \"\\uA745\": 'k',\n        \"\\uA7A3\": 'k',\n        \"\\u24DB\": 'l',\n        \"\\uFF4C\": 'l',\n        \"\\u0140\": 'l',\n        \"\\u013A\": 'l',\n        \"\\u013E\": 'l',\n        \"\\u1E37\": 'l',\n        \"\\u1E39\": 'l',\n        \"\\u013C\": 'l',\n        \"\\u1E3D\": 'l',\n        \"\\u1E3B\": 'l',\n        \"\\u017F\": 'l',\n        \"\\u0142\": 'l',\n        \"\\u019A\": 'l',\n        \"\\u026B\": 'l',\n        \"\\u2C61\": 'l',\n        \"\\uA749\": 'l',\n        \"\\uA781\": 'l',\n        \"\\uA747\": 'l',\n        \"\\u01C9\": 'lj',\n        \"\\u24DC\": 'm',\n        \"\\uFF4D\": 'm',\n        \"\\u1E3F\": 'm',\n        \"\\u1E41\": 'm',\n        \"\\u1E43\": 'm',\n        \"\\u0271\": 'm',\n        \"\\u026F\": 'm',\n        \"\\u24DD\": 'n',\n        \"\\uFF4E\": 'n',\n        \"\\u01F9\": 'n',\n        \"\\u0144\": 'n',\n        \"\\xF1\": 'n',\n        \"\\u1E45\": 'n',\n        \"\\u0148\": 'n',\n        \"\\u1E47\": 'n',\n        \"\\u0146\": 'n',\n        \"\\u1E4B\": 'n',\n        \"\\u1E49\": 'n',\n        \"\\u019E\": 'n',\n        \"\\u0272\": 'n',\n        \"\\u0149\": 'n',\n        \"\\uA791\": 'n',\n        \"\\uA7A5\": 'n',\n        \"\\u01CC\": 'nj',\n        \"\\u24DE\": 'o',\n        \"\\uFF4F\": 'o',\n        \"\\xF2\": 'o',\n        \"\\xF3\": 'o',\n        \"\\xF4\": 'o',\n        \"\\u1ED3\": 'o',\n        \"\\u1ED1\": 'o',\n        \"\\u1ED7\": 'o',\n        \"\\u1ED5\": 'o',\n        \"\\xF5\": 'o',\n        \"\\u1E4D\": 'o',\n        \"\\u022D\": 'o',\n        \"\\u1E4F\": 'o',\n        \"\\u014D\": 'o',\n        \"\\u1E51\": 'o',\n        \"\\u1E53\": 'o',\n        \"\\u014F\": 'o',\n        \"\\u022F\": 'o',\n        \"\\u0231\": 'o',\n        \"\\xF6\": 'o',\n        \"\\u022B\": 'o',\n        \"\\u1ECF\": 'o',\n        \"\\u0151\": 'o',\n        \"\\u01D2\": 'o',\n        \"\\u020D\": 'o',\n        \"\\u020F\": 'o',\n        \"\\u01A1\": 'o',\n        \"\\u1EDD\": 'o',\n        \"\\u1EDB\": 'o',\n        \"\\u1EE1\": 'o',\n        \"\\u1EDF\": 'o',\n        \"\\u1EE3\": 'o',\n        \"\\u1ECD\": 'o',\n        \"\\u1ED9\": 'o',\n        \"\\u01EB\": 'o',\n        \"\\u01ED\": 'o',\n        \"\\xF8\": 'o',\n        \"\\u01FF\": 'o',\n        \"\\u0254\": 'o',\n        \"\\uA74B\": 'o',\n        \"\\uA74D\": 'o',\n        \"\\u0275\": 'o',\n        \"\\u0153\": 'oe',\n        \"\\u01A3\": 'oi',\n        \"\\u0223\": 'ou',\n        \"\\uA74F\": 'oo',\n        \"\\u24DF\": 'p',\n        \"\\uFF50\": 'p',\n        \"\\u1E55\": 'p',\n        \"\\u1E57\": 'p',\n        \"\\u01A5\": 'p',\n        \"\\u1D7D\": 'p',\n        \"\\uA751\": 'p',\n        \"\\uA753\": 'p',\n        \"\\uA755\": 'p',\n        \"\\u24E0\": 'q',\n        \"\\uFF51\": 'q',\n        \"\\u024B\": 'q',\n        \"\\uA757\": 'q',\n        \"\\uA759\": 'q',\n        \"\\u24E1\": 'r',\n        \"\\uFF52\": 'r',\n        \"\\u0155\": 'r',\n        \"\\u1E59\": 'r',\n        \"\\u0159\": 'r',\n        \"\\u0211\": 'r',\n        \"\\u0213\": 'r',\n        \"\\u1E5B\": 'r',\n        \"\\u1E5D\": 'r',\n        \"\\u0157\": 'r',\n        \"\\u1E5F\": 'r',\n        \"\\u024D\": 'r',\n        \"\\u027D\": 'r',\n        \"\\uA75B\": 'r',\n        \"\\uA7A7\": 'r',\n        \"\\uA783\": 'r',\n        \"\\u24E2\": 's',\n        \"\\uFF53\": 's',\n        \"\\xDF\": 's',\n        \"\\u015B\": 's',\n        \"\\u1E65\": 's',\n        \"\\u015D\": 's',\n        \"\\u1E61\": 's',\n        \"\\u0161\": 's',\n        \"\\u1E67\": 's',\n        \"\\u1E63\": 's',\n        \"\\u1E69\": 's',\n        \"\\u0219\": 's',\n        \"\\u015F\": 's',\n        \"\\u023F\": 's',\n        \"\\uA7A9\": 's',\n        \"\\uA785\": 's',\n        \"\\u1E9B\": 's',\n        \"\\u24E3\": 't',\n        \"\\uFF54\": 't',\n        \"\\u1E6B\": 't',\n        \"\\u1E97\": 't',\n        \"\\u0165\": 't',\n        \"\\u1E6D\": 't',\n        \"\\u021B\": 't',\n        \"\\u0163\": 't',\n        \"\\u1E71\": 't',\n        \"\\u1E6F\": 't',\n        \"\\u0167\": 't',\n        \"\\u01AD\": 't',\n        \"\\u0288\": 't',\n        \"\\u2C66\": 't',\n        \"\\uA787\": 't',\n        \"\\uA729\": 'tz',\n        \"\\u24E4\": 'u',\n        \"\\uFF55\": 'u',\n        \"\\xF9\": 'u',\n        \"\\xFA\": 'u',\n        \"\\xFB\": 'u',\n        \"\\u0169\": 'u',\n        \"\\u1E79\": 'u',\n        \"\\u016B\": 'u',\n        \"\\u1E7B\": 'u',\n        \"\\u016D\": 'u',\n        \"\\xFC\": 'u',\n        \"\\u01DC\": 'u',\n        \"\\u01D8\": 'u',\n        \"\\u01D6\": 'u',\n        \"\\u01DA\": 'u',\n        \"\\u1EE7\": 'u',\n        \"\\u016F\": 'u',\n        \"\\u0171\": 'u',\n        \"\\u01D4\": 'u',\n        \"\\u0215\": 'u',\n        \"\\u0217\": 'u',\n        \"\\u01B0\": 'u',\n        \"\\u1EEB\": 'u',\n        \"\\u1EE9\": 'u',\n        \"\\u1EEF\": 'u',\n        \"\\u1EED\": 'u',\n        \"\\u1EF1\": 'u',\n        \"\\u1EE5\": 'u',\n        \"\\u1E73\": 'u',\n        \"\\u0173\": 'u',\n        \"\\u1E77\": 'u',\n        \"\\u1E75\": 'u',\n        \"\\u0289\": 'u',\n        \"\\u24E5\": 'v',\n        \"\\uFF56\": 'v',\n        \"\\u1E7D\": 'v',\n        \"\\u1E7F\": 'v',\n        \"\\u028B\": 'v',\n        \"\\uA75F\": 'v',\n        \"\\u028C\": 'v',\n        \"\\uA761\": 'vy',\n        \"\\u24E6\": 'w',\n        \"\\uFF57\": 'w',\n        \"\\u1E81\": 'w',\n        \"\\u1E83\": 'w',\n        \"\\u0175\": 'w',\n        \"\\u1E87\": 'w',\n        \"\\u1E85\": 'w',\n        \"\\u1E98\": 'w',\n        \"\\u1E89\": 'w',\n        \"\\u2C73\": 'w',\n        \"\\u24E7\": 'x',\n        \"\\uFF58\": 'x',\n        \"\\u1E8B\": 'x',\n        \"\\u1E8D\": 'x',\n        \"\\u24E8\": 'y',\n        \"\\uFF59\": 'y',\n        \"\\u1EF3\": 'y',\n        \"\\xFD\": 'y',\n        \"\\u0177\": 'y',\n        \"\\u1EF9\": 'y',\n        \"\\u0233\": 'y',\n        \"\\u1E8F\": 'y',\n        \"\\xFF\": 'y',\n        \"\\u1EF7\": 'y',\n        \"\\u1E99\": 'y',\n        \"\\u1EF5\": 'y',\n        \"\\u01B4\": 'y',\n        \"\\u024F\": 'y',\n        \"\\u1EFF\": 'y',\n        \"\\u24E9\": 'z',\n        \"\\uFF5A\": 'z',\n        \"\\u017A\": 'z',\n        \"\\u1E91\": 'z',\n        \"\\u017C\": 'z',\n        \"\\u017E\": 'z',\n        \"\\u1E93\": 'z',\n        \"\\u1E95\": 'z',\n        \"\\u01B6\": 'z',\n        \"\\u0225\": 'z',\n        \"\\u0240\": 'z',\n        \"\\u2C6C\": 'z',\n        \"\\uA763\": 'z',\n        \"\\u0386\": \"\\u0391\",\n        \"\\u0388\": \"\\u0395\",\n        \"\\u0389\": \"\\u0397\",\n        \"\\u038A\": \"\\u0399\",\n        \"\\u03AA\": \"\\u0399\",\n        \"\\u038C\": \"\\u039F\",\n        \"\\u038E\": \"\\u03A5\",\n        \"\\u03AB\": \"\\u03A5\",\n        \"\\u038F\": \"\\u03A9\",\n        \"\\u03AC\": \"\\u03B1\",\n        \"\\u03AD\": \"\\u03B5\",\n        \"\\u03AE\": \"\\u03B7\",\n        \"\\u03AF\": \"\\u03B9\",\n        \"\\u03CA\": \"\\u03B9\",\n        \"\\u0390\": \"\\u03B9\",\n        \"\\u03CC\": \"\\u03BF\",\n        \"\\u03CD\": \"\\u03C5\",\n        \"\\u03CB\": \"\\u03C5\",\n        \"\\u03B0\": \"\\u03C5\",\n        \"\\u03CE\": \"\\u03C9\",\n        \"\\u03C2\": \"\\u03C3\",\n        \"\\u2019\": '\\''\n      };\n      return diacritics;\n    });\n    S2.define('select2/data/base', ['../utils'], function (Utils) {\n      function BaseAdapter($element, options) {\n        BaseAdapter.__super__.constructor.call(this);\n      }\n\n      Utils.Extend(BaseAdapter, Utils.Observable);\n\n      BaseAdapter.prototype.current = function (callback) {\n        throw new Error('The `current` method must be defined in child classes.');\n      };\n\n      BaseAdapter.prototype.query = function (params, callback) {\n        throw new Error('The `query` method must be defined in child classes.');\n      };\n\n      BaseAdapter.prototype.bind = function (container, $container) {// Can be implemented in subclasses\n      };\n\n      BaseAdapter.prototype.destroy = function () {// Can be implemented in subclasses\n      };\n\n      BaseAdapter.prototype.generateResultId = function (container, data) {\n        var id = container.id + '-result-';\n        id += Utils.generateChars(4);\n\n        if (data.id != null) {\n          id += '-' + data.id.toString();\n        } else {\n          id += '-' + Utils.generateChars(4);\n        }\n\n        return id;\n      };\n\n      return BaseAdapter;\n    });\n    S2.define('select2/data/select', ['./base', '../utils', 'jquery'], function (BaseAdapter, Utils, $) {\n      function SelectAdapter($element, options) {\n        this.$element = $element;\n        this.options = options;\n\n        SelectAdapter.__super__.constructor.call(this);\n      }\n\n      Utils.Extend(SelectAdapter, BaseAdapter);\n\n      SelectAdapter.prototype.current = function (callback) {\n        var self = this;\n        var data = Array.prototype.map.call(this.$element[0].querySelectorAll(':checked'), function (selectedElement) {\n          return self.item($(selectedElement));\n        });\n        callback(data);\n      };\n\n      SelectAdapter.prototype.select = function (data) {\n        var self = this;\n        data.selected = true; // If data.element is a DOM node, use it instead\n\n        if (data.element != null && data.element.tagName.toLowerCase() === 'option') {\n          data.element.selected = true;\n          this.$element.trigger('input').trigger('change');\n          return;\n        }\n\n        if (this.$element.prop('multiple')) {\n          this.current(function (currentData) {\n            var val = [];\n            data = [data];\n            data.push.apply(data, currentData);\n\n            for (var d = 0; d < data.length; d++) {\n              var id = data[d].id;\n\n              if (val.indexOf(id) === -1) {\n                val.push(id);\n              }\n            }\n\n            self.$element.val(val);\n            self.$element.trigger('input').trigger('change');\n          });\n        } else {\n          var val = data.id;\n          this.$element.val(val);\n          this.$element.trigger('input').trigger('change');\n        }\n      };\n\n      SelectAdapter.prototype.unselect = function (data) {\n        var self = this;\n\n        if (!this.$element.prop('multiple')) {\n          return;\n        }\n\n        data.selected = false;\n\n        if (data.element != null && data.element.tagName.toLowerCase() === 'option') {\n          data.element.selected = false;\n          this.$element.trigger('input').trigger('change');\n          return;\n        }\n\n        this.current(function (currentData) {\n          var val = [];\n\n          for (var d = 0; d < currentData.length; d++) {\n            var id = currentData[d].id;\n\n            if (id !== data.id && val.indexOf(id) === -1) {\n              val.push(id);\n            }\n          }\n\n          self.$element.val(val);\n          self.$element.trigger('input').trigger('change');\n        });\n      };\n\n      SelectAdapter.prototype.bind = function (container, $container) {\n        var self = this;\n        this.container = container;\n        container.on('select', function (params) {\n          self.select(params.data);\n        });\n        container.on('unselect', function (params) {\n          self.unselect(params.data);\n        });\n      };\n\n      SelectAdapter.prototype.destroy = function () {\n        // Remove anything added to child elements\n        this.$element.find('*').each(function () {\n          // Remove any custom data set by Select2\n          Utils.RemoveData(this);\n        });\n      };\n\n      SelectAdapter.prototype.query = function (params, callback) {\n        var data = [];\n        var self = this;\n        var $options = this.$element.children();\n        $options.each(function () {\n          if (this.tagName.toLowerCase() !== 'option' && this.tagName.toLowerCase() !== 'optgroup') {\n            return;\n          }\n\n          var $option = $(this);\n          var option = self.item($option);\n          var matches = self.matches(params, option);\n\n          if (matches !== null) {\n            data.push(matches);\n          }\n        });\n        callback({\n          results: data\n        });\n      };\n\n      SelectAdapter.prototype.addOptions = function ($options) {\n        this.$element.append($options);\n      };\n\n      SelectAdapter.prototype.option = function (data) {\n        var option;\n\n        if (data.children) {\n          option = document.createElement('optgroup');\n          option.label = data.text;\n        } else {\n          option = document.createElement('option');\n\n          if (option.textContent !== undefined) {\n            option.textContent = data.text;\n          } else {\n            option.innerText = data.text;\n          }\n        }\n\n        if (data.id !== undefined) {\n          option.value = data.id;\n        }\n\n        if (data.disabled) {\n          option.disabled = true;\n        }\n\n        if (data.selected) {\n          option.selected = true;\n        }\n\n        if (data.title) {\n          option.title = data.title;\n        }\n\n        var normalizedData = this._normalizeItem(data);\n\n        normalizedData.element = option; // Override the option's data with the combined data\n\n        Utils.StoreData(option, 'data', normalizedData);\n        return $(option);\n      };\n\n      SelectAdapter.prototype.item = function ($option) {\n        var data = {};\n        data = Utils.GetData($option[0], 'data');\n\n        if (data != null) {\n          return data;\n        }\n\n        var option = $option[0];\n\n        if (option.tagName.toLowerCase() === 'option') {\n          data = {\n            id: $option.val(),\n            text: $option.text(),\n            disabled: $option.prop('disabled'),\n            selected: $option.prop('selected'),\n            title: $option.prop('title')\n          };\n        } else if (option.tagName.toLowerCase() === 'optgroup') {\n          data = {\n            text: $option.prop('label'),\n            children: [],\n            title: $option.prop('title')\n          };\n          var $children = $option.children('option');\n          var children = [];\n\n          for (var c = 0; c < $children.length; c++) {\n            var $child = $($children[c]);\n            var child = this.item($child);\n            children.push(child);\n          }\n\n          data.children = children;\n        }\n\n        data = this._normalizeItem(data);\n        data.element = $option[0];\n        Utils.StoreData($option[0], 'data', data);\n        return data;\n      };\n\n      SelectAdapter.prototype._normalizeItem = function (item) {\n        if (item !== Object(item)) {\n          item = {\n            id: item,\n            text: item\n          };\n        }\n\n        item = $.extend({}, {\n          text: ''\n        }, item);\n        var defaults = {\n          selected: false,\n          disabled: false\n        };\n\n        if (item.id != null) {\n          item.id = item.id.toString();\n        }\n\n        if (item.text != null) {\n          item.text = item.text.toString();\n        }\n\n        if (item._resultId == null && item.id && this.container != null) {\n          item._resultId = this.generateResultId(this.container, item);\n        }\n\n        return $.extend({}, defaults, item);\n      };\n\n      SelectAdapter.prototype.matches = function (params, data) {\n        var matcher = this.options.get('matcher');\n        return matcher(params, data);\n      };\n\n      return SelectAdapter;\n    });\n    S2.define('select2/data/array', ['./select', '../utils', 'jquery'], function (SelectAdapter, Utils, $) {\n      function ArrayAdapter($element, options) {\n        this._dataToConvert = options.get('data') || [];\n\n        ArrayAdapter.__super__.constructor.call(this, $element, options);\n      }\n\n      Utils.Extend(ArrayAdapter, SelectAdapter);\n\n      ArrayAdapter.prototype.bind = function (container, $container) {\n        ArrayAdapter.__super__.bind.call(this, container, $container);\n\n        this.addOptions(this.convertToOptions(this._dataToConvert));\n      };\n\n      ArrayAdapter.prototype.select = function (data) {\n        var $option = this.$element.find('option').filter(function (i, elm) {\n          return elm.value == data.id.toString();\n        });\n\n        if ($option.length === 0) {\n          $option = this.option(data);\n          this.addOptions($option);\n        }\n\n        ArrayAdapter.__super__.select.call(this, data);\n      };\n\n      ArrayAdapter.prototype.convertToOptions = function (data) {\n        var self = this;\n        var $existing = this.$element.find('option');\n        var existingIds = $existing.map(function () {\n          return self.item($(this)).id;\n        }).get();\n        var $options = []; // Filter out all items except for the one passed in the argument\n\n        function onlyItem(item) {\n          return function () {\n            return $(this).val() == item.id;\n          };\n        }\n\n        for (var d = 0; d < data.length; d++) {\n          var item = this._normalizeItem(data[d]); // Skip items which were pre-loaded, only merge the data\n\n\n          if (existingIds.indexOf(item.id) >= 0) {\n            var $existingOption = $existing.filter(onlyItem(item));\n            var existingData = this.item($existingOption);\n            var newData = $.extend(true, {}, item, existingData);\n            var $newOption = this.option(newData);\n            $existingOption.replaceWith($newOption);\n            continue;\n          }\n\n          var $option = this.option(item);\n\n          if (item.children) {\n            var $children = this.convertToOptions(item.children);\n            $option.append($children);\n          }\n\n          $options.push($option);\n        }\n\n        return $options;\n      };\n\n      return ArrayAdapter;\n    });\n    S2.define('select2/data/ajax', ['./array', '../utils', 'jquery'], function (ArrayAdapter, Utils, $) {\n      function AjaxAdapter($element, options) {\n        this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n\n        if (this.ajaxOptions.processResults != null) {\n          this.processResults = this.ajaxOptions.processResults;\n        }\n\n        AjaxAdapter.__super__.constructor.call(this, $element, options);\n      }\n\n      Utils.Extend(AjaxAdapter, ArrayAdapter);\n\n      AjaxAdapter.prototype._applyDefaults = function (options) {\n        var defaults = {\n          data: function data(params) {\n            return $.extend({}, params, {\n              q: params.term\n            });\n          },\n          transport: function transport(params, success, failure) {\n            var $request = $.ajax(params);\n            $request.then(success);\n            $request.fail(failure);\n            return $request;\n          }\n        };\n        return $.extend({}, defaults, options, true);\n      };\n\n      AjaxAdapter.prototype.processResults = function (results) {\n        return results;\n      };\n\n      AjaxAdapter.prototype.query = function (params, callback) {\n        var matches = [];\n        var self = this;\n\n        if (this._request != null) {\n          // JSONP requests cannot always be aborted\n          if (typeof this._request.abort === 'function') {\n            this._request.abort();\n          }\n\n          this._request = null;\n        }\n\n        var options = $.extend({\n          type: 'GET'\n        }, this.ajaxOptions);\n\n        if (typeof options.url === 'function') {\n          options.url = options.url.call(this.$element, params);\n        }\n\n        if (typeof options.data === 'function') {\n          options.data = options.data.call(this.$element, params);\n        }\n\n        function request() {\n          var $request = options.transport(options, function (data) {\n            var results = self.processResults(data, params);\n\n            if (self.options.get('debug') && window.console && console.error) {\n              // Check to make sure that the response included a `results` key.\n              if (!results || !results.results || !Array.isArray(results.results)) {\n                console.error('Select2: The AJAX results did not return an array in the ' + '`results` key of the response.');\n              }\n            }\n\n            callback(results);\n          }, function () {\n            // Attempt to detect if a request was aborted\n            // Only works if the transport exposes a status property\n            if ('status' in $request && ($request.status === 0 || $request.status === '0')) {\n              return;\n            }\n\n            self.trigger('results:message', {\n              message: 'errorLoading'\n            });\n          });\n          self._request = $request;\n        }\n\n        if (this.ajaxOptions.delay && params.term != null) {\n          if (this._queryTimeout) {\n            window.clearTimeout(this._queryTimeout);\n          }\n\n          this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n        } else {\n          request();\n        }\n      };\n\n      return AjaxAdapter;\n    });\n    S2.define('select2/data/tags', ['jquery'], function ($) {\n      function Tags(decorated, $element, options) {\n        var tags = options.get('tags');\n        var createTag = options.get('createTag');\n\n        if (createTag !== undefined) {\n          this.createTag = createTag;\n        }\n\n        var insertTag = options.get('insertTag');\n\n        if (insertTag !== undefined) {\n          this.insertTag = insertTag;\n        }\n\n        decorated.call(this, $element, options);\n\n        if (Array.isArray(tags)) {\n          for (var t = 0; t < tags.length; t++) {\n            var tag = tags[t];\n\n            var item = this._normalizeItem(tag);\n\n            var $option = this.option(item);\n            this.$element.append($option);\n          }\n        }\n      }\n\n      Tags.prototype.query = function (decorated, params, callback) {\n        var self = this;\n\n        this._removeOldTags();\n\n        if (params.term == null || params.page != null) {\n          decorated.call(this, params, callback);\n          return;\n        }\n\n        function wrapper(obj, child) {\n          var data = obj.results;\n\n          for (var i = 0; i < data.length; i++) {\n            var option = data[i];\n            var checkChildren = option.children != null && !wrapper({\n              results: option.children\n            }, true);\n            var optionText = (option.text || '').toUpperCase();\n            var paramsTerm = (params.term || '').toUpperCase();\n            var checkText = optionText === paramsTerm;\n\n            if (checkText || checkChildren) {\n              if (child) {\n                return false;\n              }\n\n              obj.data = data;\n              callback(obj);\n              return;\n            }\n          }\n\n          if (child) {\n            return true;\n          }\n\n          var tag = self.createTag(params);\n\n          if (tag != null) {\n            var $option = self.option(tag);\n            $option.attr('data-select2-tag', 'true');\n            self.addOptions([$option]);\n            self.insertTag(data, tag);\n          }\n\n          obj.results = data;\n          callback(obj);\n        }\n\n        decorated.call(this, params, wrapper);\n      };\n\n      Tags.prototype.createTag = function (decorated, params) {\n        if (params.term == null) {\n          return null;\n        }\n\n        var term = params.term.trim();\n\n        if (term === '') {\n          return null;\n        }\n\n        return {\n          id: term,\n          text: term\n        };\n      };\n\n      Tags.prototype.insertTag = function (_, data, tag) {\n        data.unshift(tag);\n      };\n\n      Tags.prototype._removeOldTags = function (_) {\n        var $options = this.$element.find('option[data-select2-tag]');\n        $options.each(function () {\n          if (this.selected) {\n            return;\n          }\n\n          $(this).remove();\n        });\n      };\n\n      return Tags;\n    });\n    S2.define('select2/data/tokenizer', ['jquery'], function ($) {\n      function Tokenizer(decorated, $element, options) {\n        var tokenizer = options.get('tokenizer');\n\n        if (tokenizer !== undefined) {\n          this.tokenizer = tokenizer;\n        }\n\n        decorated.call(this, $element, options);\n      }\n\n      Tokenizer.prototype.bind = function (decorated, container, $container) {\n        decorated.call(this, container, $container);\n        this.$search = container.dropdown.$search || container.selection.$search || $container.find('.select2-search__field');\n      };\n\n      Tokenizer.prototype.query = function (decorated, params, callback) {\n        var self = this;\n\n        function createAndSelect(data) {\n          // Normalize the data object so we can use it for checks\n          var item = self._normalizeItem(data); // Check if the data object already exists as a tag\n          // Select it if it doesn't\n\n\n          var $existingOptions = self.$element.find('option').filter(function () {\n            return $(this).val() === item.id;\n          }); // If an existing option wasn't found for it, create the option\n\n          if (!$existingOptions.length) {\n            var $option = self.option(item);\n            $option.attr('data-select2-tag', true);\n\n            self._removeOldTags();\n\n            self.addOptions([$option]);\n          } // Select the item, now that we know there is an option for it\n\n\n          select(item);\n        }\n\n        function select(data) {\n          self.trigger('select', {\n            data: data\n          });\n        }\n\n        params.term = params.term || '';\n        var tokenData = this.tokenizer(params, this.options, createAndSelect);\n\n        if (tokenData.term !== params.term) {\n          // Replace the search term if we have the search box\n          if (this.$search.length) {\n            this.$search.val(tokenData.term);\n            this.$search.trigger('focus');\n          }\n\n          params.term = tokenData.term;\n        }\n\n        decorated.call(this, params, callback);\n      };\n\n      Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n        var separators = options.get('tokenSeparators') || [];\n        var term = params.term;\n        var i = 0;\n\n        var createTag = this.createTag || function (params) {\n          return {\n            id: params.term,\n            text: params.term\n          };\n        };\n\n        while (i < term.length) {\n          var termChar = term[i];\n\n          if (separators.indexOf(termChar) === -1) {\n            i++;\n            continue;\n          }\n\n          var part = term.substr(0, i);\n          var partParams = $.extend({}, params, {\n            term: part\n          });\n          var data = createTag(partParams);\n\n          if (data == null) {\n            i++;\n            continue;\n          }\n\n          callback(data); // Reset the term to not include the tokenized portion\n\n          term = term.substr(i + 1) || '';\n          i = 0;\n        }\n\n        return {\n          term: term\n        };\n      };\n\n      return Tokenizer;\n    });\n    S2.define('select2/data/minimumInputLength', [], function () {\n      function MinimumInputLength(decorated, $e, options) {\n        this.minimumInputLength = options.get('minimumInputLength');\n        decorated.call(this, $e, options);\n      }\n\n      MinimumInputLength.prototype.query = function (decorated, params, callback) {\n        params.term = params.term || '';\n\n        if (params.term.length < this.minimumInputLength) {\n          this.trigger('results:message', {\n            message: 'inputTooShort',\n            args: {\n              minimum: this.minimumInputLength,\n              input: params.term,\n              params: params\n            }\n          });\n          return;\n        }\n\n        decorated.call(this, params, callback);\n      };\n\n      return MinimumInputLength;\n    });\n    S2.define('select2/data/maximumInputLength', [], function () {\n      function MaximumInputLength(decorated, $e, options) {\n        this.maximumInputLength = options.get('maximumInputLength');\n        decorated.call(this, $e, options);\n      }\n\n      MaximumInputLength.prototype.query = function (decorated, params, callback) {\n        params.term = params.term || '';\n\n        if (this.maximumInputLength > 0 && params.term.length > this.maximumInputLength) {\n          this.trigger('results:message', {\n            message: 'inputTooLong',\n            args: {\n              maximum: this.maximumInputLength,\n              input: params.term,\n              params: params\n            }\n          });\n          return;\n        }\n\n        decorated.call(this, params, callback);\n      };\n\n      return MaximumInputLength;\n    });\n    S2.define('select2/data/maximumSelectionLength', [], function () {\n      function MaximumSelectionLength(decorated, $e, options) {\n        this.maximumSelectionLength = options.get('maximumSelectionLength');\n        decorated.call(this, $e, options);\n      }\n\n      MaximumSelectionLength.prototype.bind = function (decorated, container, $container) {\n        var self = this;\n        decorated.call(this, container, $container);\n        container.on('select', function () {\n          self._checkIfMaximumSelected();\n        });\n      };\n\n      MaximumSelectionLength.prototype.query = function (decorated, params, callback) {\n        var self = this;\n\n        this._checkIfMaximumSelected(function () {\n          decorated.call(self, params, callback);\n        });\n      };\n\n      MaximumSelectionLength.prototype._checkIfMaximumSelected = function (_, successCallback) {\n        var self = this;\n        this.current(function (currentData) {\n          var count = currentData != null ? currentData.length : 0;\n\n          if (self.maximumSelectionLength > 0 && count >= self.maximumSelectionLength) {\n            self.trigger('results:message', {\n              message: 'maximumSelected',\n              args: {\n                maximum: self.maximumSelectionLength\n              }\n            });\n            return;\n          }\n\n          if (successCallback) {\n            successCallback();\n          }\n        });\n      };\n\n      return MaximumSelectionLength;\n    });\n    S2.define('select2/dropdown', ['jquery', './utils'], function ($, Utils) {\n      function Dropdown($element, options) {\n        this.$element = $element;\n        this.options = options;\n\n        Dropdown.__super__.constructor.call(this);\n      }\n\n      Utils.Extend(Dropdown, Utils.Observable);\n\n      Dropdown.prototype.render = function () {\n        // Change dropdown classname and markup. @edited\n        var $dropdown = $('<span class=\"sui-select-dropdown\">' + '<span class=\"select2-results\"></span>' + '</span>');\n        $dropdown.attr('dir', this.options.get('dir'));\n        this.$dropdown = $dropdown;\n        return $dropdown;\n      };\n\n      Dropdown.prototype.bind = function () {// Should be implemented in subclasses\n      };\n\n      Dropdown.prototype.position = function ($dropdown, $container) {// Should be implemented in subclasses\n      };\n\n      Dropdown.prototype.destroy = function () {\n        // Remove the dropdown from the DOM\n        this.$dropdown.remove();\n      };\n\n      return Dropdown;\n    });\n    S2.define('select2/dropdown/search', ['jquery'], function ($) {\n      function Search() {}\n\n      Search.prototype.render = function (decorated) {\n        var $rendered = decorated.call(this);\n        var searchLabel = this.options.get('translations').get('search');\n        var $search = $('<span class=\"select2-search select2-search--dropdown\">' + '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' + ' autocorrect=\"off\" autocapitalize=\"none\"' + ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" />' + '</span>');\n        this.$searchContainer = $search;\n        this.$search = $search.find('input');\n        this.$search.prop('autocomplete', this.options.get('autocomplete'));\n        this.$search.attr('aria-label', searchLabel());\n        $rendered.prepend($search);\n        return $rendered;\n      };\n\n      Search.prototype.bind = function (decorated, container, $container) {\n        var self = this;\n        var resultsId = container.id + '-results';\n        decorated.call(this, container, $container);\n        this.$search.on('keydown', function (evt) {\n          self.trigger('keypress', evt);\n          self._keyUpPrevented = evt.isDefaultPrevented();\n        }); // Workaround for browsers which do not support the `input` event\n        // This will prevent double-triggering of events for browsers which support\n        // both the `keyup` and `input` events.\n\n        this.$search.on('input', function (evt) {\n          // Unbind the duplicated `keyup` event\n          $(this).off('keyup');\n        });\n        this.$search.on('keyup input', function (evt) {\n          self.handleSearch(evt);\n        });\n        container.on('open', function () {\n          self.$search.attr('tabindex', 0);\n          self.$search.attr('aria-controls', resultsId);\n          self.$search.trigger('focus');\n          window.setTimeout(function () {\n            self.$search.trigger('focus');\n          }, 0);\n        });\n        container.on('close', function () {\n          self.$search.attr('tabindex', -1);\n          self.$search.removeAttr('aria-controls');\n          self.$search.removeAttr('aria-activedescendant');\n          self.$search.val('');\n          self.$search.trigger('blur');\n        });\n        container.on('focus', function () {\n          if (!container.isOpen()) {\n            self.$search.trigger('focus');\n          }\n        });\n        container.on('results:all', function (params) {\n          if (params.query.term == null || params.query.term === '') {\n            var showSearch = self.showSearch(params);\n\n            if (showSearch) {\n              self.$searchContainer[0].classList.remove('select2-search--hide');\n            } else {\n              self.$searchContainer[0].classList.add('select2-search--hide');\n            }\n          }\n        });\n        container.on('results:focus', function (params) {\n          if (params.data._resultId) {\n            self.$search.attr('aria-activedescendant', params.data._resultId);\n          } else {\n            self.$search.removeAttr('aria-activedescendant');\n          }\n        });\n      };\n\n      Search.prototype.handleSearch = function (evt) {\n        if (!this._keyUpPrevented) {\n          var input = this.$search.val();\n          this.trigger('query', {\n            term: input\n          });\n        }\n\n        this._keyUpPrevented = false;\n      };\n\n      Search.prototype.showSearch = function (_, params) {\n        return true;\n      };\n\n      return Search;\n    });\n    S2.define('select2/dropdown/hidePlaceholder', [], function () {\n      function HidePlaceholder(decorated, $element, options, dataAdapter) {\n        this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n        decorated.call(this, $element, options, dataAdapter);\n      }\n\n      HidePlaceholder.prototype.append = function (decorated, data) {\n        data.results = this.removePlaceholder(data.results);\n        decorated.call(this, data);\n      };\n\n      HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n        if (typeof placeholder === 'string') {\n          placeholder = {\n            id: '',\n            text: placeholder\n          };\n        }\n\n        return placeholder;\n      };\n\n      HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n        var modifiedData = data.slice(0);\n\n        for (var d = data.length - 1; d >= 0; d--) {\n          var item = data[d];\n\n          if (this.placeholder.id === item.id) {\n            modifiedData.splice(d, 1);\n          }\n        }\n\n        return modifiedData;\n      };\n\n      return HidePlaceholder;\n    });\n    S2.define('select2/dropdown/infiniteScroll', ['jquery'], function ($) {\n      function InfiniteScroll(decorated, $element, options, dataAdapter) {\n        this.lastParams = {};\n        decorated.call(this, $element, options, dataAdapter);\n        this.$loadingMore = this.createLoadingMore();\n        this.loading = false;\n      }\n\n      InfiniteScroll.prototype.append = function (decorated, data) {\n        this.$loadingMore.remove();\n        this.loading = false;\n        decorated.call(this, data);\n\n        if (this.showLoadingMore(data)) {\n          this.$results.append(this.$loadingMore);\n          this.loadMoreIfNeeded();\n        }\n      };\n\n      InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n        var self = this;\n        decorated.call(this, container, $container);\n        container.on('query', function (params) {\n          self.lastParams = params;\n          self.loading = true;\n        });\n        container.on('query:append', function (params) {\n          self.lastParams = params;\n          self.loading = true;\n        });\n        this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));\n      };\n\n      InfiniteScroll.prototype.loadMoreIfNeeded = function () {\n        var isLoadMoreVisible = $.contains(document.documentElement, this.$loadingMore[0]);\n\n        if (this.loading || !isLoadMoreVisible) {\n          return;\n        }\n\n        var currentOffset = this.$results.offset().top + this.$results.outerHeight(false);\n        var loadingMoreOffset = this.$loadingMore.offset().top + this.$loadingMore.outerHeight(false);\n\n        if (currentOffset + 50 >= loadingMoreOffset) {\n          this.loadMore();\n        }\n      };\n\n      InfiniteScroll.prototype.loadMore = function () {\n        this.loading = true;\n        var params = $.extend({}, {\n          page: 1\n        }, this.lastParams);\n        params.page++;\n        this.trigger('query:append', params);\n      };\n\n      InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n        return data.pagination && data.pagination.more;\n      };\n\n      InfiniteScroll.prototype.createLoadingMore = function () {\n        var $option = $('<li ' + 'class=\"select2-results__option select2-results__option--load-more\"' + 'role=\"option\" aria-disabled=\"true\"></li>');\n        var message = this.options.get('translations').get('loadingMore');\n        $option.html(message(this.lastParams));\n        return $option;\n      };\n\n      return InfiniteScroll;\n    });\n    S2.define('select2/dropdown/attachBody', ['jquery', '../utils'], function ($, Utils) {\n      function AttachBody(decorated, $element, options) {\n        this.$dropdownParent = $(options.get('dropdownParent') || document.body);\n        decorated.call(this, $element, options);\n      }\n\n      AttachBody.prototype.bind = function (decorated, container, $container) {\n        var self = this;\n        decorated.call(this, container, $container);\n        container.on('open', function () {\n          self._showDropdown();\n\n          self._attachPositioningHandler(container); // Must bind after the results handlers to ensure correct sizing\n\n\n          self._bindContainerResultHandlers(container);\n        });\n        container.on('close', function () {\n          self._hideDropdown();\n\n          self._detachPositioningHandler(container);\n        });\n        this.$dropdownContainer.on('mousedown', function (evt) {\n          evt.stopPropagation();\n        });\n      };\n\n      AttachBody.prototype.destroy = function (decorated) {\n        decorated.call(this);\n        this.$dropdownContainer.remove();\n      };\n\n      AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n        // Clone all of the container classes\n        $dropdown.attr('class', $container.attr('class')); // Custom SUIselect dropdown. @edited\n\n        $dropdown.removeClass('select2');\n        $dropdown.addClass('sui-select-dropdown-container--open');\n        $dropdown[0].classList.remove('select2');\n        $dropdown[0].classList.add('select2-container--open');\n        $dropdown.css({\n          position: 'absolute',\n          top: -999999\n        });\n        this.$container = $container;\n      };\n\n      AttachBody.prototype.render = function (decorated) {\n        var $container = $('<span></span>');\n        var $dropdown = decorated.call(this);\n        $container.append($dropdown);\n        this.$dropdownContainer = $container;\n        return $container;\n      };\n\n      AttachBody.prototype._hideDropdown = function (decorated) {\n        this.$dropdownContainer.detach();\n      };\n\n      AttachBody.prototype._bindContainerResultHandlers = function (decorated, container) {\n        // These should only be bound once\n        if (this._containerResultsHandlersBound) {\n          return;\n        }\n\n        var self = this;\n        container.on('results:all', function () {\n          self._positionDropdown();\n\n          self._resizeDropdown();\n        });\n        container.on('results:append', function () {\n          self._positionDropdown();\n\n          self._resizeDropdown();\n        });\n        container.on('results:message', function () {\n          self._positionDropdown();\n\n          self._resizeDropdown();\n        });\n        container.on('select', function () {\n          self._positionDropdown();\n\n          self._resizeDropdown();\n        });\n        container.on('unselect', function () {\n          self._positionDropdown();\n\n          self._resizeDropdown();\n        });\n        this._containerResultsHandlersBound = true;\n      };\n\n      AttachBody.prototype._attachPositioningHandler = function (decorated, container) {\n        var self = this;\n        var scrollEvent = 'scroll.select2.' + container.id;\n        var resizeEvent = 'resize.select2.' + container.id;\n        var orientationEvent = 'orientationchange.select2.' + container.id;\n        var $watchers = this.$container.parents().filter(Utils.hasScroll);\n        $watchers.each(function () {\n          Utils.StoreData(this, 'select2-scroll-position', {\n            x: $(this).scrollLeft(),\n            y: $(this).scrollTop()\n          });\n        });\n        $watchers.on(scrollEvent, function (ev) {\n          var position = Utils.GetData(this, 'select2-scroll-position');\n          $(this).scrollTop(position.y);\n        });\n        $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent, function (e) {\n          self._positionDropdown();\n\n          self._resizeDropdown();\n        });\n      };\n\n      AttachBody.prototype._detachPositioningHandler = function (decorated, container) {\n        var scrollEvent = 'scroll.select2.' + container.id;\n        var resizeEvent = 'resize.select2.' + container.id;\n        var orientationEvent = 'orientationchange.select2.' + container.id;\n        var $watchers = this.$container.parents().filter(Utils.hasScroll);\n        $watchers.off(scrollEvent);\n        $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n      };\n\n      AttachBody.prototype._positionDropdown = function () {\n        var $window = $(window); // Custom SUIselect dropdown. @edited\n\n        var isCurrentlyAbove = this.$dropdown[0].classList.contains('sui-select-dropdown--above');\n        var isCurrentlyBelow = this.$dropdown[0].classList.contains('sui-select-dropdown--below');\n        var newDirection = null;\n        var offset = this.$container.offset();\n        offset.bottom = offset.top + this.$container.outerHeight(false);\n        var container = {\n          height: this.$container.outerHeight(false)\n        };\n        container.top = offset.top;\n        container.bottom = offset.top + container.height;\n        var dropdown = {\n          height: this.$dropdown.outerHeight(false)\n        };\n        var viewport = {\n          top: $window.scrollTop(),\n          bottom: $window.scrollTop() + $window.height()\n        };\n        var enoughRoomAbove = viewport.top < offset.top - dropdown.height;\n        var enoughRoomBelow = viewport.bottom > offset.bottom + dropdown.height;\n        var css = {\n          left: offset.left,\n          top: container.bottom\n        }; // Determine what the parent element is to use for calculating the offset\n\n        var $offsetParent = this.$dropdownParent; // For statically positioned elements, we need to get the element\n        // that is determining the offset\n\n        if ($offsetParent.css('position') === 'static') {\n          $offsetParent = $offsetParent.offsetParent();\n        }\n\n        var parentOffset = {\n          top: 0,\n          left: 0\n        };\n\n        if ($.contains(document.body, $offsetParent[0]) || $offsetParent[0].isConnected) {\n          parentOffset = $offsetParent.offset();\n        }\n\n        css.top -= parentOffset.top;\n        css.left -= parentOffset.left;\n\n        if (!isCurrentlyAbove && !isCurrentlyBelow) {\n          newDirection = 'below';\n        }\n\n        if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n          newDirection = 'above';\n        } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n          newDirection = 'below';\n        }\n\n        if (newDirection == 'above' || isCurrentlyAbove && newDirection !== 'below') {\n          css.top = container.top - parentOffset.top - dropdown.height;\n        } // Custom SUIselect dropdown. @edited\n\n\n        if (newDirection != null) {\n          this.$dropdown[0].classList.remove('sui-select-dropdown--below');\n          this.$dropdown[0].classList.remove('sui-select-dropdown--above');\n          this.$dropdown[0].classList.add('sui-select-dropdown--' + newDirection);\n          this.$container[0].classList.remove('sui-select-container--below');\n          this.$container[0].classList.remove('sui-select-container--above');\n          this.$container[0].classList.add('sui-select-dropdown-container--' + newDirection);\n        }\n\n        this.$dropdownContainer.css(css);\n      };\n\n      AttachBody.prototype._resizeDropdown = function () {\n        var css = {\n          width: this.$container.outerWidth(false) + 'px'\n        };\n\n        if (this.options.get('dropdownAutoWidth')) {\n          css.minWidth = css.width;\n          css.position = 'relative';\n          css.width = 'auto';\n        }\n\n        this.$dropdown.css(css);\n      };\n\n      AttachBody.prototype._showDropdown = function (decorated) {\n        this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n        this._positionDropdown();\n\n        this._resizeDropdown();\n      };\n\n      return AttachBody;\n    });\n    S2.define('select2/dropdown/minimumResultsForSearch', [], function () {\n      function countResults(data) {\n        var count = 0;\n\n        for (var d = 0; d < data.length; d++) {\n          var item = data[d];\n\n          if (item.children) {\n            count += countResults(item.children);\n          } else {\n            count++;\n          }\n        }\n\n        return count;\n      }\n\n      function MinimumResultsForSearch(decorated, $element, options, dataAdapter) {\n        this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n\n        if (this.minimumResultsForSearch < 0) {\n          this.minimumResultsForSearch = Infinity;\n        }\n\n        decorated.call(this, $element, options, dataAdapter);\n      }\n\n      MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n        if (countResults(params.data.results) < this.minimumResultsForSearch) {\n          return false;\n        }\n\n        return decorated.call(this, params);\n      };\n\n      return MinimumResultsForSearch;\n    });\n    S2.define('select2/dropdown/selectOnClose', ['../utils'], function (Utils) {\n      function SelectOnClose() {}\n\n      SelectOnClose.prototype.bind = function (decorated, container, $container) {\n        var self = this;\n        decorated.call(this, container, $container);\n        container.on('close', function (params) {\n          self._handleSelectOnClose(params);\n        });\n      };\n\n      SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\n        if (params && params.originalSelect2Event != null) {\n          var event = params.originalSelect2Event; // Don't select an item if the close event was triggered from a select or\n          // unselect event\n\n          if (event._type === 'select' || event._type === 'unselect') {\n            return;\n          }\n        }\n\n        var $highlightedResults = this.getHighlightedResults(); // Only select highlighted results\n\n        if ($highlightedResults.length < 1) {\n          return;\n        }\n\n        var data = Utils.GetData($highlightedResults[0], 'data'); // Don't re-select already selected resulte\n\n        if (data.element != null && data.element.selected || data.element == null && data.selected) {\n          return;\n        }\n\n        this.trigger('select', {\n          data: data\n        });\n      };\n\n      return SelectOnClose;\n    });\n    S2.define('select2/dropdown/closeOnSelect', [], function () {\n      function CloseOnSelect() {}\n\n      CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n        var self = this;\n        decorated.call(this, container, $container);\n        container.on('select', function (evt) {\n          self._selectTriggered(evt);\n        });\n        container.on('unselect', function (evt) {\n          self._selectTriggered(evt);\n        });\n      };\n\n      CloseOnSelect.prototype._selectTriggered = function (_, evt) {\n        var originalEvent = evt.originalEvent; // Don't close if the control key is being held\n\n        if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {\n          return;\n        }\n\n        this.trigger('close', {\n          originalEvent: originalEvent,\n          originalSelect2Event: evt\n        });\n      };\n\n      return CloseOnSelect;\n    });\n    S2.define('select2/dropdown/dropdownCss', ['../utils'], function (Utils) {\n      function DropdownCSS() {}\n\n      DropdownCSS.prototype.render = function (decorated) {\n        var $dropdown = decorated.call(this);\n        var dropdownCssClass = this.options.get('dropdownCssClass') || '';\n\n        if (dropdownCssClass.indexOf(':all:') !== -1) {\n          dropdownCssClass = dropdownCssClass.replace(':all:', '');\n          Utils.copyNonInternalCssClasses($dropdown[0], this.$element[0]);\n        }\n\n        $dropdown.addClass('sui-select-dropdown'); // FIX: Make sure \"sui-select-dropdown\" main class does not get erased. @edited\n\n        $dropdown.addClass(dropdownCssClass);\n        return $dropdown;\n      };\n\n      return DropdownCSS;\n    });\n    S2.define('select2/dropdown/tagsSearchHighlight', ['../utils'], function (Utils) {\n      function TagsSearchHighlight() {}\n\n      TagsSearchHighlight.prototype.highlightFirstItem = function (decorated) {\n        var $options = this.$results.find('.select2-results__option--selectable' + ':not(.select2-results__option--selected)');\n\n        if ($options.length > 0) {\n          var $firstOption = $options.first();\n          var data = Utils.GetData($firstOption[0], 'data');\n          var firstElement = data.element;\n\n          if (firstElement && firstElement.getAttribute) {\n            if (firstElement.getAttribute('data-select2-tag') === 'true') {\n              $firstOption.trigger('mouseenter');\n              return;\n            }\n          }\n        }\n\n        decorated.call(this);\n      };\n\n      return TagsSearchHighlight;\n    });\n    S2.define('select2/i18n/en', [], function () {\n      // English\n      return {\n        errorLoading: function errorLoading() {\n          return 'The results could not be loaded.';\n        },\n        inputTooLong: function inputTooLong(args) {\n          var overChars = args.input.length - args.maximum;\n          var message = 'Please delete ' + overChars + ' character';\n\n          if (overChars != 1) {\n            message += 's';\n          }\n\n          return message;\n        },\n        inputTooShort: function inputTooShort(args) {\n          var remainingChars = args.minimum - args.input.length;\n          var message = 'Please enter ' + remainingChars + ' or more characters';\n          return message;\n        },\n        loadingMore: function loadingMore() {\n          return 'Loading more results…';\n        },\n        maximumSelected: function maximumSelected(args) {\n          var message = 'You can only select ' + args.maximum + ' item';\n\n          if (args.maximum != 1) {\n            message += 's';\n          }\n\n          return message;\n        },\n        noResults: function noResults() {\n          return 'No results found';\n        },\n        searching: function searching() {\n          return 'Searching…';\n        },\n        removeAllItems: function removeAllItems() {\n          return 'Remove all items';\n        },\n        removeItem: function removeItem() {\n          return 'Remove item';\n        },\n        search: function search() {\n          return 'Search';\n        }\n      };\n    });\n    S2.define('select2/defaults', ['jquery', './results', './selection/single', './selection/multiple', './selection/placeholder', './selection/allowClear', './selection/search', './selection/selectionCss', './selection/eventRelay', './utils', './translation', './diacritics', './data/select', './data/array', './data/ajax', './data/tags', './data/tokenizer', './data/minimumInputLength', './data/maximumInputLength', './data/maximumSelectionLength', './dropdown', './dropdown/search', './dropdown/hidePlaceholder', './dropdown/infiniteScroll', './dropdown/attachBody', './dropdown/minimumResultsForSearch', './dropdown/selectOnClose', './dropdown/closeOnSelect', './dropdown/dropdownCss', './dropdown/tagsSearchHighlight', './i18n/en'], function ($, ResultsList, SingleSelection, MultipleSelection, Placeholder, AllowClear, SelectionSearch, SelectionCSS, EventRelay, Utils, Translation, DIACRITICS, SelectData, ArrayData, AjaxData, Tags, Tokenizer, MinimumInputLength, MaximumInputLength, MaximumSelectionLength, Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll, AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect, DropdownCSS, TagsSearchHighlight, EnglishTranslation) {\n      function Defaults() {\n        this.reset();\n      }\n\n      Defaults.prototype.apply = function (options) {\n        options = $.extend(true, {}, this.defaults, options);\n\n        if (options.dataAdapter == null) {\n          if (options.ajax != null) {\n            options.dataAdapter = AjaxData;\n          } else if (options.data != null) {\n            options.dataAdapter = ArrayData;\n          } else {\n            options.dataAdapter = SelectData;\n          }\n\n          if (options.minimumInputLength > 0) {\n            options.dataAdapter = Utils.Decorate(options.dataAdapter, MinimumInputLength);\n          }\n\n          if (options.maximumInputLength > 0) {\n            options.dataAdapter = Utils.Decorate(options.dataAdapter, MaximumInputLength);\n          }\n\n          if (options.maximumSelectionLength > 0) {\n            options.dataAdapter = Utils.Decorate(options.dataAdapter, MaximumSelectionLength);\n          }\n\n          if (options.tags) {\n            options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n          }\n\n          if (options.tokenSeparators != null || options.tokenizer != null) {\n            options.dataAdapter = Utils.Decorate(options.dataAdapter, Tokenizer);\n          }\n        }\n\n        if (options.resultsAdapter == null) {\n          options.resultsAdapter = ResultsList;\n\n          if (options.ajax != null) {\n            options.resultsAdapter = Utils.Decorate(options.resultsAdapter, InfiniteScroll);\n          }\n\n          if (options.placeholder != null) {\n            options.resultsAdapter = Utils.Decorate(options.resultsAdapter, HidePlaceholder);\n          }\n\n          if (options.selectOnClose) {\n            options.resultsAdapter = Utils.Decorate(options.resultsAdapter, SelectOnClose);\n          }\n\n          if (options.tags) {\n            options.resultsAdapter = Utils.Decorate(options.resultsAdapter, TagsSearchHighlight);\n          }\n        }\n\n        if (options.dropdownAdapter == null) {\n          if (options.multiple) {\n            options.dropdownAdapter = Dropdown;\n          } else {\n            var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\n            options.dropdownAdapter = SearchableDropdown;\n          }\n\n          if (options.minimumResultsForSearch !== 0) {\n            options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, MinimumResultsForSearch);\n          }\n\n          if (options.closeOnSelect) {\n            options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, CloseOnSelect);\n          }\n\n          if (options.dropdownCssClass != null) {\n            options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, DropdownCSS);\n          }\n\n          options.dropdownAdapter = Utils.Decorate(options.dropdownAdapter, AttachBody);\n        }\n\n        if (options.selectionAdapter == null) {\n          if (options.multiple) {\n            options.selectionAdapter = MultipleSelection;\n          } else {\n            options.selectionAdapter = SingleSelection;\n          } // Add the placeholder mixin if a placeholder was specified\n\n\n          if (options.placeholder != null) {\n            options.selectionAdapter = Utils.Decorate(options.selectionAdapter, Placeholder);\n          }\n\n          if (options.allowClear) {\n            options.selectionAdapter = Utils.Decorate(options.selectionAdapter, AllowClear);\n          }\n\n          if (options.multiple) {\n            options.selectionAdapter = Utils.Decorate(options.selectionAdapter, SelectionSearch);\n          }\n\n          if (options.selectionCssClass != null) {\n            options.selectionAdapter = Utils.Decorate(options.selectionAdapter, SelectionCSS);\n          }\n\n          options.selectionAdapter = Utils.Decorate(options.selectionAdapter, EventRelay);\n        } // If the defaults were not previously applied from an element, it is\n        // possible for the language option to have not been resolved\n\n\n        options.language = this._resolveLanguage(options.language); // Always fall back to English since it will always be complete\n\n        options.language.push('en');\n        var uniqueLanguages = [];\n\n        for (var l = 0; l < options.language.length; l++) {\n          var language = options.language[l];\n\n          if (uniqueLanguages.indexOf(language) === -1) {\n            uniqueLanguages.push(language);\n          }\n        }\n\n        options.language = uniqueLanguages;\n        options.translations = this._processTranslations(options.language, options.debug);\n        return options;\n      };\n\n      Defaults.prototype.reset = function () {\n        function stripDiacritics(text) {\n          // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n          function match(a) {\n            return DIACRITICS[a] || a;\n          }\n\n          return text.replace(/[^\\u0000-\\u007E]/g, match);\n        }\n\n        function matcher(params, data) {\n          // Always return the object if there is nothing to compare\n          if (params.term == null || params.term.trim() === '') {\n            return data;\n          } // Do a recursive check for options with children\n\n\n          if (data.children && data.children.length > 0) {\n            // Clone the data object if there are children\n            // This is required as we modify the object to remove any non-matches\n            var match = $.extend(true, {}, data); // Check each child of the option\n\n            for (var c = data.children.length - 1; c >= 0; c--) {\n              var child = data.children[c];\n              var matches = matcher(params, child); // If there wasn't a match, remove the object in the array\n\n              if (matches == null) {\n                match.children.splice(c, 1);\n              }\n            } // If any children matched, return the new object\n\n\n            if (match.children.length > 0) {\n              return match;\n            } // If there were no matching children, check just the plain object\n\n\n            return matcher(params, match);\n          }\n\n          var original = stripDiacritics(data.text).toUpperCase();\n          var term = stripDiacritics(params.term).toUpperCase(); // Check if the text contains the term\n\n          if (original.indexOf(term) > -1) {\n            return data;\n          } // If it doesn't contain the term, don't return anything\n\n\n          return null;\n        }\n\n        this.defaults = {\n          amdLanguageBase: './i18n/',\n          autocomplete: 'off',\n          closeOnSelect: true,\n          debug: false,\n          dropdownAutoWidth: false,\n          escapeMarkup: Utils.escapeMarkup,\n          language: {},\n          matcher: matcher,\n          minimumInputLength: 0,\n          maximumInputLength: 0,\n          maximumSelectionLength: 0,\n          minimumResultsForSearch: 0,\n          selectOnClose: false,\n          scrollAfterSelect: false,\n          sorter: function sorter(data) {\n            return data;\n          },\n          templateResult: function templateResult(result) {\n            return result.text;\n          },\n          templateSelection: function templateSelection(selection) {\n            return selection.text;\n          },\n          theme: 'default',\n          width: 'resolve'\n        };\n      };\n\n      Defaults.prototype.applyFromElement = function (options, $element) {\n        var optionLanguage = options.language;\n        var defaultLanguage = this.defaults.language;\n        var elementLanguage = $element.prop('lang');\n        var parentLanguage = $element.closest('[lang]').prop('lang');\n        var languages = Array.prototype.concat.call(this._resolveLanguage(elementLanguage), this._resolveLanguage(optionLanguage), this._resolveLanguage(defaultLanguage), this._resolveLanguage(parentLanguage));\n        options.language = languages;\n        return options;\n      };\n\n      Defaults.prototype._resolveLanguage = function (language) {\n        if (!language) {\n          return [];\n        }\n\n        if ($.isEmptyObject(language)) {\n          return [];\n        }\n\n        if ($.isPlainObject(language)) {\n          return [language];\n        }\n\n        var languages;\n\n        if (!Array.isArray(language)) {\n          languages = [language];\n        } else {\n          languages = language;\n        }\n\n        var resolvedLanguages = [];\n\n        for (var l = 0; l < languages.length; l++) {\n          resolvedLanguages.push(languages[l]);\n\n          if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) {\n            // Extract the region information if it is included\n            var languageParts = languages[l].split('-');\n            var baseLanguage = languageParts[0];\n            resolvedLanguages.push(baseLanguage);\n          }\n        }\n\n        return resolvedLanguages;\n      };\n\n      Defaults.prototype._processTranslations = function (languages, debug) {\n        var translations = new Translation();\n\n        for (var l = 0; l < languages.length; l++) {\n          var languageData = new Translation();\n          var language = languages[l];\n\n          if (typeof language === 'string') {\n            try {\n              // Try to load it with the original name\n              languageData = Translation.loadPath(language);\n            } catch (e) {\n              try {\n                // If we couldn't load it, check if it wasn't the full path\n                language = this.defaults.amdLanguageBase + language;\n                languageData = Translation.loadPath(language);\n              } catch (ex) {\n                // The translation could not be loaded at all. Sometimes this is\n                // because of a configuration problem, other times this can be\n                // because of how Select2 helps load all possible translation files\n                if (debug && window.console && console.warn) {\n                  console.warn('Select2: The language file for \"' + language + '\" could ' + 'not be automatically loaded. A fallback will be used instead.');\n                }\n              }\n            }\n          } else if ($.isPlainObject(language)) {\n            languageData = new Translation(language);\n          } else {\n            languageData = language;\n          }\n\n          translations.extend(languageData);\n        }\n\n        return translations;\n      };\n\n      Defaults.prototype.set = function (key, value) {\n        var camelKey = $.camelCase(key);\n        var data = {};\n        data[camelKey] = value;\n\n        var convertedData = Utils._convertData(data);\n\n        $.extend(true, this.defaults, convertedData);\n      };\n\n      var defaults = new Defaults();\n      return defaults;\n    });\n    S2.define('select2/options', ['jquery', './defaults', './utils'], function ($, Defaults, Utils) {\n      function Options(options, $element) {\n        this.options = options;\n\n        if ($element != null) {\n          this.fromElement($element);\n        }\n\n        if ($element != null) {\n          this.options = Defaults.applyFromElement(this.options, $element);\n        }\n\n        this.options = Defaults.apply(this.options);\n      }\n\n      Options.prototype.fromElement = function ($e) {\n        var excludedData = ['select2'];\n\n        if (this.options.multiple == null) {\n          this.options.multiple = $e.prop('multiple');\n        }\n\n        if (this.options.disabled == null) {\n          this.options.disabled = $e.prop('disabled');\n        }\n\n        if (this.options.autocomplete == null && $e.prop('autocomplete')) {\n          this.options.autocomplete = $e.prop('autocomplete');\n        }\n\n        if (this.options.dir == null) {\n          if ($e.prop('dir')) {\n            this.options.dir = $e.prop('dir');\n          } else if ($e.closest('[dir]').prop('dir')) {\n            this.options.dir = $e.closest('[dir]').prop('dir');\n          } else {\n            this.options.dir = 'ltr';\n          }\n        }\n\n        $e.prop('disabled', this.options.disabled);\n        $e.prop('multiple', this.options.multiple);\n\n        if (Utils.GetData($e[0], 'select2Tags')) {\n          if (this.options.debug && window.console && console.warn) {\n            console.warn('Select2: The `data-select2-tags` attribute has been changed to ' + 'use the `data-data` and `data-tags=\"true\"` attributes and will be ' + 'removed in future versions of Select2.');\n          }\n\n          Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\n          Utils.StoreData($e[0], 'tags', true);\n        }\n\n        if (Utils.GetData($e[0], 'ajaxUrl')) {\n          if (this.options.debug && window.console && console.warn) {\n            console.warn('Select2: The `data-ajax-url` attribute has been changed to ' + '`data-ajax--url` and support for the old attribute will be removed' + ' in future versions of Select2.');\n          }\n\n          $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));\n          Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));\n        }\n\n        var dataset = {};\n\n        function upperCaseLetter(_, letter) {\n          return letter.toUpperCase();\n        } // Pre-load all of the attributes which are prefixed with `data-`\n\n\n        for (var attr = 0; attr < $e[0].attributes.length; attr++) {\n          var attributeName = $e[0].attributes[attr].name;\n          var prefix = 'data-';\n\n          if (attributeName.substr(0, prefix.length) == prefix) {\n            // Get the contents of the attribute after `data-`\n            var dataName = attributeName.substring(prefix.length); // Get the data contents from the consistent source\n            // This is more than likely the jQuery data helper\n\n            var dataValue = Utils.GetData($e[0], dataName); // camelCase the attribute name to match the spec\n\n            var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter); // Store the data attribute contents into the dataset since\n\n            dataset[camelDataName] = dataValue;\n          }\n        } // Prefer the element's `dataset` attribute if it exists\n        // jQuery 1.x does not correctly handle data attributes with multiple dashes\n\n\n        if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\n          dataset = $.extend(true, {}, $e[0].dataset, dataset);\n        } // Prefer our internal data cache if it exists\n\n\n        var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);\n        data = Utils._convertData(data);\n\n        for (var key in data) {\n          if (excludedData.indexOf(key) > -1) {\n            continue;\n          }\n\n          if ($.isPlainObject(this.options[key])) {\n            $.extend(this.options[key], data[key]);\n          } else {\n            this.options[key] = data[key];\n          }\n        }\n\n        return this;\n      };\n\n      Options.prototype.get = function (key) {\n        return this.options[key];\n      };\n\n      Options.prototype.set = function (key, val) {\n        this.options[key] = val;\n      };\n\n      return Options;\n    });\n    S2.define('select2/core', ['jquery', './options', './utils', './keys'], function ($, Options, Utils, KEYS) {\n      var Select2 = function Select2($element, options) {\n        if (Utils.GetData($element[0], 'select2') != null) {\n          Utils.GetData($element[0], 'select2').destroy();\n        }\n\n        this.$element = $element;\n        this.id = this._generateId($element);\n        options = options || {};\n        this.options = new Options(options, $element);\n\n        Select2.__super__.constructor.call(this); // Set up the tabindex\n\n\n        var tabindex = $element.attr('tabindex') || 0;\n        Utils.StoreData($element[0], 'old-tabindex', tabindex);\n        $element.attr('tabindex', '-1'); // Set up containers and adapters\n\n        var DataAdapter = this.options.get('dataAdapter');\n        this.dataAdapter = new DataAdapter($element, this.options);\n        var $container = this.render();\n\n        this._placeContainer($container);\n\n        var SelectionAdapter = this.options.get('selectionAdapter');\n        this.selection = new SelectionAdapter($element, this.options);\n        this.$selection = this.selection.render();\n        this.selection.position(this.$selection, $container);\n        var DropdownAdapter = this.options.get('dropdownAdapter');\n        this.dropdown = new DropdownAdapter($element, this.options);\n        this.$dropdown = this.dropdown.render();\n        this.dropdown.position(this.$dropdown, $container);\n        var ResultsAdapter = this.options.get('resultsAdapter');\n        this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n        this.$results = this.results.render();\n        this.results.position(this.$results, this.$dropdown); // Bind events\n\n        var self = this; // Bind the container to all of the adapters\n\n        this._bindAdapters(); // Register any DOM event handlers\n\n\n        this._registerDomEvents(); // Register any internal event handlers\n\n\n        this._registerDataEvents();\n\n        this._registerSelectionEvents();\n\n        this._registerDropdownEvents();\n\n        this._registerResultsEvents();\n\n        this._registerEvents(); // Set the initial state\n\n\n        this.dataAdapter.current(function (initialData) {\n          self.trigger('selection:update', {\n            data: initialData\n          });\n        }); // Hide the original select\n\n        $element[0].classList.add('select2-hidden-accessible');\n        $element.attr('aria-hidden', 'true'); // Hide the original select with SUI. @edited\n\n        $element.addClass('sui-screen-reader-text'); // Synchronize any monitored attributes\n\n        this._syncAttributes();\n\n        Utils.StoreData($element[0], 'select2', this); // Ensure backwards compatibility with $element.data('select2').\n\n        $element.data('select2', this);\n      };\n\n      Utils.Extend(Select2, Utils.Observable);\n\n      Select2.prototype._generateId = function ($element) {\n        var id = '';\n\n        if ($element.attr('id') != null) {\n          id = $element.attr('id');\n        } else if ($element.attr('name') != null) {\n          id = $element.attr('name') + '-' + Utils.generateChars(2);\n        } else {\n          id = Utils.generateChars(4);\n        }\n\n        id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n        id = 'select2-' + id;\n        return id;\n      };\n\n      Select2.prototype._placeContainer = function ($container) {\n        $container.insertAfter(this.$element);\n\n        var width = this._resolveWidth(this.$element, this.options.get('width'));\n\n        if (width != null) {\n          $container.css('width', width);\n        }\n      };\n\n      Select2.prototype._resolveWidth = function ($element, method) {\n        var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n\n        if (method == 'resolve') {\n          var styleWidth = this._resolveWidth($element, 'style');\n\n          if (styleWidth != null) {\n            return styleWidth;\n          }\n\n          return this._resolveWidth($element, 'element');\n        }\n\n        if (method == 'element') {\n          var elementWidth = $element.outerWidth(false);\n\n          if (elementWidth <= 0) {\n            return 'auto';\n          }\n\n          return elementWidth + 'px';\n        }\n\n        if (method == 'style') {\n          var style = $element.attr('style');\n\n          if (typeof style !== 'string') {\n            return null;\n          }\n\n          var attrs = style.split(';');\n\n          for (var i = 0, l = attrs.length; i < l; i = i + 1) {\n            var attr = attrs[i].replace(/\\s/g, '');\n            var matches = attr.match(WIDTH);\n\n            if (matches !== null && matches.length >= 1) {\n              return matches[1];\n            }\n          }\n\n          return null;\n        }\n\n        if (method == 'computedstyle') {\n          var computedStyle = window.getComputedStyle($element[0]);\n          return computedStyle.width;\n        }\n\n        return method;\n      };\n\n      Select2.prototype._bindAdapters = function () {\n        this.dataAdapter.bind(this, this.$container);\n        this.selection.bind(this, this.$container);\n        this.dropdown.bind(this, this.$container);\n        this.results.bind(this, this.$container);\n      };\n\n      Select2.prototype._registerDomEvents = function () {\n        var self = this;\n        this.$element.on('change.select2', function () {\n          self.dataAdapter.current(function (data) {\n            self.trigger('selection:update', {\n              data: data\n            });\n          });\n        });\n        this.$element.on('focus.select2', function (evt) {\n          self.trigger('focus', evt);\n        });\n        this._syncA = Utils.bind(this._syncAttributes, this);\n        this._syncS = Utils.bind(this._syncSubtree, this);\n        this._observer = new window.MutationObserver(function (mutations) {\n          self._syncA();\n\n          self._syncS(mutations);\n        });\n\n        this._observer.observe(this.$element[0], {\n          attributes: true,\n          childList: true,\n          subtree: false\n        });\n      };\n\n      Select2.prototype._registerDataEvents = function () {\n        var self = this;\n        this.dataAdapter.on('*', function (name, params) {\n          self.trigger(name, params);\n        });\n      };\n\n      Select2.prototype._registerSelectionEvents = function () {\n        var self = this;\n        var nonRelayEvents = ['toggle', 'focus'];\n        this.selection.on('toggle', function () {\n          self.toggleDropdown();\n        });\n        this.selection.on('focus', function (params) {\n          self.focus(params);\n        });\n        this.selection.on('*', function (name, params) {\n          if (nonRelayEvents.indexOf(name) !== -1) {\n            return;\n          }\n\n          self.trigger(name, params);\n        });\n      };\n\n      Select2.prototype._registerDropdownEvents = function () {\n        var self = this;\n        this.dropdown.on('*', function (name, params) {\n          self.trigger(name, params);\n        });\n      };\n\n      Select2.prototype._registerResultsEvents = function () {\n        var self = this;\n        this.results.on('*', function (name, params) {\n          self.trigger(name, params);\n        });\n      };\n\n      Select2.prototype._registerEvents = function () {\n        var self = this;\n        this.on('open', function () {\n          self.$container[0].classList.add('select2-container--open');\n        });\n        this.on('close', function () {\n          self.$container[0].classList.remove('select2-container--open');\n        });\n        this.on('enable', function () {\n          self.$container[0].classList.remove('select2-container--disabled');\n        });\n        this.on('disable', function () {\n          self.$container[0].classList.add('select2-container--disabled');\n        });\n        this.on('blur', function () {\n          self.$container[0].classList.remove('select2-container--focus');\n        });\n        this.on('query', function (params) {\n          if (!self.isOpen()) {\n            self.trigger('open', {});\n          }\n\n          this.dataAdapter.query(params, function (data) {\n            self.trigger('results:all', {\n              data: data,\n              query: params\n            });\n          });\n        });\n        this.on('query:append', function (params) {\n          this.dataAdapter.query(params, function (data) {\n            self.trigger('results:append', {\n              data: data,\n              query: params\n            });\n          });\n        });\n        this.on('keypress', function (evt) {\n          var key = evt.which;\n          var isMultiSelect = this.$element[0].hasAttribute('multiple');\n\n          if (self.isOpen()) {\n            if (key === KEYS.ENTER) {\n              self.trigger('results:select');\n              evt.preventDefault();\n            } else if (key === KEYS.SPACE && evt.ctrlKey) {\n              self.trigger('results:toggle');\n              evt.preventDefault();\n            } else if (key === KEYS.UP) {\n              self.trigger('results:previous');\n              evt.preventDefault();\n            } else if (key === KEYS.DOWN) {\n              self.trigger('results:next');\n              evt.preventDefault();\n            } else if (key === KEYS.ESC || key === KEYS.TAB) {\n              self.close();\n              evt.preventDefault();\n            }\n          } else if (!isMultiSelect) {\n            // Added the functionality to change option on press of up and down arrow. @edited\n            if (key === KEYS.ENTER || key === KEYS.SPACE || (key === KEYS.DOWN || key === KEYS.UP) && evt.altKey) {\n              self.open();\n              evt.preventDefault();\n            } else if (key === KEYS.DOWN) {\n              if (undefined != this.$element.find('option:selected').next().val()) {\n                this.$element.val(this.$element.find('option:selected').next().val());\n                this.$element.trigger('change');\n              }\n\n              evt.preventDefault();\n            } else if (key === KEYS.UP) {\n              if (undefined != this.$element.find('option:selected').prev().val()) {\n                this.$element.val(this.$element.find('option:selected').prev().val());\n                this.$element.trigger('change');\n              }\n\n              evt.preventDefault();\n            } // Added the functionality to select option based on key press. @edited\n            else {\n              var selectedValue = this.$element.find('option:selected').text();\n              var keyPressed = String.fromCharCode(key).toLowerCase();\n              var values = this.$element.find('option').filter(function () {\n                var _$$text;\n\n                return (_$$text = $(this).text()) === null || _$$text === void 0 ? void 0 : _$$text.toLowerCase().startsWith(keyPressed);\n              });\n              var arrLength = values.length - 1;\n              var elemVal = selectedValue;\n              values.each(function (index) {\n                if (selectedValue !== '' && selectedValue[0].toLowerCase() === keyPressed) {\n                  if ($(this).text() === selectedValue && index !== arrLength) {\n                    elemVal = $(values[index + 1]).val();\n                    return false;\n                  }\n\n                  return;\n                }\n\n                elemVal = $(this).val();\n                return false;\n              });\n              elemVal !== selectedValue && (self.$element.val(elemVal), self.$element.trigger('change'));\n            }\n          }\n        });\n      };\n\n      Select2.prototype._syncAttributes = function () {\n        this.options.set('disabled', this.$element.prop('disabled'));\n\n        if (this.isDisabled()) {\n          if (this.isOpen()) {\n            this.close();\n          }\n\n          this.trigger('disable', {});\n        } else {\n          this.trigger('enable', {});\n        }\n      };\n\n      Select2.prototype._isChangeMutation = function (mutations) {\n        var self = this;\n\n        if (mutations.addedNodes && mutations.addedNodes.length > 0) {\n          for (var n = 0; n < mutations.addedNodes.length; n++) {\n            var node = mutations.addedNodes[n];\n\n            if (node.selected) {\n              return true;\n            }\n          }\n        } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n          return true;\n        } else if (Array.isArray(mutations)) {\n          return mutations.some(function (mutation) {\n            return self._isChangeMutation(mutation);\n          });\n        }\n\n        return false;\n      };\n\n      Select2.prototype._syncSubtree = function (mutations) {\n        var changed = this._isChangeMutation(mutations);\n\n        var self = this; // Only re-pull the data if we think there is a change\n\n        if (changed) {\n          this.dataAdapter.current(function (currentData) {\n            self.trigger('selection:update', {\n              data: currentData\n            });\n          });\n        }\n      };\n      /**\n       * Override the trigger method to automatically trigger pre-events when\n       * there are events that can be prevented.\n       */\n\n\n      Select2.prototype.trigger = function (name, args) {\n        var actualTrigger = Select2.__super__.trigger;\n        var preTriggerMap = {\n          'open': 'opening',\n          'close': 'closing',\n          'select': 'selecting',\n          'unselect': 'unselecting',\n          'clear': 'clearing'\n        };\n\n        if (args === undefined) {\n          args = {};\n        }\n\n        if (name in preTriggerMap) {\n          var preTriggerName = preTriggerMap[name];\n          var preTriggerArgs = {\n            prevented: false,\n            name: name,\n            args: args\n          };\n          actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n          if (preTriggerArgs.prevented) {\n            args.prevented = true;\n            return;\n          }\n        }\n\n        actualTrigger.call(this, name, args);\n      };\n\n      Select2.prototype.toggleDropdown = function () {\n        if (this.isDisabled()) {\n          return;\n        }\n\n        if (this.isOpen()) {\n          this.close();\n        } else {\n          this.open();\n        }\n      };\n\n      Select2.prototype.open = function () {\n        if (this.isOpen()) {\n          return;\n        }\n\n        if (this.isDisabled()) {\n          return;\n        }\n\n        this.trigger('query', {});\n      };\n\n      Select2.prototype.close = function (evt) {\n        if (!this.isOpen()) {\n          return;\n        }\n\n        this.trigger('close', {\n          originalEvent: evt\n        });\n      };\n      /**\n       * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n       * object.\n       *\n       * @return {true} if the instance is not disabled.\n       * @return {false} if the instance is disabled.\n       */\n\n\n      Select2.prototype.isEnabled = function () {\n        return !this.isDisabled();\n      };\n      /**\n       * Helper method to abstract the \"disabled\" state of this object.\n       *\n       * @return {true} if the disabled option is true.\n       * @return {false} if the disabled option is false.\n       */\n\n\n      Select2.prototype.isDisabled = function () {\n        return this.options.get('disabled');\n      };\n\n      Select2.prototype.isOpen = function () {\n        return this.$container[0].classList.contains('select2-container--open');\n      };\n\n      Select2.prototype.hasFocus = function () {\n        return this.$container[0].classList.contains('select2-container--focus');\n      };\n\n      Select2.prototype.focus = function (data) {\n        // No need to re-trigger focus events if we are already focused\n        if (this.hasFocus()) {\n          return;\n        }\n\n        this.$container[0].classList.add('select2-container--focus');\n        this.trigger('focus', {});\n      };\n\n      Select2.prototype.enable = function (args) {\n        if (this.options.get('debug') && window.console && console.warn) {\n          console.warn('Select2: The `select2(\"enable\")` method has been deprecated and will' + ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' + ' instead.');\n        }\n\n        if (args == null || args.length === 0) {\n          args = [true];\n        }\n\n        var disabled = !args[0];\n        this.$element.prop('disabled', disabled);\n      };\n\n      Select2.prototype.data = function () {\n        if (this.options.get('debug') && arguments.length > 0 && window.console && console.warn) {\n          console.warn('Select2: Data can no longer be set using `select2(\"data\")`. You ' + 'should consider setting the value instead using `$element.val()`.');\n        }\n\n        var data = [];\n        this.dataAdapter.current(function (currentData) {\n          data = currentData;\n        });\n        return data;\n      };\n\n      Select2.prototype.val = function (args) {\n        if (this.options.get('debug') && window.console && console.warn) {\n          console.warn('Select2: The `select2(\"val\")` method has been deprecated and will be' + ' removed in later Select2 versions. Use $element.val() instead.');\n        }\n\n        if (args == null || args.length === 0) {\n          return this.$element.val();\n        }\n\n        var newVal = args[0];\n\n        if (Array.isArray(newVal)) {\n          newVal = newVal.map(function (obj) {\n            return obj.toString();\n          });\n        }\n\n        this.$element.val(newVal).trigger('input').trigger('change');\n      };\n\n      Select2.prototype.destroy = function () {\n        Utils.RemoveData(this.$container[0]);\n        this.$container.remove();\n\n        this._observer.disconnect();\n\n        this._observer = null;\n        this._syncA = null;\n        this._syncS = null;\n        this.$element.off('.select2');\n        this.$element.attr('tabindex', Utils.GetData(this.$element[0], 'old-tabindex')); // Remove SUI screen reader class. @edited\n\n        this.$element.removeClass('sui-screen-reader-text');\n        this.$element[0].classList.remove('select2-hidden-accessible');\n        this.$element.attr('aria-hidden', 'false');\n        Utils.RemoveData(this.$element[0]);\n        this.$element.removeData('select2');\n        this.dataAdapter.destroy();\n        this.selection.destroy();\n        this.dropdown.destroy();\n        this.results.destroy();\n        this.dataAdapter = null;\n        this.selection = null;\n        this.dropdown = null;\n        this.results = null;\n      };\n\n      Select2.prototype.render = function () {\n        var $container = $('<span class=\"select2 select2-container\">' + '<span class=\"selection\"></span>' + '<span class=\"dropdown-wrapper\" aria-hidden=\"true\"></span>' + '</span>');\n        $container.attr('dir', this.options.get('dir'));\n        this.$container = $container; // Add SUIselect class to select main div. @edited\n\n        this.$container[0].classList.add('sui-select'); // Additional class for themes. @edited\n\n        if ('default' !== this.options.get('theme')) {\n          this.$container[0].classList.add('sui-select-theme--' + this.options.get('theme'));\n        }\n\n        Utils.StoreData($container[0], 'element', this.$element);\n        return $container;\n      };\n\n      return Select2;\n    });\n    S2.define('jquery-mousewheel', ['jquery'], function ($) {\n      // Used to shim jQuery.mousewheel for non-full builds.\n      return $;\n    });\n    /**\n     * Rebranding select2 to SUIselect2\n     * It does avoid conflicts with other(s) that include select2 manually\n     * @edited\n     */\n\n    S2.define('sui.select2', ['jquery', 'jquery-mousewheel', './select2/core', './select2/defaults', './select2/utils'], function ($, _, Select2, Defaults, Utils) {\n      // Rename function. @edited\n      if ($.fn.SUIselect2 == null) {\n        // All methods that should return the element\n        var thisMethods = ['open', 'close', 'destroy']; // Rename function. @edited\n\n        $.fn.SUIselect2 = function (options) {\n          options = options || {};\n\n          if (_typeof(options) === 'object') {\n            this.each(function () {\n              var instanceOptions = $.extend(true, {}, options);\n              var instance = new Select2($(this), instanceOptions);\n            });\n            return this;\n          } else if (typeof options === 'string') {\n            var ret;\n            var args = Array.prototype.slice.call(arguments, 1);\n            this.each(function () {\n              var instance = Utils.GetData(this, 'select2');\n\n              if (instance == null && window.console && console.error) {\n                // Rename function on error message. @edited\n                console.error('The SUIselect2(\\'' + options + '\\') method was called on an ' + 'element that is not using Select2.');\n              }\n\n              ret = instance[options].apply(instance, args);\n            }); // Check if we should be returning `this`\n\n            if (thisMethods.indexOf(options) > -1) {\n              return this;\n            }\n\n            return ret;\n          } else {\n            // Rename function on error message. @edited\n            throw new Error('Invalid arguments for SUIselect2: ' + options);\n          }\n        };\n      } // Rename function. @edited\n\n\n      if ($.fn.SUIselect2.defaults == null) {\n        $.fn.SUIselect2.defaults = Defaults; // Rename function. @edited\n      }\n\n      return Select2;\n    }); // Return the AMD loader configuration so it can be used outside of this file\n\n    return {\n      define: S2.define,\n      require: S2.require\n    };\n  }(); // Autoload the jQuery bindings\n  // We know that all of the modules exist above this, so we're safe\n\n\n  var select2 = S2.require('sui.select2'); // Rename function. @edited\n  // Hold the AMD module references on the jQuery function that was just loaded\n  // This allows Select2 to use the internal loader outside of this file, such\n  // as in the language files.\n  // jQuery.fn.select2.amd = S2;\n  // Return the Select2 instance for anyone who is importing it.\n\n\n  return select2;\n});","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n;\n\n(function ($) {\n  // Define global SUI object if it doesn't exist.\n  if ('object' !== _typeof(window.SUI)) {\n    window.SUI = {};\n  }\n\n  SUI.select = {};\n\n  SUI.select.escapeJS = function (string) {\n    // Create a temporary <div> element using jQuery and set the HTML content.\n    var div = $('<div>').html(string); // Get the text content of the <div> element and remove script tags\n\n    var text = div.text().replace(/<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi, ''); // Return the escaped text\n\n    return text;\n  };\n\n  SUI.select.formatIcon = function (data, container) {\n    var markup;\n    var label = SUI.select.escapeJS(data.text);\n    var icon = $(data.element).attr('data-icon');\n\n    if (!data.id) {\n      return label; // optgroup.\n    }\n\n    if ('undefined' !== typeof icon) {\n      markup = '<span class=\"sui-icon-' + icon.toLowerCase() + '\" aria-hidden=\"true\"></span> ' + label;\n    } else {\n      markup = label;\n    }\n\n    return markup;\n  };\n\n  SUI.select.formatIconSelection = function (data, container) {\n    var markup;\n    var label = SUI.select.escapeJS(data.text);\n    var icon = $(data.element).attr('data-icon');\n\n    if ('undefined' !== typeof icon) {\n      markup = '<span class=\"sui-icon-' + icon.toLowerCase() + '\" aria-hidden=\"true\"></span> ' + label;\n    } else {\n      markup = label;\n    }\n\n    return markup;\n  };\n\n  SUI.select.formatColor = function (data, container) {\n    var markup, border;\n    var label = SUI.select.escapeJS(data.text);\n    var color = $(data.element).attr('data-color');\n\n    if (!data.id) {\n      return label; // optgroup.\n    }\n\n    if ('undefined' !== typeof color) {\n      switch (color) {\n        case '#FFF':\n        case 'white':\n        case '#FFFFFF':\n          border = '#000';\n          break;\n\n        case '#FAFAFA':\n        case '#F8F8F8':\n        case '#F2F2F2':\n          border = '#333';\n          break;\n\n        default:\n          border = color;\n          break;\n      }\n\n      markup = '<span class=\"sui-color\" style=\"border-color: ' + border + '; background-color: ' + color + ';\" aria-hidden=\"true\"></span> ' + label;\n    } else {\n      markup = label;\n    }\n\n    return markup;\n  };\n\n  SUI.select.formatColorSelection = function (data, container) {\n    var markup;\n    var label = SUI.select.escapeJS(data.text);\n    var color = $(data.element).attr('data-color');\n\n    if ('undefined' !== typeof color) {\n      switch (color) {\n        case '#FFF':\n        case 'white':\n        case '#FFFFFF':\n          border = '#000';\n          break;\n\n        case '#FAFAFA':\n        case '#F8F8F8':\n        case '#F2F2F2':\n          border = '#333';\n          break;\n\n        default:\n          border = color;\n          break;\n      }\n\n      markup = '<span class=\"sui-color\" style=\"border-color: ' + border + '; background-color: ' + color + ';\" aria-hidden=\"true\"></span> ' + label;\n    } else {\n      markup = label;\n    }\n\n    return markup;\n  };\n\n  SUI.select.formatVars = function (data, container) {\n    var markup;\n    var label = SUI.select.escapeJS(data.text);\n    var content = $(data.element).val();\n\n    if (!data.id) {\n      return label; // optgroup.\n    }\n\n    if ('undefined' !== typeof content) {\n      markup = '<span class=\"sui-variable-name\">' + label + '</span><span class=\"sui-variable-value\">' + content + '</span> ';\n    } else {\n      markup = label;\n    }\n\n    return markup;\n  };\n\n  SUI.select.formatVarsSelection = function (data, container) {\n    var markup;\n    var label = SUI.select.escapeJS(data.text);\n    markup = '<span class=\"sui-icon-plus-circle sui-md\" aria-hidden=\"true\"></span>';\n    markup += '<span class=\"sui-screen-reader-text\">' + label + '</span>';\n    return markup;\n  };\n\n  SUI.select.init = function (select) {\n    var getParent = select.closest('.sui-modal-content'),\n        getParentId = getParent.attr('id'),\n        selectParent = getParent.length ? $('#' + getParentId) : $('.sui-2-12-24'),\n        hasSearch = 'true' === select.attr('data-search') ? 0 : -1,\n        isSmall = select.hasClass('sui-select-sm') ? 'sui-select-dropdown-sm' : '';\n    select.SUIselect2({\n      dropdownParent: selectParent,\n      minimumResultsForSearch: hasSearch,\n      dropdownCssClass: isSmall\n    });\n  };\n\n  SUI.select.initIcon = function (select) {\n    var getParent = select.closest('.sui-modal-content'),\n        getParentId = getParent.attr('id'),\n        selectParent = getParent.length ? $('#' + getParentId) : $('.sui-2-12-24'),\n        hasSearch = 'true' === select.attr('data-search') ? 0 : -1,\n        isSmall = select.hasClass('sui-select-sm') ? 'sui-select-dropdown-sm' : '';\n    select.SUIselect2({\n      dropdownParent: selectParent,\n      templateResult: SUI.select.formatIcon,\n      templateSelection: SUI.select.formatIconSelection,\n      escapeMarkup: function escapeMarkup(markup) {\n        return markup;\n      },\n      minimumResultsForSearch: hasSearch,\n      dropdownCssClass: isSmall\n    });\n  };\n\n  SUI.select.initColor = function (select) {\n    var getParent = select.closest('.sui-modal-content'),\n        getParentId = getParent.attr('id'),\n        selectParent = getParent.length ? $('#' + getParentId) : $('.sui-2-12-24'),\n        hasSearch = 'true' === select.attr('data-search') ? 0 : -1,\n        isSmall = select.hasClass('sui-select-sm') ? 'sui-select-dropdown-sm' : '';\n    select.SUIselect2({\n      dropdownParent: selectParent,\n      templateResult: SUI.select.formatColor,\n      templateSelection: SUI.select.formatColorSelection,\n      escapeMarkup: function escapeMarkup(markup) {\n        return markup;\n      },\n      minimumResultsForSearch: hasSearch,\n      dropdownCssClass: isSmall\n    });\n  };\n\n  SUI.select.initSearch = function (select) {\n    var getParent = select.closest('.sui-modal-content'),\n        getParentId = getParent.attr('id'),\n        selectParent = getParent.length ? $('#' + getParentId) : $('.sui-2-12-24'),\n        isSmall = select.hasClass('sui-select-sm') ? 'sui-select-dropdown-sm' : '';\n    select.SUIselect2({\n      dropdownParent: selectParent,\n      minimumInputLength: 2,\n      maximumSelectionLength: 1,\n      dropdownCssClass: isSmall\n    });\n  };\n\n  SUI.select.initVars = function (select) {\n    var getParent = select.closest('.sui-modal-content'),\n        getParentId = getParent.attr('id'),\n        selectParent = getParent.length ? $('#' + getParentId) : $('.sui-2-12-24'),\n        hasSearch = 'true' === select.attr('data-search') ? 0 : -1;\n    select.SUIselect2({\n      theme: 'vars',\n      dropdownParent: selectParent,\n      templateResult: SUI.select.formatVars,\n      templateSelection: SUI.select.formatVarsSelection,\n      escapeMarkup: function escapeMarkup(markup) {\n        return markup;\n      },\n      minimumResultsForSearch: hasSearch\n    }).on('select2:open', function () {\n      $(this).val(null);\n    });\n    select.val(null);\n  };\n\n  $('.sui-select').each(function () {\n    var select = $(this); // return if select2 already initalized for element.\n\n    if (select.hasClass('select2-hidden-accessible') || select.hasClass('select2')) {\n      return;\n    }\n\n    if ('icon' === select.data('theme')) {\n      SUI.select.initIcon(select);\n    } else if ('color' === select.data('theme')) {\n      SUI.select.initColor(select);\n    } else if ('search' === select.data('theme')) {\n      SUI.select.initSearch(select);\n    } else {\n      SUI.select.init(select);\n    }\n  });\n  $('.sui-variables').each(function () {\n    var select = $(this); // return if select2 already initalized for element.\n\n    if (select.hasClass('select2-hidden-accessible') || select.hasClass('select2')) {\n      return;\n    }\n\n    SUI.select.initVars(select);\n  });\n})(jQuery);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n(function ($) {\n  // Enable strict mode\n  'use strict'; // Define global SUI object if it doesn't exist\n\n  if ('object' !== _typeof(window.SUI)) {\n    window.SUI = {};\n  }\n\n  SUI.sideTabs = function (element) {\n    var $this = $(element),\n        $label = $this.parent('label'),\n        $data = $this.data('tab-menu'),\n        $wrapper = $this.closest('.sui-side-tabs'),\n        $alllabels = $wrapper.find('>.sui-tabs-menu .sui-tab-item'),\n        $allinputs = $alllabels.find('input'),\n        newContent;\n    $this.on('click', function (e) {\n      $alllabels.removeClass('active');\n      $allinputs.attr('checked', false);\n      $allinputs.attr('aria-selected', false);\n      $wrapper.find('> .sui-tabs-content > div[data-tab-content]').removeClass('active');\n      $label.addClass('active');\n      $this.attr('checked', true);\n      $this.attr('aria-selected', true);\n      newContent = $wrapper.find('.sui-tabs-content div[data-tab-content=\"' + $data + '\"]');\n\n      if (newContent.length) {\n        newContent.addClass('active');\n      }\n    });\n  };\n\n  $('.sui-2-12-24 .sui-side-tabs label.sui-tab-item input').each(function () {\n    SUI.sideTabs(this);\n  });\n})(jQuery);","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\n(function ($) {\n  // Enable strict mode.\n  'use strict'; // Define global SUI object if it doesn't exist.\n\n  if ('object' !== _typeof(window.SUI)) {\n    window.SUI = {};\n  }\n\n  SUI.suiTabs = function (config) {\n    var data;\n    var types = ['tab', 'pane'];\n    var type;\n    var groups = [];\n    var activeGroups = [];\n    var activeChildren = [];\n    var activeItems = [];\n    var indexGroup;\n    var indexItem;\n    var memory = [];\n\n    function init(options) {\n      var groupIndex;\n      var tabItems;\n      var itemIndex;\n      var hashId;\n      data = options;\n      setDefaults();\n      groups.tab = document.querySelectorAll(data.tabGroup);\n      groups.pane = document.querySelectorAll(data.paneGroup);\n\n      for (groupIndex = 0; groupIndex < groups.tab.length; groupIndex++) {\n        tabItems = groups.tab[groupIndex].children;\n\n        for (itemIndex = 0; itemIndex < tabItems.length; itemIndex++) {\n          tabItems[itemIndex].addEventListener('click', onClick.bind(this, groupIndex, itemIndex), false);\n          indexGroup = groupIndex;\n          indexItem = itemIndex;\n\n          if (window.location.hash) {\n            hashId = window.location.hash.replace(/[^\\w-_]/g, '');\n\n            if (hashId === tabItems[itemIndex].id) {\n              setNodes(groupIndex, itemIndex);\n            }\n          }\n        }\n      }\n    }\n\n    function onClick(groupIndex, itemIndex) {\n      setNodes(groupIndex, itemIndex);\n      setCallback();\n    }\n\n    function setNodes(groupIndex, itemIndex) {\n      var i;\n      indexGroup = groupIndex;\n      indexItem = itemIndex;\n\n      for (i = 0; i < types.length; i++) {\n        type = types[i];\n        setActiveGroup();\n        setActiveChildren();\n        setActiveItems();\n        putActiveClass();\n      }\n\n      memory[groupIndex] = [];\n      memory[groupIndex][itemIndex] = true;\n    }\n\n    function putActiveClass() {\n      var i;\n\n      for (i = 0; i < activeChildren[type].length; i++) {\n        activeChildren[type][i].classList.remove(data[type + 'Active']);\n      }\n\n      activeItems[type].classList.add(data[type + 'Active']);\n    }\n\n    function setDefaults() {\n      var i;\n\n      for (i = 0; i < types.length; i++) {\n        type = types[i];\n        setOption(type + 'Group', '[data-' + type + 's]');\n        setOption(type + 'Active', 'active');\n      }\n    }\n\n    function setOption(key, value) {\n      data = data || [];\n      data[key] = data[key] || value;\n    }\n\n    function setActiveGroup() {\n      activeGroups[type] = groups[type][indexGroup];\n    }\n\n    function setActiveChildren() {\n      activeChildren[type] = activeGroups[type].children;\n    }\n\n    function setActiveItems() {\n      activeItems[type] = activeChildren[type][indexItem];\n    }\n\n    function setCallback() {\n      if ('function' === typeof data.callback) {\n        data.callback(activeItems.tab, activeItems.pane);\n      }\n    }\n\n    init(config);\n    return;\n  };\n\n  SUI.tabsOverflow = function ($el) {\n    var tabs = $el.closest('.sui-tabs').find('[data-tabs], [role=\"tablist\"]'),\n        leftButton = $el.find('.sui-tabs-navigation--left'),\n        rightButton = $el.find('.sui-tabs-navigation--right');\n\n    function overflowing() {\n      if (tabs[0].scrollWidth > tabs.width()) {\n        if (0 === tabs.scrollLeft()) {\n          leftButton.addClass('sui-tabs-navigation--hidden');\n        } else {\n          leftButton.removeClass('sui-tabs-navigation--hidden');\n        }\n\n        reachedEnd(0);\n        return true;\n      } else {\n        leftButton.addClass('sui-tabs-navigation--hidden');\n        rightButton.addClass('sui-tabs-navigation--hidden');\n        return false;\n      }\n    }\n\n    overflowing();\n\n    function reachedEnd(offset) {\n      var newScrollLeft, width, scrollWidth;\n      newScrollLeft = tabs.scrollLeft() + offset;\n      width = tabs.outerWidth();\n      scrollWidth = tabs.get(0).scrollWidth;\n\n      if (scrollWidth - newScrollLeft <= width) {\n        rightButton.addClass('sui-tabs-navigation--hidden');\n      } else {\n        rightButton.removeClass('sui-tabs-navigation--hidden');\n      }\n    }\n\n    leftButton.on('click', function () {\n      rightButton.removeClass('sui-tabs-navigation--hidden');\n\n      if (0 >= tabs.scrollLeft() - 150) {\n        leftButton.addClass('sui-tabs-navigation--hidden');\n      }\n\n      tabs.animate({\n        scrollLeft: '-=150'\n      }, 400, function () {});\n      return false;\n    });\n    rightButton.on('click', function () {\n      leftButton.removeClass('sui-tabs-navigation--hidden');\n      reachedEnd(150);\n      tabs.animate({\n        scrollLeft: '+=150'\n      }, 400, function () {});\n      return false;\n    });\n    $(window).on('resize', function () {\n      overflowing();\n    });\n    tabs.on('scroll', function () {\n      overflowing();\n    });\n  };\n\n  SUI.tabs = function (config) {\n    var tablist = $('.sui-tabs > div[role=\"tablist\"]');\n    var data = config; // For easy reference.\n\n    var keys = {\n      end: 35,\n      home: 36,\n      left: 37,\n      up: 38,\n      right: 39,\n      down: 40,\n      \"delete\": 46,\n      enter: 13,\n      space: 32\n    }; // Add or substract depending on key pressed.\n\n    var direction = {\n      37: -1,\n      38: -1,\n      39: 1,\n      40: 1\n    }; // Prevent function from running if tablist does not exist.\n\n    if (!tablist.length) {\n      return;\n    } // Deactivate all tabs and tab panels.\n\n\n    function deactivateTabs(tabs, panels, inputs) {\n      tabs.removeClass('active');\n      tabs.attr('tabindex', '-1');\n      tabs.attr('aria-selected', false);\n      inputs.prop('checked', false);\n      panels.removeClass('active');\n      panels.prop('hidden', true);\n    } // Activate current tab panel.\n\n\n    function activateTab(tab) {\n      var tabs = $(tab).closest('[role=\"tablist\"]').find('[role=\"tab\"]'),\n          inputs = $(tab).closest('[role=\"tablist\"]').find('input[type=\"radio\"]'),\n          panels = $(tab).closest('.sui-tabs').find('> .sui-tabs-content > [role=\"tabpanel\"]'),\n          controls = $(tab).attr('aria-controls'),\n          input = $(tab).next('input[type=\"radio\"]'),\n          panel = $('#' + controls);\n      deactivateTabs(tabs, panels, inputs);\n      $(tab).addClass('active');\n      $(tab).removeAttr('tabindex');\n      $(tab).attr('aria-selected', true);\n      input.prop('checked', true);\n      panel.addClass('active');\n      panel.prop('hidden', false);\n    } // When a \"tablist\" aria-orientation is set to vertical,\n    // only up and down arrow should function.\n    // In all other cases only left and right should function.\n\n\n    function determineOrientation(event, index, tablist) {\n      var key = event.keyCode || event.which,\n          vertical = 'vertical' === $(tablist).attr('aria-orientation'),\n          proceed = false; // Check if aria orientation is set to vertical.\n\n      if (vertical) {\n        if (keys.up === key || keys.down === key) {\n          event.preventDefault();\n          proceed = true;\n        }\n      } else {\n        if (keys.left === key || keys.right === key) {\n          proceed = true;\n        }\n      }\n\n      if (true === proceed) {\n        switchTabOnArrowPress(event, index);\n      }\n    } // Either focus the next, previous, first, or last tab\n    // depending on key pressed.\n\n\n    function switchTabOnArrowPress(event, index) {\n      var pressed, target, tabs;\n      pressed = event.keyCode || event.which;\n\n      if (direction[pressed]) {\n        target = event.target;\n        tabs = $(target).closest('[role=\"tablist\"]').find('> [role=\"tab\"]');\n\n        if (undefined !== index) {\n          if (tabs[index + direction[pressed]]) {\n            tabs[index + direction[pressed]].focus();\n          } else if (keys.left === pressed || keys.up === pressed) {\n            tabs[tabs.length - 1].focus();\n          } else if (keys.right === pressed || keys.down === pressed) {\n            tabs[0].focus();\n          }\n        }\n      }\n    } // Callback function.\n\n\n    function setCallback(currentTab) {\n      var tab = $(currentTab),\n          controls = tab.attr('aria-controls'),\n          panel = $('#' + controls);\n\n      if ('function' === typeof data.callback) {\n        data.callback(tab, panel);\n      }\n    } // When a tab is clicked, activateTab is fired to activate it.\n\n\n    function clickEventListener(event) {\n      var tab = event.target;\n      activateTab(tab);\n\n      if (undefined !== data && 'undefined' !== data) {\n        setCallback(tab);\n      }\n\n      event.preventDefault();\n      event.stopPropagation();\n    }\n\n    function keydownEventListener(event, index, tablist) {\n      var key = event.keyCode || event.which;\n\n      switch (key) {\n        case keys.end:\n        case keys.home:\n          event.preventDefault();\n          break;\n        // Up and down are in keydown\n        // because we need to prevent page scroll.\n\n        case keys.up:\n        case keys.down:\n          determineOrientation(event, index, tablist);\n          break;\n      }\n    }\n\n    function keyupEventListener(event, index, tablist) {\n      var key = event.keyCode || event.which;\n\n      switch (key) {\n        case keys.left:\n        case keys.right:\n          determineOrientation(event, index, tablist);\n          break;\n\n        case keys.enter:\n        case keys.space:\n          activateTab(event);\n          break;\n      }\n    }\n\n    function init() {\n      var tabgroup = tablist.closest('.sui-tabs'); // Run the function for each group of tabs to prevent conflicts\n      // when having child tabs.\n\n      tabgroup.each(function () {\n        var tabs, index;\n        tabgroup = $(this);\n        tablist = tabgroup.find('> [role=\"tablist\"]');\n        tabs = tablist.find('> [role=\"tab\"]'); // Trigger events on click.\n\n        tabs.on('click', function (e) {\n          clickEventListener(e); // Trigger events when pressing key.\n        }).on('keydown', function (e) {\n          index = $(this).index();\n          keydownEventListener(e, index, tablist); // Trigger events when releasing key.\n        }).on('keyup', function (e) {\n          index = $(this).index();\n          keyupEventListener(e, index, tablist);\n        });\n      });\n    }\n\n    init();\n    return this;\n  };\n\n  if (0 !== $('.sui-2-12-24 .sui-tabs').length) {\n    // Support tabs new markup.\n    SUI.tabs(); // Support legacy tabs.\n\n    SUI.suiTabs();\n    $('.sui-2-12-24 .sui-tabs-navigation').each(function () {\n      SUI.tabsOverflow($(this));\n    });\n  }\n})(jQuery);","// AjaxQ jQuery Plugin\n// Copyright (c) 2012 Foliotek Inc.\n// MIT License\n// https://github.com/Foliotek/ajaxq\n// Uses CommonJS, AMD or browser globals to create a jQuery plugin.\n\n(function (factory) {\n    if (typeof define === 'function' && define.amd) {\n        // AMD. Register as an anonymous module.\n        define(['jquery'], factory);\n    } else if (typeof module === 'object' && module.exports) {\n        // Node/CommonJS\n        module.exports = factory(require('jquery'));\n    } else {\n        // Browser globals\n        factory(jQuery);\n    }\n}(function ($) {\n    var queues = {};\n    var activeReqs = {};\n\n    // Register an $.ajaxq function, which follows the $.ajax interface, but allows a queue name which will force only one request per queue to fire.\n    // opts can be the regular $.ajax settings plainObject, or a callback returning the settings object, to be evaluated just prior to the actual call to $.ajax.\n    $.ajaxq = function(qname, opts) {\n\n        if (typeof opts === \"undefined\") {\n            throw (\"AjaxQ: queue name is not provided\");\n        }\n\n        // Will return a Deferred promise object extended with success/error/callback, so that this function matches the interface of $.ajax\n        var deferred = $.Deferred(),\n            promise = deferred.promise();\n\n        promise.success = promise.done;\n        promise.error = promise.fail;\n        promise.complete = promise.always;\n\n        // Check whether options are to be evaluated at call time or not.\n        var deferredOpts = typeof opts === 'function';\n        // Create a deep copy of the arguments, and enqueue this request.\n        var clonedOptions = !deferredOpts ? $.extend(true, {}, opts) : null;\n        enqueue(function() {\n            // Send off the ajax request now that the item has been removed from the queue\n            var jqXHR = $.ajax.apply(window, [deferredOpts ? opts() : clonedOptions]);\n\n            // Notify the returned deferred object with the correct context when the jqXHR is done or fails\n            // Note that 'always' will automatically be fired once one of these are called: http://api.jquery.com/category/deferred-object/.\n            jqXHR.done(function() {\n                deferred.resolve.apply(this, arguments);\n            });\n            jqXHR.fail(function() {\n                deferred.reject.apply(this, arguments);\n            });\n\n            jqXHR.always(dequeue); // make sure to dequeue the next request AFTER the done and fail callbacks are fired\n\n            return jqXHR;\n        });\n\n        return promise;\n\n\n        // If there is no queue, create an empty one and instantly process this item.\n        // Otherwise, just add this item onto it for later processing.\n        function enqueue(cb) {\n            if (!queues[qname]) {\n                queues[qname] = [];\n                var xhr = cb();\n                activeReqs[qname] = xhr;\n            }\n            else {\n                queues[qname].push(cb);\n            }\n        }\n\n        // Remove the next callback from the queue and fire it off.\n        // If the queue was empty (this was the last item), delete it from memory so the next one can be instantly processed.\n        function dequeue() {\n            if (!queues[qname]) {\n                return;\n            }\n            var nextCallback = queues[qname].shift();\n            if (nextCallback) {\n                var xhr = nextCallback();\n                activeReqs[qname] = xhr;\n            }\n            else {\n                delete queues[qname];\n                delete activeReqs[qname];\n            }\n        }\n    };\n\n    // Register a $.postq and $.getq method to provide shortcuts for $.get and $.post\n    // Copied from jQuery source to make sure the functions share the same defaults as $.get and $.post.\n    $.each( [ \"getq\", \"postq\" ], function( i, method ) {\n        $[ method ] = function( qname, url, data, callback, type ) {\n\n            if ( $.isFunction( data ) ) {\n                type = type || callback;\n                callback = data;\n                data = undefined;\n            }\n\n            return $.ajaxq(qname, {\n                type: method === \"postq\" ? \"post\" : \"get\",\n                url: url,\n                data: data,\n                success: callback,\n                dataType: type\n            });\n        };\n    });\n\n    var isQueueRunning = function(qname) {\n        return (queues.hasOwnProperty(qname) && queues[qname].length > 0) || activeReqs.hasOwnProperty(qname);\n    };\n\n    var isAnyQueueRunning = function() {\n        for (var i in queues) {\n            if (isQueueRunning(i)) return true;\n        }\n        return false;\n    };\n\n    $.ajaxq.isRunning = function(qname) {\n        if (qname) return isQueueRunning(qname);\n        else return isAnyQueueRunning();\n    };\n\n    $.ajaxq.getActiveRequest = function(qname) {\n        if (!qname) throw (\"AjaxQ: queue name is required\");\n\n        return activeReqs[qname];\n    };\n\n    $.ajaxq.abort = function(qname) {\n        if (!qname) throw (\"AjaxQ: queue name is required\");\n        \n        var current = $.ajaxq.getActiveRequest(qname);\n        delete queues[qname];\n        delete activeReqs[qname];\n        if (current) current.abort();\n    };\n\n    $.ajaxq.clear = function(qname) {\n        if (!qname) {\n            for (var i in queues) {\n                if (queues.hasOwnProperty(i)) {\n                    queues[i] = [];\n                }\n            }\n        }\n        else {\n            if (queues[qname]) {\n                queues[qname] = [];\n            }\n        }\n    };\n\n}));\n",";// noinspection JSUnusedLocalSymbols\n(function ($, window, document, undefined) {\n\n\t\"use strict\";\n\n\t// Create the defaults once\n\tvar pluginName = \"wpmudevDashboardAdminCommon\";\n\n\t// The actual plugin constructor\n\tfunction wpmudevDashboardAdminCommon(element, options) {\n\t\tthis.element      = element;\n\t\tthis.$el          = $(this.element);\n\t\tthis.init();\n\t}\n\n\t// Avoid Plugin.prototype conflicts\n\t$.extend(wpmudevDashboardAdminCommon.prototype, {\n\t\tinit: function () {\n\t\t\tthis.showAlertNotice();\n\t\t\tthis.showUpgradeHighlightsModal();\n\t\t\tthis.initSelectSearch();\n\t\t},\n\t\tshowAlertNotice() {\n\t\t\tvar container = $( '.sui-common-notice-alert' ),\n\t\t\tnoticeID      = '',\n\t\t\tmessage       = '',\n\t\t\tnoticeOptions = {};\n\t\t\tif ( ! container.length ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tnoticeOptions.dismiss        = {};\n\t\t\tnoticeOptions.autoclose      = {};\n\t\t\tnoticeOptions.type           = container.data( 'notice-type' );\n\t\t\tnoticeOptions.dismiss.show   = container.data( 'show-dismiss' );\n\t\t\tnoticeOptions.autoclose.show = false;\n\t\t\tmessage                      = container.data( 'notice-msg' );\n\t\t\tnoticeID                     = container.attr( 'id' );\n\n\t\t\tif ( 'success' === noticeOptions.type ) {\n\t\t\t\tnoticeOptions.icon = 'check-tick';\n\t\t\t}\n\n\t\t\tSUI.openNotice( noticeID, message, noticeOptions );\n\t\t},\n\n\t\t/**\n\t\t * Show upgrade highlights modal.\n\t\t *\n\t\t * If modal is available, open it.\n\t\t *\n\t\t * @since 4.11\n\t\t */\n\t\tshowUpgradeHighlightsModal() {\n\t\t\t// Get the modal element.\n\t\t\tvar modal = $('#upgrade-highlights');\n\t\t\tif (modal.length > 0) {\n\t\t\t\t// Open the modal.\n\t\t\t\tSUI.openModal('upgrade-highlights', 'wpmudev-dashboard-header', null, true, false);\n\n\t\t\t\t// On close button click.\n\t\t\t\tmodal.find('.modal-close-button').on('click', function () {\n\t\t\t\t\tvar data = {\n\t\t\t\t\t\taction: 'wdp-dismiss-highlights',\n\t\t\t\t\t\thash: $('#highlight_modal_hash').val(),\n\t\t\t\t\t};\n\n\t\t\t\t\t// Send request.\n\t\t\t\t\t$.post(window.ajaxurl, data);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Initialize search input.\n\t\t *\n\t\t * @since 4.0\n\t\t * @since 4.11 Enabled for multiple inputs.\n\t\t */\n\t\tinitSelectSearch: function () {\n\t\t\tvar self = this;\n\n\t\t\tthis.$el.find('.wpmudev-search').each(function(){\n\t\t\t\tvar search = $(this);\n\t\t\t\tvar hash = search.data('hash');\n\n\t\t\t\tvar searchAction = search.data('search-action');\n\t\t\t\tvar searchParent = search.data('search-parent');\n\t\t\t\tvar languageSearching = search.data('language-searching');\n\t\t\t\tvar languageNoresults = search.data('language-noresults');\n\t\t\t\tvar languageErrorLoading = search.data('language-error-load');\n\t\t\t\tvar languageInputTooShort = search.data('language-input-tooshort');\n\t\t\t\tvar languageInputTooShort = search.data('language-input-tooshort');\n\n\t\t\t\tsearch.SUIselect2({\n\t\t\t\t\tdropdownCssClass: 'sui-select-dropdown',\n\t\t\t\t\tdropdownParent: searchParent ? self.$el.find('#' + searchParent) : null,\n\t\t\t\t\tajax: {\n\t\t\t\t\t\turl: window.ajaxurl,\n\t\t\t\t\t\ttype: \"POST\",\n\t\t\t\t\t\tdata: function (params) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\taction: searchAction,\n\t\t\t\t\t\t\t\thash: hash,\n\t\t\t\t\t\t\t\tq: params.term,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t},\n\t\t\t\t\t\tprocessResults: function (data) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tresults: data.data\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\ttemplateResult: function (result) {\n\t\t\t\t\t\tif (typeof result.id !== 'undefined' && typeof result.label !== 'undefined') {\n\t\t\t\t\t\t\treturn $(result.label);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn result.text;\n\t\t\t\t\t},\n\t\t\t\t\ttemplateSelection: function (result) {\n\t\t\t\t\t\treturn result.display || result.text;\n\t\t\t\t\t},\n\t\t\t\t\tlanguage: {\n\t\t\t\t\t\tsearching: function () {\n\t\t\t\t\t\t\treturn languageSearching;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnoResults: function () {\n\t\t\t\t\t\t\treturn languageNoresults;\n\t\t\t\t\t\t},\n\t\t\t\t\t\terrorLoading: function () {\n\t\t\t\t\t\t\treturn languageErrorLoading;\n\t\t\t\t\t\t},\n\t\t\t\t\t\tinputTooShort: function () {\n\t\t\t\t\t\t\treturn languageInputTooShort;\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// A really lightweight plugin wrapper around the constructor,\n\t// preventing against multiple instantiations\n\t$.fn[pluginName] = function (options) {\n\t\treturn this.each(function () {\n\t\t\tif (!$.data(this, pluginName)) {\n\t\t\t\t$.data(this, pluginName, new wpmudevDashboardAdminCommon(this, options));\n\t\t\t}\n\t\t});\n\t};\n\n})(jQuery, window, document);\n","// the semi-colon before function invocation is a safety net against concatenated\n// scripts and/or other plugins which may not be closed properly.\n;// noinspection JSUnusedLocalSymbols\n(function ($, window, document, undefined) {\n\n\t\"use strict\";\n\n\t// undefined is used here as the undefined global variable in ECMAScript 3 is\n\t// mutable (ie. it can be changed by someone else). undefined isn't really being\n\t// passed in so we can ensure the value of it is truly undefined. In ES5, undefined\n\t// can no longer be modified.\n\n\t// window and document are passed through as local variables rather than global\n\t// as this (slightly) quickens the resolution process and can be more efficiently\n\t// minified (especially when both are regularly referenced in your plugin).\n\n\t// Create the defaults once\n\tvar pluginName = \"wpmudevDashboardAdminDashboardPage\";\n\n\t// The actual plugin constructor\n\tfunction wpmudevDashboardAdminDashboardPage(element, options) {\n\t\tthis.element = element;\n\t\tthis.$el = $(this.element);\n\t\tthis.pluginList = [];\n\t\tthis.upgradeNonce = false;\n\t\tthis.redirectHash = false;\n\t\tthis.upgradeQueName = 'DashUpgradeQue';\n\t\tthis.isFailed = false;\n\t\tthis.upgradedPlugins = [];\n\t\tthis.init();\n\t}\n\n\t// Avoid Plugin.prototype conflicts\n\t$.extend(wpmudevDashboardAdminDashboardPage.prototype, {\n\t\tinit: function () {\n\t\t\tthis.attachEvents();\n\t\t\tthis.initUpgrading();\n\t\t},\n\n\t\tattachEvents: function () {\n\t\t\tthis.$el.on('click', '.sui-notice-top .sui-notice-dismiss', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\t$(this).closest('.sui-notice-top').stop().slideUp('slow');\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\tthis.$el.on('click', '.dashui-expired-box .dashui-expired-box__refresh', function (e) {\n\t\t\t\t$(this).addClass('sui-button-onload-text');\n\t\t\t});\n\t\t},\n\n\t\tinitUpgrading: function () {\n\t\t\tvar self = this;\n\t\t\t// sync plugins must exist\n\t\t\tif (!this.$el.find('.js-sync-plugins').length) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar pluginListEl = this.$el.find('ul.js-sync-plugin-list');\n\n\t\t\tpluginListEl.find('li.js-upgrading').each(function () {\n\t\t\t\tvar data = $(this).data();\n\t\t\t\tif (!self.upgradeNonce) {\n\t\t\t\t\tself.upgradeNonce = data.hash;\n\t\t\t\t}\n\t\t\t\tif (!self.redirectHash) {\n\t\t\t\t\tself.redirectHash = data.redirecth;\n\t\t\t\t}\n\t\t\t\tself.pluginList.push(data.project);\n\t\t\t});\n\n\t\t\tthis.upgradePlugins();\n\t\t},\n\n\t\tupgradePlugins: function () {\n\t\t\tvar self = this;\n\t\t\tvar i;\n\t\t\tfor (i = 0; i < this.pluginList.length; i++) {\n\t\t\t\tvar project_id = self.pluginList[i];\n\t\t\t\tthis.addUpgradeAjaxQue(project_id);\n\t\t\t}\n\t\t},\n\n\t\taddUpgradeAjaxQue: function (project_id) {\n\t\t\tvar self = this;\n\t\t\t$.ajaxq(this.upgradeQueName, {\n\t\t\t\ttype: \"POST\",\n\t\t\t\turl: window.ajaxurl,\n\t\t\t\tdata: {\n\t\t\t\t\taction: 'wdp-project-upgrade-free',\n\t\t\t\t\thash: self.upgradeNonce,\n\t\t\t\t\tpid: project_id,\n\t\t\t\t},\n\t\t\t\tsuccess: function (response) {\n\t\t\t\t\tif (response.success) {\n\t\t\t\t\t\tself.$el.find('ul.js-sync-plugin-list li.js-upgrading[data-project=' + project_id + ']').addClass('sui-hidden');\n\t\t\t\t\t\tself.$el.find('ul.js-sync-plugin-list li.js-upgraded[data-project=' + project_id + ']').removeClass('sui-hidden');\n\t\t\t\t\t\tself.upgradedPlugins.push(project_id);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (response.data && response.data.message) {\n\t\t\t\t\t\t\tconsole.log(response.data.message);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tself.$el.find('ul.js-sync-plugin-list li.js-upgrading[data-project=' + project_id + ']').addClass('sui-hidden');\n\t\t\t\t\t\tself.$el.find('ul.js-sync-plugin-list li.js-failed-upgrading[data-project=' + project_id + ']').removeClass('sui-hidden');\n\t\t\t\t\t\tself.isFailed = true;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: function (error) {\n\t\t\t\t\tself.$el.find('ul.js-sync-plugin-list li.js-upgrading[data-project=' + project_id + ']').addClass('sui-hidden');\n\t\t\t\t\tself.$el.find('ul.js-sync-plugin-list li.js-failed-upgrading[data-project=' + project_id + ']').removeClass('sui-hidden');\n\t\t\t\t\tself.isFailed = true;\n\t\t\t\t},\n\t\t\t\tcomplete: function () {\n\t\t\t\t\tif (!$.ajaxq.isRunning(self.upgradeQueName)) {\n\t\t\t\t\t\tself.redirectToDash();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\n\t\tredirectToDash: function () {\n\t\t\tvar self = this;\n\t\t\t$.ajaxq('redirectToDash', {\n\t\t\t\ttype: \"POST\",\n\t\t\t\turl: window.ajaxurl,\n\t\t\t\tdata: {\n\t\t\t\t\taction: 'wdp-login-success',\n\t\t\t\t\tpid: self.upgradedPlugins,\n\t\t\t\t\thash: self.redirectHash\n\t\t\t\t},\n\t\t\t\tsuccess: function (response) {\n\t\t\t\t\tif (response.data.redirect) {\n\t\t\t\t\t\twindow.location.href = response.data.redirect;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t});\n\n\t// A really lightweight plugin wrapper around the constructor,\n\t// preventing against multiple instantiations\n\t$.fn[pluginName] = function (options) {\n\t\treturn this.each(function () {\n\t\t\tif (!$.data(this, pluginName)) {\n\t\t\t\t$.data(this, pluginName, new wpmudevDashboardAdminDashboardPage(this, options));\n\t\t\t}\n\t\t});\n\t};\n\n})(jQuery, window, document);\n","// the semi-colon before function invocation is a safety net against concatenated\n// scripts and/or other plugins which may not be closed properly.\n;// noinspection JSUnusedLocalSymbols\n(function ($, window, document, undefined) {\n\n\t\"use strict\";\n\n\t// undefined is used here as the undefined global variable in ECMAScript 3 is\n\t// mutable (ie. it can be changed by someone else). undefined isn't really being\n\t// passed in so we can ensure the value of it is truly undefined. In ES5, undefined\n\t// can no longer be modified.\n\n\t// window and document are passed through as local variables rather than global\n\t// as this (slightly) quickens the resolution process and can be more efficiently\n\t// minified (especially when both are regularly referenced in your plugin).\n\n\t// Create the defaults once\n\tvar pluginName = \"wpmudevDashboardAdminLoginPage\";\n\n\t// The actual plugin constructor\n\tfunction wpmudevDashboardAdminLoginPage(element, options) {\n\t\tthis.element            = element;\n\t\tthis.$el                = $(this.element);\n\t\tthis.animSyncInterval   = null;\n\t\tthis.numAnimateSync     = 0;\n\t\tthis.currentAnimateSync = 1;\n\t\tthis.emailInput         = this.$el.find('.js-wpmudev-login-form').find('#dashboard-email');\n\t\tthis.passwordInput      = this.$el.find('.js-wpmudev-login-form').find('#dashboard-password');\n\t\tthis.init();\n\t}\n\n\t// Avoid Plugin.prototype conflicts\n\t$.extend(wpmudevDashboardAdminLoginPage.prototype, {\n\t\tinit: function () {\n\t\t\tthis.initLoginButtonState();\n\t\t\tthis.attachEvents();\n\t\t\tthis.animateSync();\n\t\t\tthis.initiateHubSync();\n\t\t\tthis.storeSingleSignOnStatus();\n\t\t},\n\t\tinitLoginButtonState: function () {\n\t\t\tvar self = this;\n\t\t\tthis.$el.find('.js-login-form-submit-button').removeAttr('disabled');\n\t\t\tif (this.$el.find('.js-login-form-submit-button').length) {\n\t\t\t\tvar email    = this.emailInput.val();\n\t\t\t\tvar password = this.passwordInput.val();\n\n\t\t\t\temail    = $.trim(email);\n\t\t\t\tpassword = $.trim(password);\n\t\t\t\tif (email === '' || !self.isValidEmail(email) || password === '') {\n\t\t\t\t\tthis.$el.find('.js-login-form-submit-button').attr('disabled', 'disabled');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tattachEvents: function () {\n\t\t\tvar self = this;\n\n\t\t\t// Handle team selection.\n\t\t\tthis.$el.on('change', 'input[type=radio][name=\"team_id\"]', function (e) {\n\t\t\t\tif (this.value === '') {\n\t\t\t\t\t$('#dashui-team-select-submit').prop('disabled', true)\n\t\t\t\t} else {\n\t\t\t\t\t$('#dashui-team-select-submit').prop('disabled', false)\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// Handle team select form submit.\n\t\t\tthis.$el.on('click', '#dashui-team-select-submit', function (e) {\n\t\t\t\t$(this).addClass('sui-button-onload')\n\t\t\t});\n\n\t\t\tthis.$el.on('click', '.sui-tabs div[data-tabs=\"\"] div', function () {\n\t\t\t\tvar tabWrapper = $(this).closest('.sui-tabs');\n\t\t\t\tvar index      = $(this).data('index');\n\n\t\t\t\ttabWrapper.find('div[data-tabs=\"\"] div').removeClass('active');\n\t\t\t\t$(this).addClass('active');\n\n\t\t\t\ttabWrapper.find('div[data-panes=\"\"] div').removeClass('active');\n\t\t\t\ttabWrapper.find('div[data-panes=\"\"] div[data-index=\"' + index + '\"]').addClass('active');\n\t\t\t});\n\n\t\t\t// on Submit Login\n\t\t\tthis.$el.on('submit', 'form.js-wpmudev-login-form', function () {\n\t\t\t\t$(this).find('#dashboard-email').trigger('keyup');\n\t\t\t\t$(this).find('#dashboard-password').trigger('keyup');\n\t\t\t\t$(this).find('.js-login-form-submit-button').trigger('sso:save');\n\n\t\t\t\t$(this).find('.js-login-form-submit-button').addClass('sui-button-onload');\n\n\t\t\t\tvar email    = self.emailInput.val();\n\t\t\t\tvar password = self.passwordInput.val();\n\n\t\t\t\temail    = $.trim(email);\n\t\t\t\tpassword = $.trim(password);\n\n\n\t\t\t\tif (email === '' || !self.isValidEmail(email) || password === '') {\n\t\t\t\t\t$(this).find('.js-login-form-submit-button').removeClass('sui-button-onload');\n\t\t\t\t\t$(this).find('.js-login-form-submit-button').attr('disabled', 'disabled');\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\t\tthis.$el.on('keyup', 'form.js-wpmudev-login-form #dashboard-email', function () {\n\t\t\t\t$(this).closest('.sui-form-field').removeClass('sui-form-field-error');\n\t\t\t\t$(this).closest('.sui-form-field').find('.js-required-message').addClass('sui-hidden');\n\t\t\t\t$(this).closest('.sui-form-field').find('.js-valid-email-message').addClass('sui-hidden');\n\t\t\t\tvar email = $.trim($(this).val());\n\t\t\t\tif (email === '') {\n\t\t\t\t\t$(this).closest('.sui-form-field').addClass('sui-form-field-error');\n\t\t\t\t\t$(this).closest('.sui-form-field').find('.js-required-message').removeClass('sui-hidden');\n\t\t\t\t} else if (!self.isValidEmail(email)) {\n\t\t\t\t\t$(this).closest('.sui-form-field').addClass('sui-form-field-error');\n\t\t\t\t\t$(this).closest('.sui-form-field').find('.js-valid-email-message').removeClass('sui-hidden');\n\t\t\t\t}\n\n\t\t\t\tself.initLoginButtonState();\n\t\t\t});\n\n\t\t\tthis.$el.on('keyup', 'form.js-wpmudev-login-form #dashboard-password', function () {\n\t\t\t\t$(this).closest('.sui-form-field').removeClass('sui-form-field-error');\n\t\t\t\t$(this).closest('.sui-form-field').find('.js-required-message').addClass('sui-hidden');\n\t\t\t\tvar password = $.trim($(this).val());\n\t\t\t\tif (password === '') {\n\t\t\t\t\t$(this).closest('.sui-form-field').addClass('sui-form-field-error');\n\t\t\t\t\t$(this).closest('.sui-form-field').find('.js-required-message').removeClass('sui-hidden');\n\t\t\t\t}\n\n\t\t\t\tself.initLoginButtonState();\n\t\t\t});\n\n\t\t},\n\t\tisValidEmail: function (email) {\n\t\t\t//simple email validation contains @str\n\t\t\tvar regex = /.+\\@.+/g;\n\t\t\tvar match = email.match(regex);\n\t\t\treturn match && match.length;\n\t\t},\n\t\tanimateSync: function () {\n\t\t\tvar self            = this;\n\t\t\tvar anims           = this.$el.find('.animate-sync');\n\t\t\tthis.numAnimateSync = anims.length;\n\n\t\t\tthis.animSyncInterval = setInterval(function () {\n\t\t\t\tvar nextAnimateItem = self.currentAnimateSync + 1;\n\t\t\t\tif (nextAnimateItem > self.numAnimateSync) {\n\t\t\t\t\tnextAnimateItem = 1;\n\t\t\t\t}\n\t\t\t\tself.$el.find('.animate-sync').addClass('sui-hidden');\n\t\t\t\tself.$el.find('.animate-sync.animate-' + nextAnimateItem).removeClass('sui-hidden');\n\t\t\t\tself.currentAnimateSync = nextAnimateItem;\n\n\t\t\t}, 5000); // 5 seconds\n\t\t},\n\t\tinitiateHubSync: function () {\n\t\t\tvar self    = this;\n\t\t\tvar wrapper = this.$el.find('.js-login-sync');\n\n\t\t\tif (wrapper.length) {\n\t\t\t\tvar data     = $(wrapper).data();\n\t\t\t\tvar ajaxData = {\n\t\t\t\t\taction: 'wdp-hub-sync',\n\t\t\t\t\thash: data.hash,\n\t\t\t\t\tkey: data.key\n\t\t\t\t};\n\n\t\t\t\t$.post(\n\t\t\t\t\twindow.ajaxurl,\n\t\t\t\t\tajaxData,\n\t\t\t\t\tfunction (response) {\n\t\t\t\t\t\tif (response.data && response.data.redirect) {\n\t\t\t\t\t\t\twindow.location.href = response.data.redirect;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\twindow.location.href = data.dashurl;\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t'json'\n\t\t\t\t).always(function () {\n\t\t\t\t\t// clearInterval(self.animSyncInterval);\n\t\t\t\t}).fail(function () {\n\t\t\t\t\twindow.location.href = data.dashurl;\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tstoreSingleSignOnStatus: function() {\n\t\t\tvar self    = this;\n\t\t\tvar wrapper = this.$el.find('#enable-sso');\n\n\t\t\tthis.$el.on('sso:save', '.js-login-form-submit-button', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\t$(this).addClass('sui-button-onload');\n\t\t\t\tvar data = {};\n\t\t\t\tdata.action = 'wdp-sso-status';\n\t\t\t\tdata.hash = $(wrapper).data('nonce');\n\t\t\t\tdata.sso = 0;\n\t\t\t\tdata.ssoUserId = $(wrapper).data('userid');\n\t\t\t\tif ($(wrapper).is(':checked')) {\n\t\t\t\t\tdata.sso = $(wrapper).val();\n\t\t\t\t}\n\n\t\t\t\t$.post(\n\t\t\t\t\twindow.ajaxurl,\n\t\t\t\t\tdata,\n\t\t\t\t\tnull,\n\t\t\t\t\t'json'\n\t\t\t\t);\n\t\t\t});\n\n\t\t},\n\n\t});\n\n\t// A really lightweight plugin wrapper around the constructor,\n\t// preventing against multiple instantiations\n\t$.fn[pluginName] = function (options) {\n\t\treturn this.each(function () {\n\t\t\tif (!$.data(this, pluginName)) {\n\t\t\t\t$.data(this, pluginName, new wpmudevDashboardAdminLoginPage(this, options));\n\t\t\t}\n\t\t});\n\t};\n\n})(jQuery, window, document);\n","// the semi-colon before function invocation is a safety net against concatenated\n// scripts and/or other plugins which may not be closed properly.\n// noinspection JSUnusedLocalSymbols\n(function ($, window, document, undefined) {\n\t'use strict';\n\n\t// undefined is used here as the undefined global variable in ECMAScript 3 is\n\t// mutable (ie. it can be changed by someone else). undefined isn't really being\n\t// passed in so we can ensure the value of it is truly undefined. In ES5, undefined\n\t// can no longer be modified.\n\n\t// window and document are passed through as local variables rather than global\n\t// as this (slightly) quickens the resolution process and can be more efficiently\n\t// minified (especially when both are regularly referenced in your plugin).\n\n\t// Create the defaults once\n\tvar pluginName = 'wpmudevDashboardAdminPluginsPage';\n\n\t// The actual plugin constructor\n\tfunction wpmudevDashboardAdminPluginsPage(element, options) {\n\t\tthis.element = element;\n\t\tthis.$el = $(this.element);\n\t\tthis.plugins = [];\n\t\tthis.limitPerPage = 10;\n\t\tthis.skipPluginIds = [];\n\t\tthis.page = 1;\n\t\tthis.currentPluginsList = [];\n\t\tthis.ftpDialog = null;\n\t\tthis.pluginDialogs = {};\n\t\tthis.pluginAfterInstallDialogs = {};\n\t\tthis.actionEnabled = true;\n\t\tthis.currentFilter = 'all';\n\t\tthis.bulkPluginsList = {};\n\t\tthis.bulkDialog = null;\n\t\tthis.bulkActionErrors = [];\n\t\tthis.bulkPluginAction = '';\n\t\tthis.bulkAjaxQueueName = 'bulk-ajax-queue';\n\t\tthis.bulkActionProgress = 0;\n\t\tthis.isSearching = false;\n\t\tthis.topPluginIds = [];\n\t\tthis.newReleasePluginIds = [];\n\t\tthis.init();\n\t}\n\n\t// Avoid Plugin.prototype conflicts\n\t$.extend(wpmudevDashboardAdminPluginsPage.prototype, {\n\t\tinit: function () {\n\t\t\tthis.maybeShowFtpDialog();\n\t\t\tvar self = this;\n\t\t\tthis.plugins = [];\n\t\t\tthis.$el.find('.js-plugin-box').each(function () {\n\t\t\t\tvar name = $(this).data('name');\n\t\t\t\tvar info = $(this).data('info');\n\t\t\t\tvar pluginData = $(this).data();\n\t\t\t\tpluginData['searchable'] = name + ' ' + info;\n\t\t\t\tself.plugins.push(pluginData);\n\t\t\t});\n\n\t\t\tthis.displayPlugins(this.plugins, true);\n\t\t\tthis.attachEvents();\n\n\t\t\tif (this.isChangelogHash() && !this.isUpdateHash()) {\n\t\t\t\twindow.location.hash = '';\n\t\t\t}\n\n\t\t\t//check if hash is coming form dashborad\n\t\t\t//and if is an update hash trigger hashchage\n\t\t\tif (this.isUpdateHash()) {\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t$(window).trigger('hashchange');\n\t\t\t\t}, 100);\n\t\t\t} else {\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t$(window).trigger('hashchange');\n\t\t\t\t}, 3000);\n\t\t\t}\n\n\t\t\t// Show notifications if required.\n\t\t\tthis.showSuccessNotification();\n\t\t},\n\n\t\t/**\n\t\t * Show success notification if required.\n\t\t *\n\t\t * @since 4.11.4\n\t\t */\n\t\tshowSuccessNotification: function () {\n\t\t\t// Current url.\n\t\t\tlet url = window.location.href;\n\n\t\t\t// Remove success action.\n\t\t\tif (url.match(/success-action=[^&]+/)) {\n\t\t\t\t// Remove it.\n\t\t\t\turl = url.replace(/success-action=[^&]+/, '');\n\n\t\t\t\t// Change url.\n\t\t\t\twindow.history.pushState( {}, 'Plugins', url );\n\n\t\t\t\t// Show notifications if required.\n\t\t\t\tthis.showNotification('notice-success-plugins', '', 'success');\n\t\t\t}\n\t\t},\n\n\t\trefreshPluginList: function () {\n\t\t\tthis.plugins = [];\n\t\t\tvar self = this;\n\t\t\tthis.$el.find('.js-plugin-box').each(function () {\n\t\t\t\tvar name = $(this).data('name');\n\t\t\t\tvar info = $(this).data('info');\n\t\t\t\tvar pluginData = $(this).data();\n\t\t\t\tpluginData['searchable'] = name + ' ' + info;\n\t\t\t\tself.plugins.push(pluginData);\n\t\t\t});\n\n\t\t\tthis.filterPlugins(this.currentFilter, false);\n\n\t\t\tthis.$el.find('.js-plugins-bulk-action').trigger('change');\n\t\t},\n\n\t\t/**\n\t\t * Plugins list table\n\t\t * @param plugins\n\t\t * @param clearBulk\n\t\t */\n\t\tdisplayPlugins: function (plugins, clearBulk) {\n\t\t\tthis.currentPluginsList = plugins;\n\t\t\tvar self = this;\n\t\t\tvar i;\n\n\t\t\t// sort!\n\t\t\t// a- z\n\t\t\tplugins.sort(function (a, b) {\n\t\t\t\tvar sortA = a.name;\n\t\t\t\tvar sortB = b.name;\n\t\t\t\tif (sortA < sortB)\n\t\t\t\t\treturn -1;\n\t\t\t\tif (sortA > sortB)\n\t\t\t\t\treturn 1;\n\t\t\t\treturn 0;\n\t\t\t});\n\n\t\t\t// compatible\n\t\t\tplugins.sort(function (a, b) {\n\t\t\t\tvar sortA = +a.isCompatible;\n\t\t\t\tvar sortB = +b.isCompatible;\n\t\t\t\treturn sortB - sortA;\n\t\t\t});\n\n\t\t\t// installed\n\t\t\tplugins.sort(function (a, b) {\n\t\t\t\tvar sortA = +a.installed;\n\t\t\t\tvar sortB = +b.installed;\n\t\t\t\treturn sortB - sortA;\n\t\t\t});\n\n\t\t\t// active\n\t\t\tplugins.sort(function (a, b) {\n\t\t\t\tvar sortA = +a.active;\n\t\t\t\tvar sortB = +b.active;\n\t\t\t\treturn sortB - sortA;\n\t\t\t});\n\n\t\t\t// updates\n\t\t\tplugins.sort(function (a, b) {\n\t\t\t\tvar sortA = +a.hasUpdate;\n\t\t\t\tvar sortB = +b.hasUpdate;\n\t\t\t\treturn sortB - sortA;\n\t\t\t});\n\n\t\t\tthis.$el\n\t\t\t.find('.dashui-table-plugins tbody tr')\n\t\t\t.not('.bulk-action-row')\n\t\t\t.remove();\n\n\t\t\tvar notInstalledHeader = 0;\n\n\t\t\tfor (i = 0; i < plugins.length; i++) {\n\t\t\t\tvar data = plugins[i];\n\t\t\t\tvar row = this.$el\n\t\t\t\t.find('.js-plugin-box[data-project=' + data.project + '] .js-mode-row tr')\n\t\t\t\t.clone(true, true);\n\t\t\t\trow.hide();\n\n\t\t\t\tif (row.hasClass('dashui-is-notinstalled') && 0 === notInstalledHeader) {\n\n\t\t\t\t\tvar avheader = this.$el\n\t\t\t\t\t.find('.js-available-plugin-header tr')\n\t\t\t\t\t.clone(true, true);\n\n\t\t\t\t\tself.$el.find('.dashui-table-plugins tbody').append(avheader);\n\t\t\t\t\tnotInstalledHeader++;\n\t\t\t\t}\n\n\t\t\t\tself.$el.find('.dashui-table-plugins tbody').append(row);\n\t\t\t}\n\n\t\t\tthis.paginate(plugins, clearBulk);\n\n\t\t\tsetTimeout(function () {\n\n\t\t\t\t// Hide alert.\n\t\t\t\tself.$el\n\t\t\t\t.find('.dashui-plugin-loader')\n\t\t\t\t.fadeOut(1)\n\t\t\t\t.attr('tabindex', '-1')\n\t\t\t\t;\n\n\t\t\t\t// Show table.\n\t\t\t\tself.$el\n\t\t\t\t.find('.dashui-table-plugins')\n\t\t\t\t.fadeIn('slow')\n\t\t\t\t;\n\t\t\t}, 500);\n\t\t},\n\t\tattachEvents: function () {\n\t\t\tvar self = this;\n\n\t\t\tthis.$el.find('.js-header-search').on('click', function (e) {\n\t\t\t\tself.$el.find('input[name=search]').focus();\n\t\t\t\te.preventDefault();\n\t\t\t});\n\n\t\t\tthis.$el.find('input[name=search]').on('keydown', function (e) {\n\t\t\t\tvar searchTerm = $(this).val();\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tself.search(searchTerm);\n\t\t\t\t}, 1500);\n\t\t\t});\n\n\t\t\tthis.$el.find('.sui-tabs-menu .sui-tab-item').on('click', function () {\n\t\t\t\tif (!self.actionEnabled) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t$(this)\n\t\t\t\t.closest('.sui-tabs-menu')\n\t\t\t\t.find('.sui-tab-item')\n\t\t\t\t.removeClass('active');\n\t\t\t\t$(this).addClass('active');\n\t\t\t\tself.filterPlugins($(this).data('filter'), true);\n\t\t\t});\n\n\t\t\tthis.$el.find('#dashui-mobile-filter').on('change', function () {\n\t\t\t\tif (!self.actionEnabled) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tself.filterPlugins($(this).val(), true);\n\t\t\t});\n\n\t\t\tthis.$el.find('.dashui-plugin-box .sui-vertical-tab').on('click', function () {\n\t\t\t\tif (!self.actionEnabled) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t$(this)\n\t\t\t\t.parent()\n\t\t\t\t.find('.sui-vertical-tab')\n\t\t\t\t.removeClass('current');\n\t\t\t\t$(this).addClass('current');\n\t\t\t\tself.filterPlugins($(this).children('a').data('filter'), true);\n\t\t\t});\n\n\t\t\tthis.$el.on('click', 'a[data-action=project-changelog]', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (!self.actionEnabled) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tvar data = $(this).data();\n\t\t\t\tself.showChangelog(data);\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\tthis.$el.on('click', 'a[data-action=project-update]', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (!self.actionEnabled) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tvar data = $(this).data();\n\t\t\t\tself.update(data, true);\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\tthis.$el.on('click', 'a[data-action=project-activate]', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (!self.actionEnabled) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tvar data = $(this).data();\n\t\t\t\tself.activate(data);\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\tthis.$el.on('click', 'a[data-action=project-deactivate]', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (!self.actionEnabled) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tvar data = $(this).data();\n\t\t\t\tself.deactivate(data);\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\tthis.$el.on('click', 'a[data-action=project-install]', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (!self.actionEnabled) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tvar data = $(this).data();\n\t\t\t\tself.install(data);\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\tthis.$el.on('click', 'a[data-action=project-delete]', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (!self.actionEnabled) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tvar data = $(this).data();\n\t\t\t\tself.uninstall(data);\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\tthis.$el.on('click', '.sui-notice-top .sui-notice-dismiss', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\t$(this)\n\t\t\t\t.closest('.sui-notice-top')\n\t\t\t\t.stop()\n\t\t\t\t.slideUp('slow');\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\tthis.$el.on('submit', '.sui-modal #ftp-details form', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tself.saveFtp();\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\tthis.$el.on('click', '.js-show-plugin-modal', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tvar project_id = $(this).data('project'),\n\t\t\t\t\tdialogType = $(this).data('action');\n\t\t\t\tif (project_id) {\n\t\t\t\t\tif ('changelog' !== dialogType) {\n\t\t\t\t\t\tself.showPluginDialog(project_id, this);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.showChangelog(project_id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t});\n\n\t\t\t// modal tabs\n\t\t\tthis.$el.on('click', '.sui-tabs div[data-tabs=\"\"] div', function () {\n\t\t\t\tvar tabWrapper = $(this).closest('.sui-tabs');\n\t\t\t\tvar index = $(this).data('index');\n\n\t\t\t\ttabWrapper.find('div[data-tabs=\"\"] div').removeClass('active');\n\t\t\t\t$(this).addClass('active');\n\n\t\t\t\ttabWrapper.find('div[data-panes=\"\"] div').removeClass('active');\n\t\t\t\ttabWrapper\n\t\t\t\t.find('div[data-panes=\"\"] div[data-index=\"' + index + '\"]')\n\t\t\t\t.addClass('active');\n\t\t\t});\n\n\t\t\t// SLIDER: Navigation thumbnails\n\t\t\tthis.$el.on('click', '.dashui-slider .dashui-slider-nav-items li', function () {\n\n\t\t\t\tvar $thumb = $(this),\n\t\t\t\t\t$parent = $thumb.closest('.dashui-slider'),\n\t\t\t\t\t$thumbs = $parent.find('.dashui-slider-nav-items li'),\n\t\t\t\t\t$sliders = $parent.find('.dashui-slider-main'),\n\t\t\t\t\t$slides = $sliders.find('li'),\n\t\t\t\t\t$slide = $sliders.find('li.' + $thumb.data('key'))\n\t\t\t\t;\n\n\t\t\t\t$thumbs.removeClass('current');\n\t\t\t\t$slides.removeClass('current');\n\n\t\t\t\t// Select current thumbnail\n\t\t\t\t$thumb.addClass('current');\n\n\t\t\t\t// Get current slide\n\t\t\t\t$slide.addClass('current');\n\n\t\t\t\tif ($sliders.height() !== ($slide.find('img').height() - 1)) {\n\n\t\t\t\t\t$sliders.css({\n\t\t\t\t\t\t'height': ($slide.find('img').height() - 1) + 'px'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// SLIDER: Navigation right arrow\n\t\t\tthis.$el.on('click', '.dashui-slider .dashui-slider-nav-right', function () {\n\n\t\t\t\tvar $button = $(this),\n\t\t\t\t\t$parent = $button.closest('.dashui-slider'),\n\t\t\t\t\t$slider = $parent.find('.dashui-slider-main'),\n\t\t\t\t\t$thumbs = $parent.find('.slider-nav')\n\t\t\t\t;\n\n\t\t\t\t// Function to animate the images in forward direction\n\t\t\t\tvar forward = function () {\n\n\t\t\t\t\tvar $currThumb = $thumbs.find('li.current'),\n\t\t\t\t\t\t$nextThumb = $currThumb.next()\n\t\t\t\t\t;\n\n\t\t\t\t\tvar $currSlide = $slider.find('li.current'),\n\t\t\t\t\t\t$nextSlide = $currSlide.next()\n\t\t\t\t\t;\n\n\t\t\t\t\tif (!$nextThumb.length) {\n\n\t\t\t\t\t\t$nextThumb = $thumbs.find('li:first');\n\t\t\t\t\t\t$nextSlide = $slider.find('li:first');\n\n\t\t\t\t\t\t$nextThumb.addClass('current');\n\t\t\t\t\t\t$nextSlide.addClass('current');\n\n\t\t\t\t\t\t$currThumb.removeClass('current');\n\t\t\t\t\t\t$currSlide.removeClass('current');\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t$nextThumb.addClass('current');\n\t\t\t\t\t\t$nextSlide.addClass('current');\n\n\t\t\t\t\t\t$currThumb.removeClass('current');\n\t\t\t\t\t\t$currSlide.removeClass('current');\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ($slider.height() !== ($nextSlide.find('img').height() - 1)) {\n\n\t\t\t\t\t\t$slider.css({\n\t\t\t\t\t\t\t'height': ($nextSlide.find('img').height() - 1) + 'px'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tforward();\n\n\t\t\t});\n\n\t\t\t// SLIDER: Navigation left arrow\n\t\t\tthis.$el.on('click', '.dashui-slider .dashui-slider-nav-left', function () {\n\n\t\t\t\tvar $button = $(this),\n\t\t\t\t\t$parent = $button.closest('.dashui-slider'),\n\t\t\t\t\t$slider = $parent.find('.dashui-slider-main'),\n\t\t\t\t\t$thumbs = $parent.find('.slider-nav')\n\t\t\t\t;\n\n\t\t\t\t// Function to animate the images in backward direction\n\t\t\t\tvar backward = function () {\n\n\t\t\t\t\tvar $currThumb = $thumbs.find('li.current'),\n\t\t\t\t\t\t$prevThumb = $currThumb.prev()\n\t\t\t\t\t;\n\n\t\t\t\t\tvar $currSlide = $slider.find('li.current'),\n\t\t\t\t\t\t$prevSlide = $currSlide.prev()\n\n\t\t\t\t\tif (!$prevThumb.length) {\n\n\t\t\t\t\t\t$prevThumb = $thumbs.find('li:last');\n\t\t\t\t\t\t$prevSlide = $slider.find('li:last');\n\n\t\t\t\t\t\t$prevThumb.addClass('current');\n\t\t\t\t\t\t$prevSlide.addClass('current');\n\n\t\t\t\t\t\t$currThumb.removeClass('current');\n\t\t\t\t\t\t$currSlide.removeClass('current');\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t$prevThumb.addClass('current');\n\t\t\t\t\t\t$prevSlide.addClass('current');\n\n\t\t\t\t\t\t$currThumb.removeClass('current');\n\t\t\t\t\t\t$currSlide.removeClass('current');\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ($slider.height() !== ($prevSlide.find('img').height() - 1)) {\n\n\t\t\t\t\t\t$slider.css({\n\t\t\t\t\t\t\t'height': ($prevSlide.find('img').height() - 1) + 'px'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbackward();\n\n\t\t\t});\n\n\t\t\t// Checkboxes\n\t\t\tthis.$el.on('change', 'input.js-plugin-check', function () {\n\t\t\t\tvar project_id = $(this).val();\n\t\t\t\tif ($(this).is(':checked')) {\n\t\t\t\t\tvar plugin = self.searchPluginById(project_id);\n\t\t\t\t\tif (plugin) {\n\t\t\t\t\t\tself.bulkPluginsList[project_id] = plugin;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvar bulkPluginsList = self.bulkPluginsList;\n\t\t\t\t\tdelete bulkPluginsList[project_id];\n\t\t\t\t\tself.bulkPluginsList = bulkPluginsList;\n\t\t\t\t}\n\n\t\t\t\tself.$el.find('.js-plugins-bulk-action').trigger('change');\n\t\t\t});\n\n\t\t\tthis.$el.on('change', '.js-plugins-bulk-action', function () {\n\t\t\t\tvar ids = Object.keys(self.bulkPluginsList);\n\t\t\t\tvar bulkModal = self.$el.find('.sui-modal #bulk-action-modal');\n\n\t\t\t\tif (!ids.length || self.bulkPluginAction === '') {\n\t\t\t\t\t$(this)\n\t\t\t\t\t.find('.js-plugins-bulk-action-button')\n\t\t\t\t\t.attr('disabled', 'disabled');\n\t\t\t\t} else {\n\t\t\t\t\t$(this)\n\t\t\t\t\t.find('.js-plugins-bulk-action-button')\n\t\t\t\t\t.prop('disabled', false);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.$el.on('change', 'input.js-plugin-check-all', function () {\n\t\t\t\tvar checkboxes = self.$el.find('.dashui-table-plugins tbody tr td.dashui-column-title input.js-plugin-check').not(':hidden');\n\t\t\t\tif ($(this).is(':checked')) {\n\t\t\t\t\tcheckboxes.prop('checked', true).trigger('change');\n\t\t\t\t} else {\n\t\t\t\t\tcheckboxes.prop('checked', false).trigger('change');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.$el.on('click', '.js-plugins-bulk-action-button', function () {\n\t\t\t\tlet ids = Object.keys(self.bulkPluginsList);\n\t\t\t\tlet activePlugins = [];\n\t\t\t\tlet notInstalledPlugins = [];\n\t\t\t\tif (!ids.length) {\n\t\t\t\t\treturn false;\n\t\t\t\t} else {\n\t\t\t\t\t//filter plugin with action\n\t\t\t\t\tvar action = self.bulkPluginAction;\n\t\t\t\t\tfor (var project_id in self.bulkPluginsList) {\n\t\t\t\t\t\tvar isProject = self.bulkPluginsList[project_id];\n\t\t\t\t\t\tswitch (action) {\n\t\t\t\t\t\t\tcase 'activate':\n\t\t\t\t\t\t\t\tif (!isProject.installed || isProject.active) {\n\t\t\t\t\t\t\t\t\tdelete self.bulkPluginsList[project_id];\n\t\t\t\t\t\t\t\t\t$('#bulk-action-' + project_id).prop(\"checked\", false);\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\tcase 'deactivate':\n\t\t\t\t\t\t\t\tif (!isProject.active) {\n\t\t\t\t\t\t\t\t\tdelete self.bulkPluginsList[project_id];\n\t\t\t\t\t\t\t\t\t$('#bulk-action-' + project_id).prop(\"checked\", false);\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\tcase 'update':\n\t\t\t\t\t\t\t\tif (!isProject.hasUpdate || !isProject.installed) {\n\t\t\t\t\t\t\t\t\tdelete self.bulkPluginsList[project_id];\n\t\t\t\t\t\t\t\t\t$('#bulk-action-' + project_id).prop(\"checked\", false);\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\tcase 'delete':\n\t\t\t\t\t\t\t\tif (isProject.active || !isProject.installed) {\n\t\t\t\t\t\t\t\t\tdelete self.bulkPluginsList[project_id];\n\t\t\t\t\t\t\t\t\t$('#bulk-action-' + project_id).prop(\"checked\", false);\n\t\t\t\t\t\t\t\t\tif (isProject.active) {\n\t\t\t\t\t\t\t\t\t\tactivePlugins.push(isProject);\n\t\t\t\t\t\t\t\t\t} else if (!isProject.installed) {\n\t\t\t\t\t\t\t\t\t\tnotInstalledPlugins.push(isProject);\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\tbreak;\n\t\t\t\t\t\t\tcase 'install':\n\t\t\t\t\t\t\t\tif (isProject.installed) {\n\t\t\t\t\t\t\t\t\tdelete self.bulkPluginsList[project_id];\n\t\t\t\t\t\t\t\t\t$('#bulk-action-' + project_id).prop(\"checked\", false);\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\tcase 'install-activate':\n\t\t\t\t\t\t\t\tif (isProject.installed && isProject.active) {\n\t\t\t\t\t\t\t\t\tdelete self.bulkPluginsList[project_id];\n\t\t\t\t\t\t\t\t\t$('#bulk-action-' + project_id).prop(\"checked\", false);\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}\n\t\t\t\t\t}\n\n\t\t\t\t\tvar bulkPluginsCount = Object.keys(self.bulkPluginsList).length;\n\t\t\t\t\tif (bulkPluginsCount) {\n\t\t\t\t\t\tSUI.openModal(\n\t\t\t\t\t\t\t'bulk-action-modal',\n\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t);\n\t\t\t\t\t\tself.onBulkDialogShow();\n\n\t\t\t\t\t\tif (activePlugins.length || notInstalledPlugins.length) {\n\t\t\t\t\t\t\tlet message = '<p>' + wdp_locale.plugins_cannot_delete + '</p>';\n\t\t\t\t\t\t\tactivePlugins.forEach((plugin) => {\n\t\t\t\t\t\t\t\tmessage += '<p>' + plugin.name + ': ' + wdp_locale.plugins_active + '</p>';\n\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\tnotInstalledPlugins.forEach((plugin) => {\n\t\t\t\t\t\t\t\tmessage += '<p>' + plugin.name + ': ' + wdp_locale.plugins_not_installed + '</p>';\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\tself.showBulkErrorNotice(message);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$('.js-plugins-bulk-action')\n\t\t\t\t\t\t.find('.js-plugins-bulk-action-button')\n\t\t\t\t\t\t.attr('disabled', 'disabled');\n\t\t\t\t\t\t$('#bulk-actions-all').prop(\"checked\", false);\n\n\t\t\t\t\t\tif (activePlugins.length || notInstalledPlugins.length) {\n\t\t\t\t\t\t\tself.showNotification(\n\t\t\t\t\t\t\t\t'js-failed-deleted-multiple',\n\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t'warning'\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\treturn false;\n\t\t\t});\n\n\t\t\t// bulk plugin selector\n\t\t\tthis.$el.on('change', 'select[name=\"current-bulk-action\"]', function () {\n\t\t\t\tself.bulkPluginAction = $(this).val();\n\t\t\t\tself.$el.find('.js-plugins-bulk-action').trigger('change');\n\t\t\t});\n\n\t\t\t// close bulk plugin\n\t\t\tthis.$el.on('click', '.sui-modal .bulk-modal-close', function () {\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tself.onBulkDialogHide();\n\t\t\t\t}, 1000);\n\t\t\t});\n\n\n\t\t\t// close bulk plugin\n\t\t\tthis.$el.on('click', '.sui-modal .plugin-modal-close', function () {\n\t\t\t\tvar self = this;\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tif ($(self).closest('.sui-modal').hasClass('sui-active')) {\n\t\t\t\t\t\tSUI.closeModal();\n\t\t\t\t\t}\n\t\t\t\t}, 1000);\n\n\t\t\t\tif ($(this).closest('.sui-modal-content').hasClass('js-plugin-modal')) {\n\t\t\t\t\twindow.location.hash = '_';\n\t\t\t\t}\n\n\t\t\t});\n\n\t\t\t$('.sui-modal-content').on('afterClose', function () {\n\t\t\t\twindow.location.hash = '_'\n\t\t\t});\n\n\t\t\t$(window).on('hashchange', function () {\n\t\t\t\tself.processHash();\n\t\t\t});\n\n\t\t},\n\n\t\tsearchPluginById: function (project_id) {\n\t\t\tproject_id = +project_id;\n\t\t\tvar i;\n\t\t\tfor (i = 0; i < this.plugins.length; i++) {\n\t\t\t\tvar data = this.plugins[i];\n\t\t\t\tvar pid = +data.project;\n\t\t\t\tif (pid === project_id) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\t\tfilterPlugins: function (filter, resetPage) {\n\t\t\tvar plugins = [];\n\t\t\tvar data, i;\n\t\t\tthis.currentFilter = filter;\n\t\t\tvar no_result_search_lang = 'no_result_search_plugin_all';\n\t\t\tvar no_plugins_lang = '';\n\n\t\t\tthis.$el.find('.js-plugins-showcase').hide();\n\n\t\t\tswitch (filter) {\n\t\t\t\tcase 'all':\n\t\t\t\t\tplugins = this.plugins;\n\t\t\t\t\tif (!this.isSearching) {\n\t\t\t\t\t\tthis.$el.find('.js-plugins-showcase').show();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'activated':\n\t\t\t\t\tfor (i = 0; i < this.plugins.length; i++) {\n\t\t\t\t\t\tdata = this.plugins[i];\n\t\t\t\t\t\tif (data.installed && data.active) {\n\t\t\t\t\t\t\tplugins.push(data);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tno_result_search_lang = 'no_result_search_plugin_activated';\n\t\t\t\t\tno_plugins_lang = 'no_plugin_activated';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'deactivated':\n\t\t\t\t\tfor (i = 0; i < this.plugins.length; i++) {\n\t\t\t\t\t\tdata = this.plugins[i];\n\t\t\t\t\t\tif (data.installed && !data.active) {\n\t\t\t\t\t\t\tplugins.push(data);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tno_result_search_lang = 'no_result_search_plugin_deactivated';\n\t\t\t\t\tno_plugins_lang = 'no_plugin_deactivated';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'hasupdate':\n\t\t\t\t\tfor (i = 0; i < this.plugins.length; i++) {\n\t\t\t\t\t\tdata = this.plugins[i];\n\t\t\t\t\t\tif (data.installed && data.hasUpdate) {\n\t\t\t\t\t\t\tplugins.push(data);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tno_result_search_lang = 'no_result_search_plugin_updates';\n\t\t\t\t\tno_plugins_lang = 'no_plugin_updates';\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (resetPage) {\n\t\t\t\t// reset page\n\t\t\t\tthis.page = 1;\n\t\t\t}\n\n\t\t\tthis.$el.find('.js-no-result-search').addClass('sui-hidden');\n\t\t\tthis.$el.find('.dashui-table-plugins').removeClass('sui-hidden');\n\t\t\tif (this.isSearching) {\n\t\t\t\tplugins = this.getSearchResult(plugins, this.$el.find('input[name=search]').val().toLowerCase());\n\n\t\t\t\tif (plugins.length < 1) {\n\t\t\t\t\tvar no_result_search_message = window.wdp_locale[no_result_search_lang];\n\t\t\t\t\tif (no_result_search_message) {\n\t\t\t\t\t\tthis.showSearchNotice(no_result_search_message);\n\t\t\t\t\t\tthis.$el.find('.js-no-result-search').removeClass('sui-hidden');\n\t\t\t\t\t\tthis.$el.find('.dashui-table-plugins').addClass('sui-hidden');\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.closeSearchNotice();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (plugins.length < 1 && no_plugins_lang) {\n\t\t\t\t\tvar no_plugins_message = window.wdp_locale[no_plugins_lang];\n\t\t\t\t\tif (no_plugins_message) {\n\t\t\t\t\t\tthis.showSearchNotice(no_plugins_message);\n\t\t\t\t\t\tthis.$el.find('.js-no-result-search').removeClass('sui-hidden');\n\t\t\t\t\t\tthis.$el.find('.dashui-table-plugins').addClass('sui-hidden');\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.closeSearchNotice();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar clearBulk = true;\n\t\t\tif (this.currentFilter === filter) {\n\t\t\t\tclearBulk = false;\n\t\t\t}\n\t\t\tthis.displayPlugins(plugins, clearBulk);\n\t\t},\n\t\tshowSearchNotice(message) {\n\t\t\tvar container = $('.js-no-result-search-message'),\n\t\t\t\tnoticeID = '',\n\t\t\t\tnoticeOptions = {};\n\t\t\tif (!container.length) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tnoticeOptions.dismiss = {};\n\t\t\tnoticeOptions.autoclose = {};\n\t\t\tnoticeOptions.type = container.data('notice-type');\n\t\t\tnoticeOptions.dismiss.show = container.data('show-dismiss');\n\t\t\tnoticeOptions.autoclose.show = false;\n\t\t\tnoticeID = container.attr('id');\n\t\t\tmessage = '<p>' + message + '</p>';\n\n\t\t\tSUI.openNotice(noticeID, message, noticeOptions);\n\t\t},\n\n\t\tcloseSearchNotice() {\n\t\t\tvar container = $('.js-no-result-search-message');\n\t\t\tif (!container.length) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tSUI.closeNotice(container.attr('id'));\n\t\t},\n\n\t\tpaginate: function (plugins, clearBulk) {\n\t\t\tvar project_id = 0;\n\t\t\tif (clearBulk) {\n\t\t\t\t// clean checked before hide\n\t\t\t\tfor (project_id in this.bulkPluginsList) {\n\t\t\t\t\tif (this.bulkPluginsList.hasOwnProperty(project_id)) {\n\t\t\t\t\t\tthis.$el\n\t\t\t\t\t\t.find(\n\t\t\t\t\t\t\t'.dashui-table-plugins tbody tr td.dashui-column-title input.js-plugin-check[value=' +\n\t\t\t\t\t\t\tproject_id +\n\t\t\t\t\t\t\t']'\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.prop('checked', false)\n\t\t\t\t\t\t.trigger('change');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthis.bulkPluginsList = {};\n\t\t\t\tthis.$el.find('.js-plugins-bulk-action').trigger('change');\n\t\t\t}\n\n\t\t\t// hide all\n\t\t\tthis.$el\n\t\t\t.find('.dashui-table-plugins tbody tr')\n\t\t\t.not('.bulk-action-row')\n\t\t\t.show();\n\n\t\t\t// restore checked\n\t\t\tfor (project_id in this.bulkPluginsList) {\n\t\t\t\tthis.$el.find('.dashui-table-plugins tbody tr[data-project=' + project_id + '] .js-plugin-check').attr('checked', 'checked');\n\t\t\t}\n\n\t\t},\n\t\tsearch: function (value) {\n\n\t\t\tvar clearBulk = false;\n\t\t\tif (this.$el.find('.sui-tabs-menu .sui-tab-item.active').data('filter') !== 'all') {\n\t\t\t\tclearBulk = true;\n\t\t\t}\n\n\t\t\tthis.$el.find('.sui-tabs-menu .sui-tab-item').removeClass('active');\n\t\t\tthis.$el.find('.sui-tabs-menu .sui-tab-item[data-filter=all]').addClass('active');\n\t\t\tthis.currentFilter = 'all';\n\n\t\t\tvar toSearch = value.toLowerCase();\n\t\t\tif (toSearch === '') {\n\t\t\t\tthis.isSearching = false;\n\t\t\t\tthis.page = 1;\n\t\t\t\tthis.filterPlugins(this.currentFilter, clearBulk);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isSearching = true;\n\t\t\tthis.page = 1;\n\t\t\tthis.filterPlugins(this.currentFilter, clearBulk);\n\t\t},\n\t\tgetSearchResult: function (pluginsList, toSearch) {\n\t\t\tvar plugins = [];\n\t\t\tvar data, i;\n\t\t\tvar searchable = '';\n\t\t\tfor (i = 0; i < pluginsList.length; i++) {\n\t\t\t\tdata = pluginsList[i];\n\t\t\t\tsearchable = data.searchable.toLowerCase();\n\t\t\t\tif (searchable.indexOf(toSearch) !== -1) {\n\t\t\t\t\tplugins.push(data);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn plugins;\n\t\t},\n\t\tactivate: function (data) {\n\t\t\tvar self = this;\n\n\t\t\tvar project_id = data.project;\n\t\t\tthis.$el\n\t\t\t.find('a.sui-button[data-action=project-activate][data-project=' + project_id + ']')\n\t\t\t.addClass('sui-button-onload');\n\n\t\t\tthis.$el\n\t\t\t.find('tr[data-project=' + project_id + '] .dashui-loader-wrap .dashui-loader-text')\n\t\t\t.addClass('sui-hidden');\n\n\t\t\tthis.$el\n\t\t\t.find('tr[data-project=' + project_id + '] .dashui-loader-wrap .dashui-loader')\n\t\t\t.show();\n\n\t\t\tthis.$el\n\t\t\t.find('tr[data-project=' + project_id + '] .dashui-loader-wrap .dashui-loader .dashui-loader-delete')\n\t\t\t.hide();\n\n\t\t\tthis.disableActions(project_id);\n\t\t\tthis.hideNotifications();\n\n\t\t\tvar ajaxData = {\n\t\t\t\taction: 'wdp-' + data.action,\n\t\t\t\thash: data.hash,\n\t\t\t\tpid: project_id,\n\t\t\t\tis_network: +$('body').hasClass('network-admin'),\n\t\t\t};\n\n\t\t\t$.post(\n\t\t\t\twindow.ajaxurl,\n\t\t\t\tajaxData,\n\t\t\t\tfunction (response) {\n\t\t\t\t\tif (response.success) {\n\t\t\t\t\t\tself.showNotification('js-activated-single', '', 'success');\n\t\t\t\t\t\twindow.location.reload();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (response.data && response.data.message) {\n\t\t\t\t\t\t\tself.showNotification(\n\t\t\t\t\t\t\t\t'js-failed-activated-single',\n\t\t\t\t\t\t\t\tresponse.data.message,\n\t\t\t\t\t\t\t\t'error'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.showNotification('js-general-fail', '', 'error');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'json'\n\t\t\t)\n\t\t\t.always(function () {\n\t\t\t\tself.$el\n\t\t\t\t.find(\n\t\t\t\t\t'a.sui-button[data-action=project-activate][data-project=' +\n\t\t\t\t\tproject_id +\n\t\t\t\t\t']'\n\t\t\t\t)\n\t\t\t\t.removeClass('sui-button-onload');\n\n\t\t\t\tself.$el\n\t\t\t\t.find('tr[data-project=' + project_id + '] .dashui-loader-wrap .dashui-loader')\n\t\t\t\t.hide();\n\n\t\t\t\tself.enableActions(project_id);\n\t\t\t})\n\t\t\t.fail(function (xhr, statusText, exception) {\n\t\t\t\tself.showNotification('js-general-fail', '');\n\t\t\t});\n\t\t},\n\t\tdeactivate: function (data) {\n\t\t\tvar self = this;\n\n\t\t\tvar project_id = data.project;\n\t\t\tthis.$el\n\t\t\t.find(\n\t\t\t\t'a.sui-button[data-action=project-deactivate][data-project=' + project_id + ']'\n\t\t\t)\n\t\t\t.addClass('sui-button-onload');\n\n\t\t\tthis.$el\n\t\t\t.find('tr[data-project=' + project_id + '] .dashui-loader-wrap .dashui-loader-text')\n\t\t\t.addClass('sui-hidden');\n\n\t\t\tthis.$el\n\t\t\t.find('tr[data-project=' + project_id + '] .dashui-loader-wrap .dashui-loader')\n\t\t\t.show();\n\n\t\t\tthis.disableActions(project_id);\n\t\t\tthis.hideNotifications();\n\n\t\t\tvar ajaxData = {\n\t\t\t\taction: 'wdp-' + data.action,\n\t\t\t\thash: data.hash,\n\t\t\t\tpid: project_id,\n\t\t\t\tis_network: +$('body').hasClass('network-admin'),\n\t\t\t};\n\n\t\t\t$.post(\n\t\t\t\twindow.ajaxurl,\n\t\t\t\tajaxData,\n\t\t\t\tfunction (response) {\n\t\t\t\t\tif (response.success) {\n\t\t\t\t\t\tself.showNotification('js-deactivated-single', '', 'success');\n\t\t\t\t\t\twindow.location.reload();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (response.data && response.data.message) {\n\t\t\t\t\t\t\tself.showNotification(\n\t\t\t\t\t\t\t\t'js-failed-deactivated-single',\n\t\t\t\t\t\t\t\tresponse.data.message,\n\t\t\t\t\t\t\t\t'error'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.showNotification('js-general-fail', '', 'error');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'json'\n\t\t\t)\n\t\t\t.always(function () {\n\t\t\t\tself.$el\n\t\t\t\t.find(\n\t\t\t\t\t'a.sui-button[data-action=project-deactivate][data-project=' +\n\t\t\t\t\tproject_id +\n\t\t\t\t\t']'\n\t\t\t\t)\n\t\t\t\t.removeClass('sui-button-onload');\n\n\t\t\t\tself.$el\n\t\t\t\t.find('tr[data-project=' + project_id + '] .dashui-loader-wrap .dashui-loader')\n\t\t\t\t.hide();\n\n\t\t\t\tself.enableActions(project_id);\n\t\t\t})\n\t\t\t.fail(function (xhr, statusText, exception) {\n\t\t\t\tself.showNotification('js-general-fail', '', 'error');\n\t\t\t});\n\t\t},\n\t\tshowChangelog: function (project_id) {\n\t\t\tif (this.isChangelogHash()) {\n\t\t\t\t// do update\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\t// append changelog hash\n\t\t\t\twindow.location.hash += 'changelog';\n\t\t\t\tthis.showPluginDialog(project_id);\n\t\t\t\tthis.enableActions(project_id);\n\t\t\t\tthis.$el\n\t\t\t\t.find(\n\t\t\t\t\t'a.sui-button[data-action=project-update][data-project=' + project_id + ']'\n\t\t\t\t)\n\t\t\t\t.removeClass('sui-button-onload');\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tupdate: function (data, showChangelog) {\n\t\t\tif (this.maybeShowFtpDialog()) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar self = this;\n\t\t\tvar doUpdate = true;\n\n\t\t\tvar project_id = data.project;\n\t\t\tthis.$el\n\t\t\t.find('a.sui-button[data-action=project-update][data-project=' + project_id + ']')\n\t\t\t.addClass('sui-button-onload');\n\t\t\tthis.hideNotifications();\n\n\t\t\tif (showChangelog) {\n\t\t\t\tdoUpdate = this.showChangelog(project_id);\n\t\t\t}\n\n\t\t\tif (doUpdate) {\n\t\t\t\tthis.disableActions(project_id);\n\t\t\t\t// Actual update\n\t\t\t\tvar ajaxData = {\n\t\t\t\t\taction: 'wdp-' + data.action,\n\t\t\t\t\thash: data.hash,\n\t\t\t\t\tpid: project_id,\n\t\t\t\t\tis_network: +$('body').hasClass('network-admin'),\n\t\t\t\t};\n\n\t\t\t\t$.post(\n\t\t\t\t\twindow.ajaxurl,\n\t\t\t\t\tajaxData,\n\t\t\t\t\tfunction (response) {\n\t\t\t\t\t\tif (response.success) {\n\t\t\t\t\t\t\tself.showNotification('js-updated-single', '', 'success');\n\t\t\t\t\t\t\t// update plugin box\n\n\t\t\t\t\t\t\tif (response.data && response.data.html) {\n\t\t\t\t\t\t\t\tself.$el\n\t\t\t\t\t\t\t\t.find('.js-plugin-box[data-project=' + project_id + ']')\n\t\t\t\t\t\t\t\t.replaceWith(response.data.html);\n\t\t\t\t\t\t\t\tSUI.closeModal();\n\t\t\t\t\t\t\t\tself.refreshPluginList();\n\t\t\t\t\t\t\t\tself.hidePluginDialog(project_id);\n\t\t\t\t\t\t\t\tself.refreshUpdateCount(1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (response.data && response.data.message) {\n\t\t\t\t\t\t\t\tself.showNotification(\n\t\t\t\t\t\t\t\t\t'js-failed-updated-single',\n\t\t\t\t\t\t\t\t\tresponse.data.message,\n\t\t\t\t\t\t\t\t\t'error'\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\tself.showNotification('js-general-fail', '', 'error');\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'json'\n\t\t\t\t)\n\t\t\t\t.always(function () {\n\t\t\t\t\tself.$el\n\t\t\t\t\t.find(\n\t\t\t\t\t\t'a.sui-button[data-action=project-update][data-project=' +\n\t\t\t\t\t\tproject_id +\n\t\t\t\t\t\t']'\n\t\t\t\t\t)\n\t\t\t\t\t.removeClass('sui-button-onload');\n\t\t\t\t\tself.enableActions(project_id);\n\t\t\t\t})\n\t\t\t\t.fail(function (xhr, statusText, exception) {\n\t\t\t\t\tself.showNotification('js-general-fail', '', 'error');\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\tinstall: function (data) {\n\t\t\tif (this.maybeShowFtpDialog()) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar self = this;\n\n\t\t\tvar project_id = data.project;\n\t\t\tthis.$el\n\t\t\t.find('a.sui-button[data-action=project-install][data-project=' + project_id + ']')\n\t\t\t.addClass('sui-button-onload');\n\n\t\t\tthis.$el\n\t\t\t.find(\n\t\t\t\t'a.sui-button-icon[data-action=project-install][data-project=' +\n\t\t\t\tproject_id +\n\t\t\t\t']'\n\t\t\t)\n\t\t\t.removeClass('sui-button-onload');\n\t\t\tthis.$el\n\t\t\t.find(\n\t\t\t\t'a.sui-button-icon[data-action=project-install][data-project=' +\n\t\t\t\tproject_id +\n\t\t\t\t']'\n\t\t\t)\n\t\t\t.addClass('sui-button-onload');\n\t\t\tthis.disableActions(project_id);\n\t\t\tthis.hideNotifications();\n\n\t\t\tvar ajaxData = {\n\t\t\t\taction: 'wdp-' + data.action,\n\t\t\t\thash: data.hash,\n\t\t\t\tpid: project_id,\n\t\t\t\tis_network: +$('body').hasClass('network-admin'),\n\t\t\t};\n\n\t\t\t$.post(\n\t\t\t\twindow.ajaxurl,\n\t\t\t\tajaxData,\n\t\t\t\tfunction (response) {\n\t\t\t\t\tif (response.success) {\n\t\t\t\t\t\t// update plugin box\n\n\t\t\t\t\t\tif (response.data && response.data.html) {\n\t\t\t\t\t\t\tself.hidePluginDialog(project_id);\n\n\t\t\t\t\t\t\tvar plugin = self.searchPluginById(project_id);\n\t\t\t\t\t\t\tif (plugin && !plugin.active) {\n\t\t\t\t\t\t\t\tself.showPluginDialogAfterInstall(project_id)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tself.$el\n\t\t\t\t\t\t\t.find('.js-plugin-box[data-project=' + project_id + ']')\n\t\t\t\t\t\t\t.replaceWith(response.data.html);\n\t\t\t\t\t\t\tself.refreshPluginList();\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (response.data && response.data.message) {\n\t\t\t\t\t\t\tself.showNotification(\n\t\t\t\t\t\t\t\t'js-failed-installed-single',\n\t\t\t\t\t\t\t\tresponse.data.message,\n\t\t\t\t\t\t\t\t'error'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.showNotification('js-general-fail', '', 'error');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'json'\n\t\t\t)\n\t\t\t.always(function () {\n\t\t\t\tself.$el\n\t\t\t\t.find(\n\t\t\t\t\t'a.sui-button[data-action=project-install][data-project=' +\n\t\t\t\t\tproject_id +\n\t\t\t\t\t']'\n\t\t\t\t)\n\t\t\t\t.removeClass('sui-button-onload');\n\t\t\t\tself.$el\n\t\t\t\t.find(\n\t\t\t\t\t'a.sui-button-icon[data-action=project-install][data-project=' +\n\t\t\t\t\tproject_id +\n\t\t\t\t\t']'\n\t\t\t\t)\n\t\t\t\t.find('.sui-loading-text')\n\t\t\t\t.show();\n\t\t\t\tself.$el\n\t\t\t\t.find(\n\t\t\t\t\t'a.sui-button-icon[data-action=project-install][data-project=' +\n\t\t\t\t\tproject_id +\n\t\t\t\t\t']'\n\t\t\t\t)\n\t\t\t\t.find('.sui-loading')\n\t\t\t\t.hide();\n\n\t\t\t\tself.enableActions(project_id);\n\t\t\t})\n\t\t\t.fail(function (xhr, statusText, exception) {\n\t\t\t\tself.showNotification('js-general-fail', '', 'error');\n\t\t\t});\n\t\t},\n\t\tuninstall: function (data) {\n\t\t\tif (this.maybeShowFtpDialog()) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tvar self = this;\n\n\t\t\tvar project_id = data.project;\n\t\t\tthis.$el\n\t\t\t.find('a.sui-button[data-action=project-delete][data-project=' + project_id + ']')\n\t\t\t.addClass('sui-button-onload');\n\n\t\t\tthis.$el\n\t\t\t.find('tr[data-project=' + project_id + '] .dashui-loader-wrap .dashui-loader-text')\n\t\t\t.addClass('sui-hidden');\n\n\t\t\tthis.$el\n\t\t\t.find('tr[data-project=' + project_id + '] .dashui-loader-wrap .dashui-loader')\n\t\t\t.show();\n\n\t\t\tthis.$el\n\t\t\t.find('tr[data-project=' + project_id + '] .dashui-loader-wrap .dashui-loader .dashui-loader-activate')\n\t\t\t.hide();\n\n\t\t\tthis.disableActions(project_id);\n\t\t\tthis.hideNotifications();\n\n\t\t\tvar ajaxData = {\n\t\t\t\taction: 'wdp-' + data.action,\n\t\t\t\thash: data.hash,\n\t\t\t\tpid: project_id,\n\t\t\t\tis_network: +$('body').hasClass('network-admin'),\n\t\t\t};\n\n\t\t\t$.post(\n\t\t\t\twindow.ajaxurl,\n\t\t\t\tajaxData,\n\t\t\t\tfunction (response) {\n\t\t\t\t\tif (response.success) {\n\t\t\t\t\t\tself.showNotification('js-deleted-single', '', 'success');\n\t\t\t\t\t\t// update plugin box\n\n\t\t\t\t\t\tif (response.data && response.data.html) {\n\t\t\t\t\t\t\tself.$el\n\t\t\t\t\t\t\t.find('.js-plugin-box[data-project=' + project_id + ']')\n\t\t\t\t\t\t\t.replaceWith(response.data.html);\n\t\t\t\t\t\t\tself.refreshPluginList();\n\t\t\t\t\t\t\tself.hidePluginDialog(project_id);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (response.data && response.data.message) {\n\t\t\t\t\t\t\tself.showNotification(\n\t\t\t\t\t\t\t\t'js-failed-deleted-single',\n\t\t\t\t\t\t\t\tresponse.data.message,\n\t\t\t\t\t\t\t\t'error'\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.showNotification('js-general-fail', '', 'error');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'json'\n\t\t\t)\n\t\t\t.always(function () {\n\t\t\t\tself.$el\n\t\t\t\t.find(\n\t\t\t\t\t'a.sui-button[data-action=project-delete][data-project=' +\n\t\t\t\t\tproject_id +\n\t\t\t\t\t']'\n\t\t\t\t)\n\t\t\t\t.removeClass('sui-button-onload');\n\n\t\t\t\tself.$el\n\t\t\t\t.find('tr[data-project=' + project_id + '] .dashui-loader-wrap .dashui-loader')\n\t\t\t\t.hide();\n\n\t\t\t\tself.enableActions(project_id);\n\t\t\t})\n\t\t\t.fail(function (xhr, statusText, exception) {\n\t\t\t\tself.showNotification('js-general-fail', '', 'error');\n\t\t\t});\n\t\t},\n\t\tapplyBulkAction: function () {\n\t\t\tvar dialog = this.$el.find('.sui-modal #bulk-action-modal');\n\n\t\t\tthis.disableActions(null);\n\n\t\t\tvar action = this.bulkPluginAction;\n\n\t\t\tthis.bulkActionProgress = 0;\n\t\t\tdialog.find('.sui-progress-text>span').text('0%');\n\t\t\tdialog.find('.js-bulk-actions-progress').css('width', '0%');\n\t\t\tdialog.find('.js-bulk-actions-loader-icon').show();\n\n\t\t\tthis.bulkActionErrors = [];\n\t\t\tvar i = 1;\n\t\t\tvar isLast = false;\n\t\t\tvar bulkPluginsCount = Object.keys(this.bulkPluginsList).length;\n\n\t\t\tif (bulkPluginsCount > 0) {\n\t\t\t\tfor (var project_id in this.bulkPluginsList) {\n\n\t\t\t\t\tif (i === bulkPluginsCount) {\n\t\t\t\t\t\tisLast = true;\n\t\t\t\t\t}\n\t\t\t\t\tif (this.bulkPluginsList.hasOwnProperty(project_id)) {\n\t\t\t\t\t\tthis.addBulkQueue(action, project_id, isLast);\n\t\t\t\t\t}\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\taddBulkQueue: function (action, project_id, isLast) {\n\t\t\tvar self = this;\n\t\t\tvar dialog = this.$el.find('.sui-modal #bulk-action-modal');\n\t\t\tvar ajax_action = 'wdp-project-' + action;\n\t\t\tvar hash = dialog.find('.js-bulk-hash').data(action);\n\t\t\tvar plugin = this.searchPluginById(project_id);\n\n\t\t\tvar bulkPluginsCount = Object.keys(this.bulkPluginsList).length;\n\t\t\tvar progressIncreaser = 100 / bulkPluginsCount;\n\t\t\tprogressIncreaser = +progressIncreaser;\n\t\t\tprogressIncreaser = Math.floor(progressIncreaser);\n\n\t\t\tvar stateText = dialog.find('.js-bulk-actions-state');\n\t\t\tvar stateBaseText = '%s';\n\n\t\t\tswitch (action) {\n\t\t\t\tcase 'update':\n\t\t\t\t\tstateBaseText = window.wdp_locale.updating_plugin;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'activate':\n\t\t\t\t\tstateBaseText = window.wdp_locale.activating_plugin;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'install':\n\t\t\t\t\tstateBaseText = window.wdp_locale.installing_plugin;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'install-activate':\n\t\t\t\t\tstateBaseText = window.wdp_locale.installing_activating_plugin;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'deactivate':\n\t\t\t\t\tstateBaseText = window.wdp_locale.deactivating_plugin;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'delete':\n\t\t\t\t\tstateBaseText = window.wdp_locale.deleting_plugin;\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// block incompatible plugin action by UI\n\t\t\tif (action === 'update' || action === 'activate' || action === 'install' || action === 'install-activate') {\n\t\t\t\tif (!plugin.isCompatible) {\n\t\t\t\t\tstateBaseText = stateBaseText.replace('%s', plugin.name);\n\t\t\t\t\tstateText.text(stateBaseText);\n\n\t\t\t\t\t// delay 1 sec\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tvar message = '<p>' + plugin.name + ' : ' + plugin.incompatibleReason + '</p>';\n\t\t\t\t\t\tself.showBulkErrorNotice(message);\n\t\t\t\t\t\tself.bulkActionErrors.push(plugin.incompatibleReason);\n\t\t\t\t\t\tself.updateBulkProgressBar(dialog, action, progressIncreaser, (!!isLast));\n\t\t\t\t\t}, 1000);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$.ajaxq(this.bulkAjaxQueueName, {\n\t\t\t\ttype: 'POST',\n\t\t\t\turl: window.ajaxurl,\n\t\t\t\tdata: {\n\t\t\t\t\taction: ajax_action,\n\t\t\t\t\thash: hash,\n\t\t\t\t\tpid: project_id,\n\t\t\t\t\tis_network: +$('body').hasClass('network-admin'),\n\t\t\t\t},\n\t\t\t\tbeforeSend: function () {\n\t\t\t\t\tstateBaseText = stateBaseText.replace('%s', plugin.name);\n\t\t\t\t\tstateText.text(stateBaseText);\n\n\t\t\t\t},\n\t\t\t\tsuccess: function (response) {\n\t\t\t\t\tif (response.success) {\n\t\t\t\t\t\tif (response.data && response.data.html) {\n\t\t\t\t\t\t\tself.$el\n\t\t\t\t\t\t\t.find('.js-plugin-box[data-project=' + project_id + ']')\n\t\t\t\t\t\t\t.replaceWith(response.data.html);\n\t\t\t\t\t\t\tself.hidePluginDialog(project_id);\n\t\t\t\t\t\t\tif (action === 'update') {\n\t\t\t\t\t\t\t\tself.refreshUpdateCount(1);\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 (response.data && response.data.message) {\n\t\t\t\t\t\t\tvar message = '<p>' + plugin.name + ' : ' + response.data.message + '</p>';\n\t\t\t\t\t\t\tself.showBulkErrorNotice(message);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tself.bulkActionErrors.push(response.data.message);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: function (error) {\n\t\t\t\t\tvar message = '<p>' + plugin.name + ' : HTTP Request Error</p>';\n\t\t\t\t\tself.showBulkErrorNotice(message);\n\t\t\t\t\tself.bulkActionErrors.push('HTTP Request Error');\n\t\t\t\t},\n\t\t\t\tcomplete: function () {\n\t\t\t\t\tself.updateBulkProgressBar(dialog, action, progressIncreaser, true);\n\t\t\t\t},\n\t\t\t});\n\n\t\t},\n\t\tupdateBulkProgressBar: function (dialog, action, progressIncreaser, checkAjax) {\n\t\t\tvar currentProgress = this.bulkActionProgress;\n\t\t\tcurrentProgress = +currentProgress;\n\t\t\tcurrentProgress = Math.floor(currentProgress);\n\n\t\t\tthis.bulkActionProgress = currentProgress + progressIncreaser;\n\n\t\t\tdialog.find('.js-bulk-actions-progress').css('width', (this.bulkActionProgress) + '%');\n\t\t\tdialog.find('.sui-progress-text>span').text((this.bulkActionProgress) + '%');\n\n\t\t\tif (checkAjax && !$.ajaxq.isRunning(this.bulkAjaxQueueName)) {\n\t\t\t\tthis.onBulkActionCompleted(action);\n\t\t\t}\n\t\t},\n\t\tonBulkActionCompleted: function (action) {\n\t\t\tvar dialog = this.$el.find('.sui-modal #bulk-action-modal');\n\t\t\tvar stateText = dialog.find('.js-bulk-actions-state');\n\t\t\tvar bulkPluginsCount = Object.keys(this.bulkPluginsList).length;\n\n\t\t\tdialog.find('.js-bulk-actions-progress').css('width', '100%');\n\t\t\tdialog.find('.sui-progress-text>span').text('100%');\n\t\t\tstateText.text('');\n\t\t\tdialog.find('.js-bulk-actions-loader-icon').hide();\n\n\t\t\tthis.enableActions(null);\n\n\t\t\tif (action === 'activate' || action === 'deactivate' || action === 'install-activate') {\n\t\t\t\tif (!this.bulkActionErrors.length) {\n\t\t\t\t\t//deactivate and activate need to reloaded to view new menus if avail\n\t\t\t\t\tdialog.find('').show();\n\t\t\t\t\tvar noticeID = 'js-bulk-message-need-reload-' + action,\n\t\t\t\t\t\tnoticeOptions = {},\n\t\t\t\t\t\tnoticeMsg = $('#' + noticeID).data('message');\n\n\t\t\t\t\tnoticeOptions.autoclose = {};\n\t\t\t\t\tnoticeOptions.autoclose.show = false;\n\t\t\t\t\tSUI.openNotice(noticeID, noticeMsg, noticeOptions);\n\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!this.bulkActionErrors.length) {\n\t\t\t\t\t// dialog.close\n\t\t\t\t\tthis.onBulkDialogHide();\n\n\t\t\t\t\t// notif\n\t\t\t\t\tvar notif = '';\n\n\t\t\t\t\tswitch (action) {\n\t\t\t\t\t\tcase 'update':\n\t\t\t\t\t\t\tnotif = 'js-updated-single';\n\t\t\t\t\t\t\tif (bulkPluginsCount > 1) {\n\t\t\t\t\t\t\t\tnotif = 'js-updated-bulk';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'install':\n\t\t\t\t\t\t\tnotif = 'js-installed-single';\n\t\t\t\t\t\t\tif (bulkPluginsCount > 1) {\n\t\t\t\t\t\t\t\tnotif = 'js-installed-bulk';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'delete':\n\t\t\t\t\t\t\tnotif = 'js-deleted-single';\n\t\t\t\t\t\t\tif (bulkPluginsCount > 1) {\n\t\t\t\t\t\t\t\tnotif = 'js-deleted-bulk';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\n\t\t\t\t\tif (notif) {\n\t\t\t\t\t\tthis.showNotification(notif, '', 'success');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tshowNotification: function (noticeID, message, type = 'success') {\n\t\t\tvar container = $('#' + noticeID),\n\t\t\t\tnoticeOptions = {};\n\n\t\t\tnoticeOptions.dismiss = {};\n\t\t\tnoticeOptions.autoclose = {};\n\t\t\tnoticeOptions.type = type;\n\t\t\tnoticeOptions.autoclose.show = false;\n\n\t\t\tif (container.length !== 0) {\n\t\t\t\tnoticeOptions.dismiss.show = container.data('show-dismiss');\n\t\t\t\tif (!message) {\n\t\t\t\t\tmessage = container.data('notice-msg');\n\t\t\t\t} else {\n\t\t\t\t\tmessage = container.data('notice-msg') + '<p class=\"js-custom-message\">' + message + '</p>';\n\t\t\t\t}\n\t\t\t\tif ('success' === noticeOptions.type) {\n\t\t\t\t\tnoticeOptions.icon = 'check-tick';\n\t\t\t\t}\n\t\t\t\tSUI.openNotice(noticeID, message, noticeOptions);\n\t\t\t}\n\t\t},\n\t\tshowBulkErrorNotice: function (message) {\n\t\t\tvar noticeID = 'js-bulk-errors',\n\t\t\t\tdialog = this.$el.find('.sui-modal #bulk-action-modal'),\n\t\t\t\tnoticeOptions = {};\n\t\t\tnoticeOptions.dismiss = {};\n\t\t\tnoticeOptions.autoclose = {};\n\t\t\tnoticeOptions.type = 'warning';\n\t\t\tnoticeOptions.autoclose.show = false;\n\t\t\tnoticeOptions.dismiss.show = false;\n\n\t\t\tif ($('#' + noticeID).hasClass('sui-active')) {\n\t\t\t\tdialog.find('.js-bulk-errors .sui-notice-content .sui-notice-message ').append(message);\n\t\t\t} else {\n\t\t\t\tSUI.openNotice(noticeID, message, noticeOptions);\n\t\t\t}\n\t\t},\n\t\thideNotifications: function () {\n\t\t\tthis.$el.find('.sui-notice-top').hide();\n\t\t},\n\t\tmaybeShowFtpDialog: function () {\n\t\t\tif (this.$el.find('#ftp-details').length > 0) {\n\t\t\t\tvar modalID = 'ftp-details',\n\t\t\t\t\tcontainer = 'dashui-all-plugins';\n\t\t\t\tSUI.openModal(\n\t\t\t\t\tmodalID,\n\t\t\t\t\tcontainer,\n\t\t\t\t\tundefined,\n\t\t\t\t\tfalse\n\t\t\t\t);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tsaveFtp: function () {\n\t\t\tvar form = this.$el.find('#ftp-details form');\n\t\t\tvar dialog = this.$el.find('#ftp-details');\n\t\t\tdialog.find('.ftp-submit').addClass('sui-button-onload');\n\t\t\tdialog.find('.sui-notice').hide();\n\t\t\tform.attr('disabled', 'disabled');\n\n\t\t\tvar ajaxData = {\n\t\t\t\taction: 'wdp-credentials',\n\t\t\t\thash: form.find('input[name=hash]').val(),\n\t\t\t\tftp_pass: form.find('input#ftp_pass').val(),\n\t\t\t\tftp_user: form.find('input#ftp_user').val(),\n\t\t\t\tftp_host: form.find('input#ftp_host').val(),\n\t\t\t};\n\n\t\t\t$.post(\n\t\t\t\twindow.ajaxurl,\n\t\t\t\tajaxData,\n\t\t\t\tfunction (response) {\n\t\t\t\t\tif (response.success) {\n\t\t\t\t\t\tdialog.find('.sui-notice.sui-notice-success').show();\n\t\t\t\t\t\twindow.location.reload();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdialog.find('.sui-notice.sui-notice-error').show();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'json'\n\t\t\t)\n\t\t\t.always(function () {\n\t\t\t\tform.find('.ftp-submit').removeClass('sui-button-onload');\n\t\t\t\tform.prop('disabled', false);\n\t\t\t})\n\t\t\t.fail(function (xhr, statusText, exception) {\n\t\t\t\tdialog.find('.sui-notice.sui-notice-error').show();\n\t\t\t});\n\t\t},\n\t\tonBulkDialogHide: function () {\n\t\t\tif ($('#bulk-action-modal').parent('.sui-modal').hasClass('sui-active')) {\n\t\t\t\tSUI.closeModal();\n\t\t\t}\n\t\t\tif ($.ajaxq.isRunning(this.bulkAjaxQueueName)) {\n\t\t\t\t$.ajaxq.abort(this.bulkAjaxQueueName);\n\t\t\t}\n\t\t\tif (!this.actionEnabled) {\n\t\t\t\tthis.enableActions(null);\n\t\t\t}\n\t\t\tthis.refreshPluginList();\n\t\t},\n\t\tonBulkDialogShow: function () {\n\t\t\tvar dialog = this.$el.find('.sui-modal #bulk-action-modal');\n\n\t\t\tthis.bulkActionErrors = [];\n\n\t\t\tSUI.closeNotice('js-bulk-message-need-reload-activate');\n\t\t\tSUI.closeNotice('js-bulk-message-need-reload-deactivate');\n\t\t\tSUI.closeNotice('js-bulk-message-need-reload-install-activate');\n\t\t\tSUI.closeNotice('js-bulk-errors');\n\n\t\t\tthis.applyBulkAction();\n\n\t\t},\n\t\tshowPluginDialog: function (project_id, container = undefined) {\n\t\t\tvar self = this;\n\t\t\t// check if free\n\t\t\tif (this.$el.find('#upgrade-membership').length) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (!container) {\n\t\t\t\tcontainer = 'show-modal-' + project_id;\n\t\t\t}\n\n\t\t\tvar modalID = 'plugin-modal-' + project_id;\n\t\t\tself.loadPluginDialogContent(project_id);\n\n\t\t\tSUI.openModal(\n\t\t\t\tmodalID,\n\t\t\t\tcontainer,\n\t\t\t\tundefined,\n\t\t\t\ttrue\n\t\t\t);\n\t\t},\n\t\thidePluginDialog: function (project_id) {\n\t\t\tvar pluginmodal = $('#plugin-modal-' + project_id);\n\t\t\tif (pluginmodal.parent('.sui-modal').hasClass('sui-active')) {\n\t\t\t\tSUI.closeModal();\n\t\t\t}\n\t\t},\n\t\tinitPluginDialog: function (project_id) {\n\t\t\tvar self = this;\n\t\t\tif (typeof this.pluginDialogs[project_id] === 'object') {\n\t\t\t\tthis.pluginDialogs[project_id].destroy();\n\t\t\t}\n\n\t\t\tvar dialog = document.getElementById('plugin-modal-' + project_id);\n\t\t\tif (dialog.length > 0) {\n\t\t\t\tdialog.on('open', function () {\n\t\t\t\t\t// move to sui-wrap\n\t\t\t\t\tself.$el\n\t\t\t\t\t.find('.sui-wrap')\n\t\t\t\t\t.append(\n\t\t\t\t\t\tself.$el.find('.sui-dialog.js-plugin-modal#plugin-modal-' + project_id)\n\t\t\t\t\t);\n\t\t\t\t\tself.loadPluginDialogContent(project_id);\n\t\t\t\t});\n\t\t\t\tdialog.on('close', function () {\n\t\t\t\t\t// move back to hidden place\n\t\t\t\t\tself.$el\n\t\t\t\t\t.find(\n\t\t\t\t\t\t'.sui-hidden .js-plugin-box[data-project=' + project_id + '] .js-mode-modal'\n\t\t\t\t\t)\n\t\t\t\t\t.append(\n\t\t\t\t\t\tself.$el.find('.sui-dialog.js-plugin-modal#plugin-modal-' + project_id)\n\t\t\t\t\t);\n\n\t\t\t\t\twindow.location.hash = '_';\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tloadPluginDialogContent: function (project_id) {\n\t\t\tvar dialog = this.$el.find('#plugin-modal-' + project_id);\n\t\t\tvar hash = dialog.data('hash');\n\t\t\tvar self = this;\n\n\t\t\t// conditional load\n\t\t\tif (dialog.find('.sui-box-body.js-dialog-body').hasClass('js-is-loading')) {\n\t\t\t\tvar ajaxData = {\n\t\t\t\t\taction: 'wdp-show-popup',\n\t\t\t\t\tpid: project_id,\n\t\t\t\t\ttype: 'info',\n\t\t\t\t\thash: hash,\n\t\t\t\t};\n\n\t\t\t\t$.post(\n\t\t\t\t\twindow.ajaxurl,\n\t\t\t\t\tajaxData,\n\t\t\t\t\tfunction (response) {\n\n\t\t\t\t\t\tif (response.success) {\n\t\t\t\t\t\t\tvar content = response.data.html;\n\t\t\t\t\t\t\tself.onPluginDialogContentLoaded(dialog, content);\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t'json'\n\t\t\t\t)\n\t\t\t\t.always(function () {\n\t\t\t\t\tdialog\n\t\t\t\t\t.find('.sui-modal-content .js-dialog-body')\n\t\t\t\t\t.removeClass('js-is-loading');\n\t\t\t\t\tdialog\n\t\t\t\t\t.find('.sui-modal-content .js-dialog-body')\n\t\t\t\t\t.find('.js-dialog-loader')\n\t\t\t\t\t.remove();\n\t\t\t\t})\n\t\t\t\t.fail(function (xhr, statusText, exception) {\n\t\t\t\t\t// dialog.find('.sui-notice.sui-notice-error').show();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tself.onPluginDialogContentLoaded(dialog, null);\n\t\t\t}\n\t\t\treturn false; // do think, probably loaded\n\t\t},\n\t\tonPluginDialogContentLoaded: function (dialog, content) {\n\t\t\tcontent = content || null;\n\n\t\t\t// write the content\n\t\t\tif (content) {\n\t\t\t\tdialog.find('.js-dialog-body').html(content);\n\t\t\t}\n\n\t\t\t// trigger first slider\n\t\t\tvar slider = dialog.find('.dashui-slider'),\n\t\t\t\tnavSlider = slider.find('ul.slider-nav'),\n\t\t\t\tmainSlider = dialog.find('.dashui-slider-main'),\n\t\t\t\tfirstImage = mainSlider.find('li:first-child img')\n\t\t\t;\n\n\t\t\tvar onSliderFirstImageLoaded = function () {\n\t\t\t\tnavSlider.find('li:first-child').trigger('click');\n\t\t\t};\n\n\t\t\tif (firstImage.get(0).complete) {\n\t\t\t\tonSliderFirstImageLoaded();\n\t\t\t} else {\n\t\t\t\tfirstImage.on('load', function () {\n\t\t\t\t\tonSliderFirstImageLoaded();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// go to changelog when needed\n\t\t\tif (this.isChangelogHash()) {\n\t\t\t\tdialog\n\t\t\t\t.find('.js-dialog-body')\n\t\t\t\t.find('.sui-tabs div[data-tabs=\"\"] div[data-index=changelog]')\n\t\t\t\t.trigger('click');\n\t\t\t} else {\n\t\t\t\t// force to overview tab\n\t\t\t\tdialog\n\t\t\t\t.find('.js-dialog-body')\n\t\t\t\t.find('.sui-tabs div[data-tabs=\"\"] div[data-index=overview]')\n\t\t\t\t.trigger('click');\n\t\t\t}\n\t\t},\n\t\tshowPluginDialogAfterInstall: function (project_id) {\n\t\t\tvar modalID = 'plugin-modal-after-install-' + project_id,\n\t\t\t\tcontainer = 'show-modal-' + project_id;\n\t\t\tSUI.openModal(\n\t\t\t\tmodalID,\n\t\t\t\tcontainer,\n\t\t\t\tundefined,\n\t\t\t\tfalse\n\t\t\t);\n\t\t},\n\t\tdisableActions: function (project_id) {\n\t\t\tthis.actionEnabled = false;\n\t\t\tthis.$el.find('.dashui-table-plugins .plugin-row-actions a').attr('disabled', 'disabled');\n\t\t\tthis.$el.find('.dashui-table-plugins .dashui-plugin-actions button').attr('disabled', 'disabled');\n\t\t\tthis.$el.find('.dashui-top-plugin .sui-actions-right a').attr('disabled', 'disabled');\n\t\t\tthis.$el.find('.dashui-new-plugin .sui-actions-right a').attr('disabled', 'disabled');\n\t\t\tthis.$el\n\t\t\t.find('.sui-dialog.js-plugin-modal .sui-box-header .sui-actions-right a')\n\t\t\t.attr('disabled', 'disabled');\n\t\t\tthis.$el\n\t\t\t.find('.sui-dialog.js-plugin-modal .sui-box-footer .sui-actions-right a')\n\t\t\t.attr('disabled', 'disabled');\n\n\t\t\tthis.$el.find('.dashui-table-plugins .plugin-row-actions a').addClass('disabled');\n\t\t\tthis.$el.find('.dashui-top-plugin .sui-actions-right a').addClass('disabled');\n\t\t\tthis.$el.find('.dashui-new-plugin .sui-actions-right a').addClass('disabled');\n\t\t\tthis.$el\n\t\t\t.find('.sui-dialog.js-plugin-modal .sui-box-header .sui-actions-right a')\n\t\t\t.addClass('disabled');\n\t\t\tthis.$el\n\t\t\t.find('.sui-dialog.js-plugin-modal .sui-box-footer .sui-actions-right a')\n\t\t\t.addClass('disabled');\n\n\t\t\tvar dropdownActions = this.$el.find('div.sui-dropdown a.js-dropdown-actions');\n\t\t\tif (null !== project_id) {\n\t\t\t\tdropdownActions = this.$el.find('div.sui-dropdown a.js-dropdown-actions[data-project=' + project_id + ']')\n\t\t\t}\n\n\t\t\tdropdownActions.addClass('sui-button-onload');\n\n\t\t\tthis.$el.find('input[name=search]').attr('disabled', 'disabled');\n\t\t\tthis.$el.find('.dashui-plugins-filter-tabs .sui-tabs-menu .sui-tab-item').css('cursor', 'not-allowed');\n\n\t\t},\n\t\tenableActions: function (project_id) {\n\t\t\tthis.actionEnabled = true;\n\t\t\tthis.$el.find('.dashui-table-plugins .plugin-row-actions a').prop(\"disabled\", false);\n\t\t\tthis.$el.find('.dashui-table-plugins .dashui-plugin-actions button').prop(\"disabled\", false);\n\t\t\tthis.$el.find('.dashui-top-plugin .sui-actions-right a').prop(\"disabled\", false);\n\t\t\tthis.$el.find('.dashui-new-plugin .sui-actions-right a').prop(\"disabled\", false);\n\t\t\tthis.$el\n\t\t\t.find('.sui-dialog.js-plugin-modal .sui-box-header .sui-actions-right a')\n\t\t\t.prop(\"disabled\", false);\n\t\t\tthis.$el\n\t\t\t.find('.sui-dialog.js-plugin-modal .sui-box-footer .sui-actions-right a')\n\t\t\t.prop(\"disabled\", false);\n\n\t\t\tthis.$el.find('.dashui-table-plugins .plugin-row-actions a').removeClass('disabled');\n\t\t\tthis.$el.find('.dashui-top-plugin .sui-actions-right a').removeClass('disabled');\n\t\t\tthis.$el.find('.dashui-new-plugin .sui-actions-right a').removeClass('disabled');\n\t\t\tthis.$el\n\t\t\t.find('.sui-dialog.js-plugin-modal .sui-box-header .sui-actions-right a')\n\t\t\t.removeClass('disabled');\n\t\t\tthis.$el\n\t\t\t.find('.sui-dialog.js-plugin-modal .sui-box-footer .sui-actions-right a')\n\t\t\t.removeClass('disabled');\n\n\t\t\tvar dropdownActions = this.$el.find('div.sui-dropdown a.js-dropdown-actions');\n\t\t\tif (null !== project_id) {\n\t\t\t\tdropdownActions = this.$el.find('div.sui-dropdown a.js-dropdown-actions[data-project=' + project_id + ']')\n\t\t\t}\n\n\t\t\tdropdownActions.removeClass('sui-button-onload');\n\t\t\tthis.$el.find('input[name=search]').prop(\"disabled\", false);\n\t\t\tthis.$el.find('.dashui-plugins-filter-tabs .sui-tabs-menu .sui-tab-item').css('cursor', 'pointer');\n\t\t},\n\t\tprocessHash: function () {\n\t\t\tvar hash = location.hash;\n\t\t\thash = hash.replace(/^#/, '');\n\t\t\thash = hash.split('=');\n\n\t\t\t// modal show\n\t\t\tif (hash[0] && hash[0] === 'pid' && hash[1]) {\n\t\t\t\tthis.showPluginDialog(hash[1]);\n\t\t\t} else if (hash[0] && hash[0] === 'install-pid' && hash[1]) {\n\t\t\t\tthis.directInstall(hash[1]);\n\t\t\t}\n\t\t},\n\t\tisChangelogHash: function () {\n\t\t\tvar hash = location.hash;\n\t\t\treturn hash.indexOf('changelog') !== -1;\n\t\t},\n\t\tisUpdateHash: function () {\n\t\t\tvar hash = location.hash;\n\t\t\thash = hash.replace(/^#/, '');\n\t\t\thash = hash.split('=');\n\n\t\t\tif (hash[0] && hash[0] === 'pid' && hash[1] && 'changelog' === hash[2]) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\trefreshUpdateCount: function (updated) {\n\t\t\tvar countOnWPMenu = $('.wdev-update-count'),\n\t\t\t\tcountOnTab = this.$el.find('.wdev-update-tab'),\n\t\t\t\tallTab = $('.wdev-all-tab');\n\n\t\t\tif (countOnTab.length) {\n\t\t\t\tvar count = countOnTab.data('count');\n\t\t\t\tcount = +count;\n\t\t\t\tvar prevCount = count;\n\t\t\t\tif (count > 0) {\n\t\t\t\t\tcount = count - updated;\n\t\t\t\t}\n\n\t\t\t\tif (count >= 0) {\n\t\t\t\t\tcountOnTab.data('count', count);\n\t\t\t\t\tcountOnWPMenu.data('count', count);\n\n\t\t\t\t\tif (countOnWPMenu.length) {\n\t\t\t\t\t\tcountOnWPMenu.find('span.countval').text(count);\n\t\t\t\t\t\tcountOnWPMenu.removeClass('count-' + prevCount);\n\t\t\t\t\t\tcountOnWPMenu.addClass('count-' + count);\n\t\t\t\t\t}\n\n\t\t\t\t\tcountOnTab.find('span.sui-tag').text(count);\n\t\t\t\t\tif (!count) {\n\t\t\t\t\t\tcountOnTab.parent('li').remove();\n\t\t\t\t\t\tallTab.parent('li').addClass('current');\n\t\t\t\t\t\tthis.filterPlugins('all', true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tclearHash: function () {\n\t\t\twindow.location.hash = '_';\n\t\t},\n\n\t\t/**\n\t\t * Install a plugin when asked from URL.\n\t\t *\n\t\t * @param {int} pid Project ID.\n\t\t *\n\t\t * @since 4.11.3\n\t\t */\n\t\tdirectInstall: function (pid) {\n\t\t\t// Get the row.\n\t\t\tlet div = $(\"#project-row-\" + pid);\n\t\t\t// Clean hash from URL.\n\t\t\tthis.clearHash();\n\t\t\t// Only if it's valid.\n\t\t\tif (div.length > 0) {\n\t\t\t\t// Scroll to the row.\n\t\t\t\t$('html, body').animate({\n\t\t\t\t\tscrollTop: div.offset().top\n\t\t\t\t}, 'slow');\n\t\t\t\t// Process install.\n\t\t\t\tthis.install({\n\t\t\t\t\tproject: pid,\n\t\t\t\t\thash: $('#project-install-hash').val(),\n\t\t\t\t\taction: 'project-install'\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n\n\t// A really lightweight plugin wrapper around the constructor,\n\t// preventing against multiple instantiations\n\t$.fn[pluginName] = function (options) {\n\t\treturn this.each(function () {\n\t\t\tif (!$.data(this, pluginName)) {\n\t\t\t\t$.data(this, pluginName, new wpmudevDashboardAdminPluginsPage(this, options));\n\t\t\t}\n\t\t});\n\t};\n})(jQuery, window, document);\n","// the semi-colon before function invocation is a safety net against concatenated\n// scripts and/or other plugins which may not be closed properly.\n;// noinspection JSUnusedLocalSymbols\n(function ($, window, document, undefined) {\n\n\t\"use strict\";\n\n\t// undefined is used here as the undefined global variable in ECMAScript 3 is\n\t// mutable (ie. it can be changed by someone else). undefined isn't really being\n\t// passed in so we can ensure the value of it is truly undefined. In ES5, undefined\n\t// can no longer be modified.\n\n\t// window and document are passed through as local variables rather than global\n\t// as this (slightly) quickens the resolution process and can be more efficiently\n\t// minified (especially when both are regularly referenced in your plugin).\n\n\t// Create the defaults once\n\tvar pluginName = \"wpmudevDashboardAdminSettingsPage\";\n\n\t// The actual plugin constructor\n\tfunction wpmudevDashboardAdminSettingsPage(element, options) {\n\t\tthis.element = element;\n\t\tthis.$el = $(this.element);\n\t\tthis.adminAddDialog = null;\n\t\tthis.translationDialog = null;\n\t\tthis.bulkAjaxQueueName = 'bulk-ajax-queue-translation';\n\t\tthis.init();\n\t}\n\n\t// Avoid Plugin.prototype conflicts\n\t$.extend(wpmudevDashboardAdminSettingsPage.prototype, {\n\t\tinit: function () {\n\t\t\tvar self = this;\n\t\t\tthis.prepareTranslationUpdateDialog();\n\t\t\tthis.attachEvents();\n\t\t\tthis.showAlertNotice();\n\t\t\tthis.initUsersSelect();\n\n\t\t\t$(window).trigger('hashchange');\n\t\t},\n\t\tattachEvents: function () {\n\t\t\tvar self = this;\n\n\t\t\t$(window).on('hashchange', function () {\n\t\t\t\tself.processHash();\n\t\t\t});\n\n\t\t\tthis.$el.on('change', 'input.js-plugin-check', function () {\n\t\t\t\tvar project_slug = $(this).val();\n\t\t\t\tif (!self.bulkPluginsList) {\n\t\t\t\t\tself.bulkPluginsList = [];\n\t\t\t\t}\n\t\t\t\tif ($(this).is(':checked')) {\n\t\t\t\t\tself.bulkPluginsList.push(project_slug);\n\t\t\t\t} else {\n\t\t\t\t\tvar bulkPluginsList = self.bulkPluginsList;\n\t\t\t\t\tbulkPluginsList = bulkPluginsList.filter(function (item) {\n\t\t\t\t\t\treturn item !== project_slug\n\t\t\t\t\t});\n\t\t\t\t\tself.bulkPluginsList = bulkPluginsList;\n\t\t\t\t}\n\t\t\t\tself.$el.trigger('wpmu:translation-projects');\n\t\t\t});\n\n\t\t\tthis.$el.on('wpmu:translation-projects', function () {\n\t\t\t\tvar slugs = self.bulkPluginsList;\n\n\t\t\t\tif (!slugs.length || self.bulkPluginAction === '') {\n\t\t\t\t\tself.$el\n\t\t\t\t\t.find('#update-selected-translations')\n\t\t\t\t\t.attr('disabled', 'disabled');\n\t\t\t\t} else {\n\t\t\t\t\tself.$el\n\t\t\t\t\t.find('#update-selected-translations')\n\t\t\t\t\t.removeAttr('disabled');\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.$el.on('submit', 'form#form-admin-add', function (e) {\n\t\t\t\t$(this).find('button[type=\"submit\"]').addClass('sui-button-onload');\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\t\tthis.$el.on('submit', 'form', function (e) {\n\t\t\t\tif ($(this).attr('id') !== 'form-admin-add') {\n\t\t\t\t\t$(this).find('button[type=\"submit\"]').addClass('sui-button-onload');\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t});\n\n\t\t\tthis.$el.on('click', '.modal-open', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tself.showModals(this);\n\t\t\t});\n\n\t\t\tthis.$el.on('click', '.js-remove-user-permisssions', function () {\n\t\t\t\t$(this).addClass('sui-button-onload');\n\t\t\t});\n\n\t\t\tif (this.isUpdateNotificationHash()) {\n\t\t\t\t// var message = window.wdp_locale.translation_installed;\n\t\t\t\tvar message = window.wdp_locale.translation_updated;\n\t\t\t\tmessage = message.replace('%s', this.getTranslationUpdateCount());\n\t\t\t\tthis.showNotification('js-translation-updated', message);\n\n\t\t\t\t//remove all the hash\n\t\t\t\tvar url = window.location.href.split(\"#\")[0] + '#translation';\n\t\t\t\t//add translation tab hash again\n\t\t\t\thistory.replaceState(null, null, url);\n\t\t\t}\n\t\t\t$(window).on('wpmudev:startTranslation', function () {\n\t\t\t\tself.applyBulkAction();\n\t\t\t});\n\n\t\t\tthis.$el.on('change', '.sui-mobile-nav', function (e) {\n\t\t\t\tself.mobileNav($(this).val());\n\t\t\t});\n\t\t},\n\t\tprocessHash: function () {\n\t\t\tvar hash = location.hash;\n\t\t\thash = hash.replace(/^#/, '');\n\n\t\t\tthis.$el.find('.sui-vertical-tabs li.sui-vertical-tab').removeClass('current');\n\t\t\tthis.$el.find('.js-sidenav-content').hide();\n\n\t\t\t//for update translation\n\t\t\tif (hash.includes('translation#')) {\n\t\t\t\thash = 'translation';\n\t\t\t}\n\n\t\t\tswitch (hash) {\n\t\t\t\tcase 'permissions':\n\t\t\t\t\tthis.$el.find('.sui-vertical-tabs li.sui-vertical-tab a[href$=\"#permissions\"]').closest('li.sui-vertical-tab').addClass('current');\n\t\t\t\t\tthis.$el.find('.js-sidenav-content#permissions').show();\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').val('#permissions');\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').trigger('change');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'translation':\n\t\t\t\t\tthis.$el.find('.sui-vertical-tabs li.sui-vertical-tab a[href$=\"#translation\"]').closest('li.sui-vertical-tab').addClass('current');\n\t\t\t\t\tthis.$el.find('.js-sidenav-content#translation').show();\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').val('#translation');\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').trigger('change');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'membership':\n\t\t\t\t\tthis.$el.find('.sui-vertical-tabs li.sui-vertical-tab a[href$=\"#membership\"]').closest('li.sui-vertical-tab').addClass('current');\n\t\t\t\t\tthis.$el.find('.js-sidenav-content#membership').show();\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').val('#membership');\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').trigger('change');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'apikey':\n\t\t\t\t\tthis.$el.find('.sui-vertical-tabs li.sui-vertical-tab a[href$=\"#apikey\"]').closest('li.sui-vertical-tab').addClass('current');\n\t\t\t\t\tthis.$el.find('.js-sidenav-content#apikey').show();\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').val('#apikey');\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').trigger('change');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'data':\n\t\t\t\t\tthis.$el.find('.sui-vertical-tabs li.sui-vertical-tab a[href$=\"#data\"]').closest('li.sui-vertical-tab').addClass('current');\n\t\t\t\t\tthis.$el.find('.js-sidenav-content#data').show();\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').val('#data');\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').trigger('change');\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.$el.find('.sui-vertical-tabs li.sui-vertical-tab a[href$=\"#general\"]').closest('li.sui-vertical-tab').addClass('current');\n\t\t\t\t\tthis.$el.find('.js-sidenav-content#general').show();\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').val('#general');\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').trigger('change');\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\tmobileNav: function (tab) {\n\t\t\tvar hash = location.hash;\n\t\t\tif (hash !== tab) {\n\t\t\t\tlocation.hash = tab;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Initialize dash icons selector.\n\t\t *\n\t\t * @since 4.11.1\n\t\t */\n\t\tinitUsersSelect: function () {\n\t\t\tvar self = this,\n\t\t\t\tchanged = false,\n\t\t\t\t// Main wrappers.\n\t\t\t\t$form = this.$el.find('#form-admin-add'),\n\t\t\t\t$added = $('#wpmudev-permissions-users-added'),\n\t\t\t\t$available = $('#wpmudev-permissions-users-all'),\n\t\t\t\t$addedLabel = $('#wpmudev-permissions-users-added-label'),\n\t\t\t\t$availableLabel = $('#wpmudev-permissions-users-all-label'),\n\t\t\t\t$noResultsNotice = $('#permissions-users-empty-results-notice'),\n\t\t\t\t$allAddedNotice = $('#permissions-users-all-added-notice'),\n\t\t\t\t$submit = $('#permissions-users-save');\n\n\t\t\t// Make sure it's disabled.\n\t\t\t$submit.prop('disabled', true);\n\n\t\t\t// On search input change.\n\t\t\t$('#search-user').on('input', function () {\n\t\t\t\tvar keyword = $(this).val().toLowerCase(),\n\t\t\t\t\t// Searchable by name, email, first name and last name.\n\t\t\t\t\t$searchable = '[data-name*=\"' + keyword + '\"],' +\n\t\t\t\t\t\t'[data-email*=\"' + keyword + '\"],' +\n\t\t\t\t\t\t'[data-username*=\"' + keyword + '\"]',\n\t\t\t\t\t$matchesAll = $($searchable, $available),\n\t\t\t\t\t$matchesAdded = $($searchable, $added),\n\t\t\t\t\t$elements = $('.permissions-user-available, .permissions-user-added', $form)\n\n\t\t\t\t// Hide notice.\n\t\t\t\t$noResultsNotice.addClass('sui-hidden')\n\t\t\t\t$allAddedNotice.addClass('sui-hidden');\n\n\t\t\t\t// If no search input, show all.\n\t\t\t\tif ('' === keyword) {\n\t\t\t\t\t$elements.show()\n\t\t\t\t\t$addedLabel.show()\n\t\t\t\t\t$availableLabel.show()\n\t\t\t\t\ttoggleNotice()\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t// Hide all.\n\t\t\t\t$elements.hide()\n\t\t\t\t$addedLabel.hide()\n\t\t\t\t$availableLabel.hide()\n\t\t\t\t// Go through each items.\n\t\t\t\tif ($matchesAdded.length > 0) {\n\t\t\t\t\t$matchesAdded.each(function () {\n\t\t\t\t\t\t// Show icon.\n\t\t\t\t\t\t$(this).show()\n\t\t\t\t\t})\n\t\t\t\t\t$addedLabel.show()\n\t\t\t\t}\n\t\t\t\tif ($matchesAll.length > 0) {\n\t\t\t\t\t$matchesAll.each(function () {\n\t\t\t\t\t\t// Show icon.\n\t\t\t\t\t\t$(this).show()\n\t\t\t\t\t})\n\t\t\t\t\t$availableLabel.show()\n\t\t\t\t}\n\t\t\t\tif (!$matchesAll.length && !$matchesAdded.length) {\n\t\t\t\t\t$noResultsNotice.removeClass('sui-hidden')\n\t\t\t\t\t$allAddedNotice.addClass('sui-hidden');\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t// On user add.\n\t\t\t$('.permissions-user-add').on('click', function () {\n\t\t\t\t// User list changed.\n\t\t\t\tchanged = true;\n\t\t\t\tvar $user = $(this).data('user'),\n\t\t\t\t\t$el = $(this).closest('.permissions-user-item');\n\t\t\t\t// Hide add button.\n\t\t\t\t$(this).addClass('sui-hidden');\n\t\t\t\t// Show remove button.\n\t\t\t\t$el.find('button.permissions-user-remove').removeClass('sui-hidden');\n\t\t\t\t// Add user id to input.\n\t\t\t\t$(this).closest('.dashui-item').append('<input type=\"hidden\" name=\"users[]\" class=\"user-id-hidden\" value=\"' + $user + '\"/>');\n\t\t\t\t// Move to added list.\n\t\t\t\t$added.append($el);\n\n\t\t\t\t// Show/hide notice.\n\t\t\t\ttoggleNotice();\n\n\t\t\t\t// Enable save button.\n\t\t\t\t$submit.prop('disabled', false);\n\t\t\t})\n\n\t\t\t// On user remove.\n\t\t\t$('.permissions-user-remove').on('click', function () {\n\t\t\t\t// User list changed.\n\t\t\t\tchanged = true;\n\t\t\t\tvar $user = $(this).data('user'),\n\t\t\t\t\t$el = $(this).closest('.permissions-user-item');\n\t\t\t\t// Hide remove button.\n\t\t\t\t$(this).addClass('sui-hidden');\n\t\t\t\t// Show add button.\n\t\t\t\t$el.find('button.permissions-user-add').removeClass('sui-hidden');\n\t\t\t\t// Remove input.\n\t\t\t\t$(this).closest('.dashui-item').find('.user-id-hidden').remove();\n\t\t\t\t// Move to added list.\n\t\t\t\t$available.append($el);\n\n\t\t\t\t// Show/hide notice.\n\t\t\t\ttoggleNotice();\n\n\t\t\t\t// Enable save button.\n\t\t\t\t$submit.prop('disabled', false);\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Show or hide empty notice.\n\t\t\t *\n\t\t\t * @since 4.11.2\n\t\t\t */\n\t\t\tfunction toggleNotice() {\n\t\t\t\tif ( $('#wpmudev-permissions-users-all').find('.permissions-user-item').length > 0 ) {\n\t\t\t\t\t$('#permissions-users-all-added-notice').addClass('sui-hidden');\n\t\t\t\t} else {\n\t\t\t\t\t$('#permissions-users-all-added-notice').removeClass('sui-hidden');\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tprepareTranslationUpdateDialog: function () {\n\t\t\tvar self = this;\n\t\t\tvar dialog = document.getElementById('bulk-action-translation-modal');\n\n\t\t\tif (dialog && dialog.length > 0) {\n\t\t\t\tdialog.on('open', function () {\n\t\t\t\t\tself.onTranslationUpdateShow();\n\t\t\t\t});\n\t\t\t\tdialog.on('close', function () {\n\t\t\t\t\tself.onTranslationUpdateHide();\n\t\t\t\t});\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t},\n\t\tonTranslationUpdateHide: function () {\n\t\t\tif ($.ajaxq.isRunning(this.bulkAjaxQueueName)) {\n\t\t\t\t$.ajaxq.abort(this.bulkAjaxQueueName);\n\t\t\t}\n\t\t},\n\t\tonTranslationUpdateShow: function () {\n\t\t\tthis.applyBulkAction();\n\t\t},\n\t\tapplyBulkAction: function () {\n\t\t\tvar dialog = this.$el.find('#bulk-action-translation-modal');\n\n\t\t\tthis.bulkActionProgress = 0;\n\t\t\tdialog.find('.sui-progress-text>span').text('0%');\n\t\t\tdialog.find('.js-bulk-actions-progress').css('width', '0%');\n\t\t\tdialog.find('.js-bulk-actions-loader-icon').show();\n\n\t\t\tthis.bulkActionErrors = [];\n\t\t\tvar i = 1;\n\t\t\tvar isLast = false;\n\t\t\tvar bulkPluginsCount = this.bulkPluginsList.length;\n\t\t\tif (bulkPluginsCount > 0) {\n\t\t\t\tfor (var index in this.bulkPluginsList) {\n\n\t\t\t\t\tif (i === bulkPluginsCount) {\n\t\t\t\t\t\tisLast = true;\n\t\t\t\t\t}\n\t\t\t\t\tif (this.bulkPluginsList) {\n\t\t\t\t\t\tthis.addBulkQueue(this.bulkPluginsList[index], isLast);\n\t\t\t\t\t}\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\taddBulkQueue: function (project_slug, isLast) {\n\t\t\tvar self = this;\n\t\t\tvar dialog = this.$el.find('#bulk-action-translation-modal');\n\t\t\tvar hashes = dialog.find('.js-bulk-hash').data();\n\t\t\tvar ajax_action = 'wdp-translation-update';\n\t\t\tvar hash = hashes['translationUpdate'];\n\t\t\tvar name = self.$el.find('#translation-bulk-action-' + project_slug).data('plugin-name');\n\t\t\tvar bulkPluginsCount = this.bulkPluginsList.length;\n\t\t\tvar progressIncreaser = 100 / bulkPluginsCount;\n\t\t\tprogressIncreaser = +progressIncreaser;\n\t\t\tprogressIncreaser = Math.floor(progressIncreaser);\n\n\t\t\tvar stateText = dialog.find('.js-bulk-actions-state');\n\t\t\tvar stateBaseText = window.wdp_locale.installing_translation;\n\n\n\t\t\t$.ajaxq(this.bulkAjaxQueueName, {\n\t\t\t\ttype: 'POST',\n\t\t\t\turl: window.ajaxurl,\n\t\t\t\tdata: {\n\t\t\t\t\taction: ajax_action,\n\t\t\t\t\thash: hash,\n\t\t\t\t\tslug: project_slug,\n\t\t\t\t\tis_network: +$('body').hasClass('network-admin'),\n\t\t\t\t},\n\t\t\t\tbeforeSend: function () {\n\t\t\t\t\tstateBaseText = stateBaseText.replace('%s', name);\n\t\t\t\t\tstateText.text(stateBaseText);\n\n\t\t\t\t},\n\t\t\t\tsuccess: function (response) {\n\t\t\t\t\tif (!response.success) {\n\t\t\t\t\t\tif (response.data && response.data.message) {\n\t\t\t\t\t\t\tdialog.find('.js-bulk-errors').append('<p>' + name + ' : ' + response.data.message + '</p>');\n\t\t\t\t\t\t\tdialog.find('.js-bulk-errors').show();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tself.bulkActionErrors.push(response.data.message);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: function (error) {\n\t\t\t\t\tdialog.find('.js-bulk-errors').show();\n\t\t\t\t\tdialog.find('.js-bulk-errors').append('<p>' + name + ' : HTTP Request Error</p>');\n\t\t\t\t\tself.bulkActionErrors.push('HTTP Request Error');\n\t\t\t\t},\n\t\t\t\tcomplete: function () {\n\t\t\t\t\tself.updateBulkProgressBar(dialog, progressIncreaser, true);\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t\tupdateBulkProgressBar: function (dialog, progressIncreaser, checkAjax) {\n\t\t\tvar currentProgress = this.bulkActionProgress;\n\t\t\tcurrentProgress = +currentProgress;\n\t\t\tcurrentProgress = Math.floor(currentProgress);\n\n\t\t\tthis.bulkActionProgress = currentProgress + progressIncreaser;\n\n\t\t\tdialog.find('.js-bulk-actions-progress').css('width', (this.bulkActionProgress) + '%');\n\t\t\tdialog.find('.sui-progress-text>span').text((this.bulkActionProgress) + '%');\n\n\t\t\tif (checkAjax && !$.ajaxq.isRunning(this.bulkAjaxQueueName)) {\n\t\t\t\tthis.onBulkActionCompleted();\n\t\t\t}\n\t\t},\n\t\tonBulkActionCompleted: function () {\n\t\t\tvar dialog = this.$el.find('#bulk-action-translation-modal');\n\t\t\tvar stateText = dialog.find('.js-bulk-actions-state');\n\t\t\tvar bulkPluginsCount = this.bulkPluginsList.length;\n\n\t\t\tdialog.find('.js-bulk-actions-progress').css('width', '100%');\n\t\t\tdialog.find('.sui-progress-text>span').text('100%');\n\t\t\tstateText.text('');\n\t\t\tdialog.find('.js-bulk-actions-loader-icon').hide();\n\t\t\tif (!this.bulkActionErrors.length) {\n\t\t\t\twindow.location.href += \"#translationUpdate=\" + bulkPluginsCount;\n\t\t\t\tlocation.reload();\n\t\t\t}\n\n\t\t},\n\t\tisUpdateNotificationHash: function () {\n\t\t\tvar hash = location.hash;\n\t\t\treturn hash.indexOf('translationUpdate') !== -1;\n\t\t},\n\t\tgetTranslationUpdateCount: function () {\n\t\t\tvar hash = location.hash,\n\t\t\t\tcount = 0,\n\t\t\t\tindex = hash.indexOf('translationUpdate');\n\t\t\tif (index !== -1) {\n\t\t\t\tcount = window.location.hash.slice(index);\n\t\t\t\tcount = count.split('=')[1];\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\t\tshowNotification: function (noticeID, message) {\n\t\t\tvar container = $('#' + noticeID),\n\t\t\t\tnoticeOptions = {};\n\n\t\t\tnoticeOptions.dismiss = {};\n\t\t\tnoticeOptions.autoclose = {};\n\t\t\tnoticeOptions.type = container.data('notice-type');\n\t\t\tnoticeOptions.dismiss.show = container.data('show-dismiss');\n\t\t\tnoticeOptions.autoclose.show = false;\n\n\t\t\tif (container.length !== 0) {\n\t\t\t\tmessage = '<p>' + message + '</p>';\n\t\t\t\tif ('success' === noticeOptions.type) {\n\t\t\t\t\tnoticeOptions.icon = 'check-tick';\n\t\t\t\t}\n\t\t\t\tSUI.openNotice(noticeID, message, noticeOptions);\n\t\t\t}\n\t\t},\n\t\tshowAlertNotice: function (container = '') {\n\t\t\tvar container = $('.sui-settings-notice-alert'),\n\t\t\t\tnoticeID = '',\n\t\t\t\tmessage = '',\n\t\t\t\tnoticeOptions = {};\n\n\t\t\tif (!container.length) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tnoticeOptions.dismiss = {};\n\t\t\tnoticeOptions.autoclose = {};\n\t\t\tnoticeOptions.type = container.data('notice-type');\n\t\t\tnoticeOptions.dismiss.show = container.data('show-dismiss');\n\t\t\tnoticeOptions.autoclose.show = false;\n\t\t\tmessage = container.data('notice-msg');\n\t\t\tnoticeID = container.attr('id');\n\n\t\t\tif ('success' === noticeOptions.type) {\n\t\t\t\tnoticeOptions.icon = 'check-tick';\n\t\t\t}\n\n\t\t\tSUI.openNotice(noticeID, message, noticeOptions);\n\t\t},\n\t\tshowModals: function (container) {\n\t\t\tlet modalId = $(container).data('modal-open'),\n\t\t\t\tfocusAfterClosed = container,\n\t\t\t\tfocusWhenOpen = undefined,\n\t\t\t\thasOverlayMask = $(container).data('modal-mask'),\n\t\t\t\thasTrigger = $(container).data('trigger');\n\n\t\t\tSUI.openModal(\n\t\t\t\tmodalId,\n\t\t\t\tfocusAfterClosed,\n\t\t\t\tfocusWhenOpen,\n\t\t\t\thasOverlayMask\n\t\t\t);\n\n\t\t\tif (hasTrigger) {\n\t\t\t\t$(window).trigger(hasTrigger);\n\t\t\t}\n\t\t},\n\t\tshowTranslationUpdateModal: function (container) {\n\n\t\t}\n\t});\n\n\t// A really lightweight plugin wrapper around the constructor,\n\t// preventing against multiple instantiations\n\t$.fn[pluginName] = function (options) {\n\t\treturn this.each(function () {\n\t\t\tif (!$.data(this, pluginName)) {\n\t\t\t\t$.data(this, pluginName, new wpmudevDashboardAdminSettingsPage(this, options));\n\t\t\t}\n\t\t});\n\t};\n\n})(jQuery, window, document);\n","/* global jQuery */\n(function ($) {\n\t'use strict'\n\n\t/**\n\t * Plugin's data settings management.\n\t *\n\t * @since 4.11.4\n\t */\n\t$(window).on('load', function () {\n\t\tlet confirmButton = $('#wpmudev-reset-settings-confirm-button')\n\n\t\t// Hide/Show fields when redirect to value changes.\n\t\tconfirmButton.on('click', function () {\n\t\t\t// sui-button-onload-text\n\t\t\tresetSettings()\n\t\t})\n\n\t\t/**\n\t\t * Reset plugin settings using ajax.\n\t\t *\n\t\t * @since 4.11.4\n\t\t */\n\t\tlet resetSettings = function () {\n\t\t\tconfirmButton.addClass('sui-button-onload-text')\n\n\t\t\tlet ajaxData = {\n\t\t\t\taction: 'wdp-reset-settings',\n\t\t\t\thash: confirmButton.data('hash'),\n\t\t\t}\n\n\t\t\t$.post(\n\t\t\t\twindow.ajaxurl,\n\t\t\t\tajaxData,\n\t\t\t\tfunction (response) {\n\t\t\t\t\tif (response.data && response.data.redirect) {\n\t\t\t\t\t\t// Redirect to success url.\n\t\t\t\t\t\twindow.location.href = response.data.redirect\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Reload as a fallback.\n\t\t\t\t\t\twindow.location.reload()\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t'json'\n\t\t\t).fail(function () {\n\t\t\t\twindow.location.reload()\n\t\t\t})\n\t\t}\n\t})\n})(jQuery)\n","// the semi-colon before function invocation is a safety net against concatenated\n// scripts and/or other plugins which may not be closed properly.\n;// noinspection JSUnusedLocalSymbols\n(function ($, window, document, undefined) {\n\n\t\"use strict\";\n\n\t// undefined is used here as the undefined global variable in ECMAScript 3 is\n\t// mutable (ie. it can be changed by someone else). undefined isn't really being\n\t// passed in so we can ensure the value of it is truly undefined. In ES5, undefined\n\t// can no longer be modified.\n\n\t// window and document are passed through as local variables rather than global\n\t// as this (slightly) quickens the resolution process and can be more efficiently\n\t// minified (especially when both are regularly referenced in your plugin).\n\n\t// Create the defaults once\n\tvar pluginName = \"wpmudevDashboardAdminSupportPage\";\n\n\t// The actual plugin constructor\n\tfunction wpmudevDashboardAdminSupportPage(element, options) {\n\t\tthis.element = element;\n\t\tthis.$el = $(this.element);\n\t\tthis.secDialog = null;\n\t\tthis.init();\n\t}\n\n\t// Avoid Plugin.prototype conflicts\n\t$.extend(wpmudevDashboardAdminSupportPage.prototype, {\n\t\tinit: function () {\n\t\t\tthis.attachEvents();\n\t\t\tthis.showAlertNotice();\n\t\t\t$(window).trigger('hashchange');\n\t\t\tthis.$el.find('.sui-tabs-menu.js-filter-ticket .sui-tab-item.active').trigger('click');\n\t\t},\n\t\tattachEvents: function () {\n\t\t\tvar self = this;\n\t\t\tthis.$el.on('click', '.sui-tabs div[data-tabs=\"\"] div', function () {\n\t\t\t\tvar tabWrapper = $(this).closest('.sui-tabs');\n\t\t\t\tvar index = $(this).data('index');\n\n\t\t\t\ttabWrapper.find('div[data-tabs=\"\"] div').removeClass('active');\n\t\t\t\t$(this).addClass('active');\n\n\t\t\t\ttabWrapper.find('div[data-panes=\"\"] div').removeClass('active');\n\t\t\t\ttabWrapper.find('div[data-panes=\"\"] div[data-index=\"' + index + '\"]').addClass('active');\n\t\t\t});\n\n\t\t\tthis.$el.on('click', '.js-modal-security', function (e) {\n\t\t\t\tself.showSupportAccessInfoModal();\n\t\t\t});\n\n\t\t\t$(window).on('hashchange', function () {\n\t\t\t\tself.processHash();\n\t\t\t});\n\n\t\t\tthis.$el.find('.sui-tabs-menu.js-filter-ticket .sui-tab-item').click(function () {\n\t\t\t\t$(this).closest('.sui-tabs-menu').find('.sui-tab-item').removeClass('active');\n\t\t\t\t$(this).addClass('active');\n\t\t\t\tself.filterTickets($(this).data('filter'));\n\t\t\t});\n\n\t\t\tthis.$el.on('click', '.sui-notice-top .sui-notice-dismiss', function (e) {\n\t\t\t\te.preventDefault();\n\t\t\t\t$(this).closest('.sui-notice-top').stop().slideUp('slow');\n\t\t\t});\n\n\t\t\tthis.$el.on('submit', 'form', function (e) {\n\t\t\t\t$(this).find('button[type=\"submit\"]').addClass('sui-button-onload');\n\t\t\t});\n\n\t\t\tthis.$el.on('click', '.js-loading-link', function (e) {\n\t\t\t\t$(this).addClass('sui-button-onload');\n\t\t\t});\n\n\t\t\tthis.$el.on('click', '#close-sec-det', function () {\n\t\t\t\tSUI.closeModal();\n\t\t\t});\n\n\t\t\tthis.$el.on('change', '.sui-mobile-nav', function (e) {\n\t\t\t\tself.mobileNav( $(this).val() );\n\t\t\t});\n\t\t},\n\t\tprocessHash: function (mob = true) {\n\t\t\tvar hash = location.hash;\n\t\t\thash = hash.replace(/^#/, '');\n\n\t\t\tthis.$el.find('.sui-vertical-tabs li.sui-vertical-tab').removeClass('current');\n\t\t\tthis.$el.find('.js-sidenav-content').hide();\n\n\t\t\tswitch (hash) {\n\t\t\t\tcase 'access':\n\t\t\t\t\tthis.$el.find('.sui-vertical-tabs li.sui-vertical-tab a[href=\"#access\"]').closest('li.sui-vertical-tab').addClass('current');\n\t\t\t\t\tthis.$el.find('.js-sidenav-content#access').show();\n\t\t\t\t\tif (mob) {\n\t\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').val('#access');\n\t\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').trigger('change');\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'system':\n\t\t\t\t\tthis.$el.find('.sui-vertical-tabs li.sui-vertical-tab a[href=\"#system\"]').closest('li.sui-vertical-tab').addClass('current');\n\t\t\t\t\tthis.$el.find('.js-sidenav-content#system').show();\n\t\t\t\t\tif (mob) {\n\t\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').val('#system');\n\t\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').trigger('change');\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.$el.find('.sui-vertical-tabs li.sui-vertical-tab a[href=\"#ticket\"]').closest('li.sui-vertical-tab').addClass('current');\n\t\t\t\t\tthis.$el.find('.js-sidenav-content#ticket').show();\n\t\t\t\t\tif (mob) {\n\t\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').val('#ticket');\n\t\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').trigger('change');\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\tmobileNav: function (tab) {\n\t\t\tvar hash = location.hash;\n\t\t\tif (hash !== tab) {\n\t\t\t\tlocation.hash = tab;\n\t\t\t}\n\t\t},\n\t\tfilterTickets: function (filter) {\n\t\t\tthis.$el.find('.js-filter-ticket-content').hide();\n\t\t\tthis.$el.find('.js-filter-ticket-content[data-filter=' + filter + ']').show();\n\t\t},\n\t\tshowAlertNotice: function () {\n\t\t\tvar container = $('.sui-support-notice-alert'),\n\t\t\t\tnoticeID = '',\n\t\t\t\tmessage = '',\n\t\t\t\tnoticeOptions = {};\n\n\t\t\tif (!container.length) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tnoticeOptions.dismiss = {};\n\t\t\tnoticeOptions.autoclose = {};\n\t\t\tnoticeOptions.type = container.data('notice-type');\n\t\t\t;\n\t\t\tnoticeOptions.dismiss.show = container.data('show-dismiss');\n\t\t\tnoticeOptions.autoclose.show = false;\n\t\t\tmessage = container.data('notice-msg');\n\t\t\tnoticeID = container.attr('id');\n\n\t\t\tif ('success' === noticeOptions.type) {\n\t\t\t\tnoticeOptions.icon = 'check-tick';\n\t\t\t}\n\n\t\t\tSUI.openNotice(noticeID, message, noticeOptions);\n\n\t\t},\n\t\tshowSupportAccessInfoModal: function () {\n\t\t\tvar self = this,\n\t\t\t\tmodalID = 'security-details',\n\t\t\t\tcontainer = 'modal-security';\n\n\t\t\tSUI.openModal(\n\t\t\t\tmodalID,\n\t\t\t\tcontainer,\n\t\t\t\tundefined,\n\t\t\t\ttrue\n\t\t\t);\n\t\t},\n\t});\n\n\t// A really lightweight plugin wrapper around the constructor,\n\t// preventing against multiple instantiations\n\t$.fn[pluginName] = function (options) {\n\t\treturn this.each(function () {\n\t\t\tif (!$.data(this, pluginName)) {\n\t\t\t\t$.data(this, pluginName, new wpmudevDashboardAdminSupportPage(this, options));\n\t\t\t}\n\t\t});\n\t};\n\n})(jQuery, window, document);\n",";// noinspection JSUnusedLocalSymbols\n(function($, window, document, undefined) {\n\n\t'use strict'\n\n\t// Create the defaults once\n\tvar pluginName = 'wpmudevDashboardAdminToolsPage'\n\n\t// The actual plugin constructor\n\tfunction wpmudevDashboardAdminToolsPage(element, options) {\n\t\tthis.element = element\n\t\tthis.$el = $(this.element)\n\t\tthis.wpMediaFrames = {}\n\t\tthis.initDashIconPicker()\n\t\tthis.init()\n\t}\n\n\t// Avoid Plugin.prototype conflicts\n\t$.extend(wpmudevDashboardAdminToolsPage.prototype, {\n\t\tinit: function() {\n\t\t\tthis.attachEvents()\n\t\t\t$(window).trigger('hashchange')\n\t\t\tthis.initBrandingMediaUploader()\n\t\t\tthis.initBrandingLinkLogo()\n\t\t\tthis.showAlertNotice()\n\t\t\tthis.initSitesActions()\n\t\t\tthis.overflowTabsShowArrowRight()\n\t\t},\n\t\tattachEvents: function() {\n\t\t\tvar self = this\n\t\t\tthis.$el.on('click', '.sui-tabs div[data-tabs=\"\"] div', function() {\n\t\t\t\tvar tabWrapper = $(this).closest('.sui-tabs')\n\t\t\t\tvar index = $(this).data('index')\n\n\t\t\t\ttabWrapper.find('div[data-tabs=\"\"] div').removeClass('active')\n\t\t\t\t$(this).addClass('active')\n\n\t\t\t\ttabWrapper.find('div[data-panes=\"\"] div').removeClass('active')\n\t\t\t\ttabWrapper.find('div[data-panes=\"\"] div[data-index=\"' + index + '\"]').addClass('active')\n\t\t\t})\n\n\t\t\t$(window).on('hashchange', function() {\n\t\t\t\tself.processHash()\n\t\t\t})\n\n\t\t\tthis.$el.on('click', '.sui-notice-top .sui-notice-dismiss', function(e) {\n\t\t\t\te.preventDefault()\n\t\t\t\t$(this).closest('.sui-notice-top').stop().slideUp('slow')\n\t\t\t\treturn false\n\t\t\t})\n\n\t\t\tthis.$el.on('submit', 'form', function(e) {\n\t\t\t\t$(this).find('button[type=\"submit\"]').addClass('sui-button-onload')\n\n\t\t\t\treturn true\n\t\t\t})\n\n\t\t\t// On plugin tab change.\n\t\t\tthis.$el.find('.tab-content-wpmudev-plugin-item').on('click', function() {\n\t\t\t\t$('#wpmudev-labels-config-selected').val($(this).data('pid'));\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Setup media uploader for custom image.\n\t\t *\n\t\t * @since 4.0\n\t\t */\n\t\tinitBrandingMediaUploader: function() {\n\t\t\tvar self = this\n\n\t\t\tthis.$el.find('.wp-browse-media').each(function() {\n\t\t\t\tvar mediaButton = $(this)\n\t\t\t\tmediaButton.on('click', function(event) {\n\t\t\t\t\tevent.preventDefault()\n\n\t\t\t\t\tvar wrapperId = mediaButton.data('upload-wrapper-id')\n\t\t\t\t\tvar wrapper = self.$el.find('#' + wrapperId)\n\n\t\t\t\t\t// If the media frame already exists, reopen it.\n\t\t\t\t\tif (self.wpMediaFrames.hasOwnProperty(wrapperId)) {\n\t\t\t\t\t\tself.wpMediaFrames[wrapperId].open()\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\n\t\t\t\t\t// Create a new media frame\n\t\t\t\t\tself.wpMediaFrames[wrapperId] = wp.media({\n\t\t\t\t\t\ttitle: mediaButton.data('frame-title'),\n\t\t\t\t\t\tbutton: {\n\t\t\t\t\t\t\ttext: mediaButton.data('button-text')\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmultiple: false\n\t\t\t\t\t})\n\n\t\t\t\t\t// When an image is selected in the media frame...\n\t\t\t\t\tself.wpMediaFrames[wrapperId].on('select', function() {\n\n\t\t\t\t\t\t// Get media attachment details from the frame state\n\t\t\t\t\t\tvar attachment = self.wpMediaFrames[wrapperId].state().get('selection').first().toJSON(),\n\t\t\t\t\t\t\tinput = self.$el.find('#' + mediaButton.data('input-id')),\n\t\t\t\t\t\t\tinputId = self.$el.find('#' + mediaButton.data('input-id-container')),\n\t\t\t\t\t\t\tpreview = self.$el.find('#' + mediaButton.data('preview-id')),\n\t\t\t\t\t\t\ttext = self.$el.find('#' + mediaButton.data('text-id'))\n\n\n\t\t\t\t\t\t// Send the attachment URL to our custom image input field.\n\t\t\t\t\t\tpreview.css('background-image', 'url(' + attachment.url + ')')\n\t\t\t\t\t\t// Send the attachment url to our input\n\t\t\t\t\t\tinput.val(attachment.url)\n\t\t\t\t\t\tinputId.val(attachment.id)\n\t\t\t\t\t\twrapper.addClass('sui-has_file')\n\t\t\t\t\t\ttext.html(attachment.url)\n\t\t\t\t\t})\n\n\t\t\t\t\tself.wpMediaFrames[wrapperId].on('open', function() {\n\t\t\t\t\t\tif (self.$el.hasClass('wpmud')) {\n\t\t\t\t\t\t\tself.$el.removeClass('wpmud')\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\tself.wpMediaFrames[wrapperId].on('close', function() {\n\t\t\t\t\t\tif (!self.$el.hasClass('wpmud')) {\n\t\t\t\t\t\t\tself.$el.addClass('wpmud')\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\t// Finally, open the modal on click\n\t\t\t\t\tself.wpMediaFrames[wrapperId].open()\n\t\t\t\t\treturn false\n\t\t\t\t})\n\t\t\t})\n\n\t\t\tthis.$el.find('.js-clear-image').each(function() {\n\t\t\t\tvar mediaButton = self.$el.find('#' + $(this).data('media-button-id'))\n\t\t\t\t$(this).on('click', function(event) {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tvar input = self.$el.find('#' + mediaButton.data('input-id')),\n\t\t\t\t\t\tinputId = self.$el.find('#' + mediaButton.data('input-id-container')),\n\t\t\t\t\t\tpreview = self.$el.find('#' + mediaButton.data('preview-id')),\n\t\t\t\t\t\twrapper = self.$el.find('#' + mediaButton.data('upload-wrapper-id')),\n\t\t\t\t\t\ttext = self.$el.find('#' + mediaButton.data('text-id'))\n\n\t\t\t\t\t// Send the attachment URL to our custom image input field.\n\t\t\t\t\tpreview.css('background-image', 'url()')\n\t\t\t\t\t// Send the attachment url to our input\n\t\t\t\t\tinput.val('')\n\t\t\t\t\tinputId.val('')\n\t\t\t\t\twrapper.removeClass('sui-has_file')\n\t\t\t\t\ttext.html('')\n\t\t\t\t\treturn false\n\t\t\t\t})\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Handle custom logo link input.\n\t\t *\n\t\t * Custom link can be anything but in a proper url format.\n\t\t *\n\t\t * @since 4.11.1\n\t\t */\n\t\tinitBrandingLinkLogo: function() {\n\t\t\tlet self = this,\n\t\t\t\t// Save button.\n\t\t\t\t$submitbtn = $('#save_changes')\n\n\t\t\tthis.$el.find('.wp-link-media').each(function() {\n\t\t\t\tvar $input = $(this),\n\t\t\t\t\t// Clear buttons.\n\t\t\t\t\t$clearbtn = self.$el.find('#' + $input.data('clear-btn-id')),\n\t\t\t\t\t// Preview wrapper.\n\t\t\t\t\t$preview = self.$el.find('#' + $input.data('preview-id')),\n\t\t\t\t\t// Field wrapper.\n\t\t\t\t\t$formfield = self.$el.find('#' + $input.data('form-field-id')),\n\t\t\t\t\t// Field wrapper.\n\t\t\t\t\t$type = self.$el.find('[name=\"' + $input.data('tab-type-name') + '\"]')\n\n\t\t\t\t$input.on('input linkUpdate', function() {\n\t\t\t\t\tlet url = $input.val()\n\n\t\t\t\t\t// Remove form errors.\n\t\t\t\t\t$formfield.removeClass('sui-form-field-error')\n\t\t\t\t\t// Enable submit.\n\t\t\t\t\t$submitbtn.prop('disabled', false)\n\n\t\t\t\t\t// If some value is found, show clear button.\n\t\t\t\t\turl.length > 0 ? $clearbtn.removeClass('hidden-clear-link') : $clearbtn.addClass('hidden-clear-link')\n\n\t\t\t\t\t// Check if it is a valid link.\n\t\t\t\t\tif (self.isValidLink(url)) {\n\t\t\t\t\t\t// Set background image.\n\t\t\t\t\t\t$preview.css('background-image', 'url(' + url + ')').addClass('has-logo-image')\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Remove background image.\n\t\t\t\t\t\t$preview.css('background-image', 'url()').removeClass('has-logo-image')\n\t\t\t\t\t\t// Set error.\n\t\t\t\t\t\tif (url.length > 0) {\n\t\t\t\t\t\t\t// Show errors.\n\t\t\t\t\t\t\t$formfield.addClass('sui-form-field-error')\n\t\t\t\t\t\t\t// Disable submit.\n\t\t\t\t\t\t\t$submitbtn.prop('disabled', true)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn false\n\t\t\t\t})\n\n\t\t\t\t// On clear button click.\n\t\t\t\t$clearbtn.on('click', function() {\n\t\t\t\t\t// Link input.\n\t\t\t\t\t$input.val('').trigger('linkUpdate')\n\t\t\t\t})\n\n\t\t\t\t// If tab changed.\n\t\t\t\tif ($type.length > 0) {\n\t\t\t\t\t$type.on('change', function() {\n\t\t\t\t\t\t// Link input.\n\t\t\t\t\t\tif ('link' === $(this).val()) {\n\t\t\t\t\t\t\t$input.trigger('linkUpdate')\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (!self.isValidLink($input.val())) {\n\t\t\t\t\t\t\t\t// Clear input and error.\n\t\t\t\t\t\t\t\t$input.val('').trigger('linkUpdate')\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\n\t\t/**\n\t\t * Initialize dash icons selector.\n\t\t *\n\t\t * @since 4.11.1\n\t\t */\n\t\tinitDashIconPicker: function() {\n\t\t\tvar self = this,\n\t\t\t\t// Main wrappers.\n\t\t\t\t$wrapper = this.$el.find('.wpmudev-dashicon-picker')\n\n\t\t\t// On each dash icons set.\n\t\t\t$wrapper.each(function() {\n\t\t\t\t// Main wrapper.\n\t\t\t\tvar $iconWrapper = $(this),\n\t\t\t\t\t// Get search input and icon input.\n\t\t\t\t\t$search = $('#' + $(this).data('search-id')),\n\t\t\t\t\t$input = $('#' + $(this).data('input-id'))\n\n\t\t\t\t// On icon click.\n\t\t\t\t$(this).find('.wpmudev-dashicons').on('click', function() {\n\t\t\t\t\t// Make all icons not selected.\n\t\t\t\t\t$iconWrapper.find('.wpmudev-dashicons.active').removeClass('active')\n\t\t\t\t\t// Select current icon.\n\t\t\t\t\t$(this).addClass('active')\n\t\t\t\t\t// Set value to the hidden field.\n\t\t\t\t\t$input.val($(this).data('icon'))\n\t\t\t\t})\n\n\t\t\t\t// On search input change.\n\t\t\t\t$search.on('input', function() {\n\t\t\t\t\tvar keyword = $(this).val(),\n\t\t\t\t\t\t$matches = $('[data-icon*=\"' + keyword + '\"]', $iconWrapper),\n\t\t\t\t\t\t$elements = $('.wpmudev-dashicon-picker-group, .wpmudev-dashicons', $iconWrapper)\n\n\t\t\t\t\t// If no search input, show all.\n\t\t\t\t\tif ('' === keyword) {\n\t\t\t\t\t\t$elements.show()\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\n\t\t\t\t\t// Hide all.\n\t\t\t\t\t$elements.hide()\n\t\t\t\t\t// Go through each items.\n\t\t\t\t\t$matches.each(function() {\n\t\t\t\t\t\t// Show icon.\n\t\t\t\t\t\t$(this).show()\n\t\t\t\t\t\t// Show the group.\n\t\t\t\t\t\t$(this).closest('.wpmudev-dashicon-picker-group').show()\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Initialize sites add action.\n\t\t *\n\t\t * @since 4.11.1\n\t\t */\n\t\tinitSitesActions: function() {\n\t\t\tvar self = this\n\t\t\t// Add new sites.\n\t\t\tthis.$el.on('change', '#wpmudev-labels-subsites-select', function(e) {\n\t\t\t\tvar site = $(this).val()\n\t\t\t\t// Add values.\n\t\t\t\t$('<input>', {\n\t\t\t\t\ttype: 'hidden',\n\t\t\t\t\tname: 'labels_subsites[]',\n\t\t\t\t\tvalue: site\n\t\t\t\t}).appendTo('#wpmudev-labels-subsites-content')\n\t\t\t\t// Submit form.\n\t\t\t\t// We need to clock the button to save.\n\t\t\t\tself.$el.find('#save_changes').click()\n\t\t\t})\n\n\t\t\t// Add loading animation.\n\t\t\tthis.$el.on('click', '.js-remove-whitelabel-site', function() {\n\t\t\t\t$(this).addClass('sui-button-onload')\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Check if the link is in url format.\n\t\t *\n\t\t * @param {string} link Link\n\t\t *\n\t\t * @since 4.11\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisValidLink: function(link) {\n\t\t\treturn /(http|https):\\/\\/(\\w+:{0,1}\\w*)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%!\\-\\/]))?/.test(link)\n\t\t},\n\t\tprocessHash: function() {\n\t\t\tvar hash = location.hash\n\t\t\thash = hash.replace(/^#/, '')\n\n\t\t\tthis.$el.find('.sui-vertical-tabs li.sui-vertical-tab').removeClass('current')\n\t\t\tthis.$el.find('.js-sidenav-content').hide()\n\n\t\t\tswitch (hash) {\n\t\t\t\tcase 'whitelabel':\n\t\t\t\t\tthis.$el.find('.sui-vertical-tabs li.sui-vertical-tab a[href$=\"#whitelabel\"]').closest('li.sui-vertical-tab').addClass('current')\n\t\t\t\t\tthis.$el.find('.js-sidenav-content#whitelabel').show()\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').val('#whitelabel')\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').trigger('change')\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\tthis.$el.find('.sui-vertical-tabs li.sui-vertical-tab a[href$=\"#analytics\"]').closest('li.sui-vertical-tab').addClass('current')\n\t\t\t\t\tthis.$el.find('.js-sidenav-content#analytics').show()\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').val('#analytics')\n\t\t\t\t\tthis.$el.find('.sui-sidenav select.sui-mobile-nav').trigger('change')\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t},\n\t\tshowAlertNotice: function() {\n\t\t\tvar container = $('.sui-tools-notice-alert'),\n\t\t\t\tnoticeID = '',\n\t\t\t\tmessage = '',\n\t\t\t\tnoticeOptions = {}\n\n\t\t\tif (!container.length) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tnoticeOptions.dismiss = {}\n\t\t\tnoticeOptions.autoclose = {}\n\t\t\tnoticeOptions.type = container.data('notice-type')\n\t\t\tnoticeOptions.dismiss.show = container.data('show-dismiss')\n\t\t\tnoticeOptions.autoclose.show = false\n\t\t\tmessage = container.data('notice-msg')\n\t\t\tnoticeID = container.attr('id')\n\n\t\t\tif ('success' === noticeOptions.type) {\n\t\t\t\tnoticeOptions.icon = 'check-tick'\n\t\t\t}\n\n\t\t\tSUI.openNotice(noticeID, message, noticeOptions)\n\t\t},\n\n\t\t/**\n\t\t * Shows right arrow to scroll tab panes in the overflown tab menu\n\t\t *\n\t\t * @since 4.11.6\n\t\t *\n\t\t * @return {void}\n\t\t */\n\t\toverflowTabsShowArrowRight: function () {\n\t\t\tthis.$el.on('click', '.sui-side-tabs .sui-tab-item', function (e) {\n\t\t\t\tlet $parentTabsElement = $(this).closest('.sui-side-tabs')\n\t\t\t\tlet $tabsElements = $parentTabsElement.find('.sui-tabs-overflow')\n\n\t\t\t\t$tabsElements.each(function (index, element) {\n\t\t\t\t\tSUI.tabsOverflow($(element))\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\t})\n\n\t// A really lightweight plugin wrapper around the constructor,\n\t// preventing against multiple instantiations\n\t$.fn[pluginName] = function(options) {\n\t\treturn this.each(function() {\n\t\t\tif (!$.data(this, pluginName)) {\n\t\t\t\t$.data(this, pluginName, new wpmudevDashboardAdminToolsPage(this, options))\n\t\t\t}\n\t\t})\n\t}\n\n})(jQuery, window, document)\n","module.exports = jQuery;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","import '../scss/dashboard-admin.scss';\n\n// shared ui\nimport \"@wpmudev/shared-ui/dist/js/_src/dropdowns\";\nimport \"@wpmudev/shared-ui/dist/js/_src/select2.full\";\nimport \"@wpmudev/shared-ui/dist/js/_src/select2\";\nimport \"@wpmudev/shared-ui/dist/js/_src/password\";\nimport \"@wpmudev/shared-ui/dist/js/_src/notifications\";\nimport \"@wpmudev/shared-ui/dist/js/_src/modal-dialog\";\nimport \"@wpmudev/shared-ui/dist/js/_src/tabs\";\nimport \"@wpmudev/shared-ui/dist/js/_src/side-tabs\";\nimport \"ajaxq\";\nimport \"./admin/plugins\";\nimport \"./admin/support\";\nimport \"./admin/tools\";\nimport \"./admin/settings\";\nimport \"./admin/login\";\nimport \"./admin/dashboard\";\nimport \"./admin/common\";\nimport \"./admin/settings/data\";\n\n// export A11yDialog\njQuery(document).ready(function () {\n\tjQuery(\"body.wpmud-plugins\").wpmudevDashboardAdminPluginsPage();\n\tjQuery(\"body.wpmud-support\").wpmudevDashboardAdminSupportPage();\n\tjQuery(\"body.wpmud-analytics\").wpmudevDashboardAdminToolsPage();\n\tjQuery(\"body.wpmud-whitelabel\").wpmudevDashboardAdminToolsPage();\n\tjQuery(\"body.wpmud-settings\").wpmudevDashboardAdminSettingsPage();\n\tjQuery(\"body.wpmud-login\").wpmudevDashboardAdminLoginPage();\n\tjQuery(\"body.wpmud-dashboard\").wpmudevDashboardAdminDashboardPage();\n\tjQuery(\"body.wpmudevdash\").wpmudevDashboardAdminCommon();\n\n\tjQuery(document).trigger(\"wpmud.ready\");\n});\n"],"names":["_typeof","obj","Symbol","iterator","constructor","prototype","$","window","SUI","linkDropdown","closeAllDropdowns","$except","$dropdowns","not","removeClass","on","e","$parent","this","parent","hasClass","toggleClass","preventDefault","$anchor","is","target","has","length","jQuery","aria","KeyCode","BACKSPACE","TAB","RETURN","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","DELETE","Utils","remove","item","parentNode","removeChild","isFocusable","element","tabIndex","getAttribute","disabled","nodeName","href","rel","type","simulateClick","evt","MouseEvent","bubbles","cancelable","view","dispatchEvent","IgnoreUtilFocusChanges","dialogOpenClass","focusFirstDescendant","i","childNodes","child","attemptFocus","focusLastDescendant","focus","document","activeElement","OpenDialogList","Array","getCurrentDialog","closeCurrentDialog","currentDialog","close","handleEscape","event","which","keyCode","stopPropagation","Dialog","dialogId","focusAfterClosed","focusFirst","hasOverlayMask","isCloseOnEsc","arguments","undefined","isAnimated","dialogNode","getElementById","Error","validRoles","trim","split","some","token","role","openEvent","Event","backdropClass","classList","contains","backdropNode","createElement","className","setAttribute","insertBefore","dialogNodev","appendChild","add","body","preDiv","preNode","onclick","postDiv","postNode","nextSibling","removeListeners","addListeners","push","lastFocus","afterOpenEvent","self","closeEvent","pop","setTimeout","slides","querySelectorAll","hasAttribute","newDialogSize","newDialogLabel","getDialogLabel","newDialogDesc","getDialogDesc","removeAttribute","afterCloseEvent","replace","newDialogId","newFocusAfterClosed","newFocusFirst","slide","newSlideId","newSlideFocus","newSlideEntrance","animation","getAllSlides","getNewSlide","addEventListener","trapFocus","removeEventListener","parentElement","openModal","dialogOverlay","closeModal","replaceModal","slideModal","modalDialog","button","buttonOpen","buttonClose","buttonReplace","buttonSlide","overlayMask","modalId","slideId","closeFocus","newFocus","attr","_defineProperty","key","value","Object","defineProperty","enumerable","configurable","writable","_this","openNotice","noticeId","noticeMessage","noticeOptions","noticeNode","nodeWrapper","utils","allowedNotices","isObject","isPlainObject","deepMerge","_len","sources","_key","source","shift","assign","apply","concat","setProperties","incomingOptions","options","icon","dismiss","show","label","tooltip","autoclose","timeout","buildDismiss","html","innerHTML","buildIcon","buildMessage","prepend","buildNotice","append","showNotice","addClass","each","removeAttr","slideDown","find","trigger","closeNotice","parseInt","fadeIn","slideUp","fadeOut","hide","hideNotice","empty","notice","Open","paragraph","Close","closest","btnOpen","btnClose","init","showHidePassword","$this","off","$button","$input","$icon","prop","S2","fn","select2","amd","requirejs","require","define","undef","main","_req","makeMap","handlers","defined","waiting","config","defining","hasOwn","hasOwnProperty","aps","slice","jsSuffixRegExp","hasProp","call","normalize","name","baseName","nameParts","nameSegment","mapValue","foundMap","lastIndex","foundI","foundStarMap","starI","j","part","baseParts","map","starMap","nodeIdCompat","test","charAt","splice","join","makeRequire","relName","forceSync","args","makeNormalize","makeLoad","depName","callDep","splitPrefix","prefix","index","indexOf","substring","makeRelParts","makeConfig","relParts","plugin","parts","relResourceName","f","n","pr","p","exports","module","id","uri","deps","callback","cjsModule","ret","usingExports","callbackType","load","alt","cfg","_defined","_$","console","error","getMethods","theClass","proto","methods","methodName","Extend","ChildClass","SuperClass","__hasProp","BaseConstructor","__super__","Decorate","DecoratorClass","decoratedMethods","superMethods","DecoratedClass","unshift","argCount","calledConstructor","ctr","displayName","m","superMethod","calledMethod","originalMethod","decoratedMethod","d","Observable","listeners","params","_type","invoke","len","generateChars","chars","Math","floor","random","toString","bind","func","context","_convertData","data","originalKey","keys","dataLevel","k","toLowerCase","hasScroll","el","$el","overflowX","style","overflowY","innerHeight","scrollHeight","innerWidth","scrollWidth","escapeMarkup","markup","replaceMap","String","match","__cache","GetUniqueElementId","select2Id","StoreData","GetData","RemoveData","copyNonInternalCssClasses","dest","src","destinationClasses","filter","clazz","sourceClasses","replacements","Results","$element","dataAdapter","render","$results","get","clear","displayMessage","hideLoading","$message","message","hideMessages","$options","results","sort","$option","option","children","position","$dropdown","sorter","highlightFirstItem","$selected","first","ensureHighlightVisible","setClasses","current","selected","selectedIds","s","showLoading","loading","text","loadingMore","$loading","attrs","matches","Element","msMatchesSelector","webkitMatchesSelector","_resultId","title","val","template","$children","c","$child","$childrenContainer","container","$container","isOpen","$highlighted","getHighlightedResults","currentIndex","nextIndex","$next","eq","currentOffset","offset","top","nextTop","nextOffset","scrollTop","outerHeight","nextBottom","mousewheel","bottom","deltaY","isAtTop","isAtBottom","height","originalEvent","destroy","offsetDelta","result","content","display","ENTER","SHIFT","CTRL","ALT","KEYS","BaseSelection","$selection","_tabindex","resultsId","_handleBlur","update","_attachCloseHandler","_detachCloseHandler","$select","SUIselect2","isEnabled","isDisabled","SingleSelection","$rendered","selectionContainer","selection","formatted","MultipleSelection","$selections","selectionIdPrefix","selectionId","removeItem","$remove","Placeholder","decorated","placeholder","normalizePlaceholder","_","createPlaceholder","$placeholder","placeholderTitle","singlePlaceholder","AllowClear","_handleClear","_handleKeyboardClear","$clear","previousVal","unselectData","prevented","removeAll","Search","searchLabel","$search","$searchContainer","_transferTabIndex","resizeSearch","_keyUpPrevented","isDefaultPrevented","$previousChoice","last","searchRemoveChoice","msie","documentMode","disableInputEvents","handleSearch","searchHadFocus","input","term","css","width","SelectionCSS","selectionCssClass","EventRelay","relayEvents","preventableEvents","Translation","dict","all","extend","translation","_cache","loadPath","path","translations","BaseAdapter","query","generateResultId","SelectAdapter","selectedElement","select","tagName","currentData","unselect","addOptions","textContent","innerText","normalizedData","_normalizeItem","defaults","matcher","ArrayAdapter","_dataToConvert","convertToOptions","elm","$existing","existingIds","onlyItem","$existingOption","existingData","newData","$newOption","replaceWith","AjaxAdapter","ajaxOptions","_applyDefaults","processResults","q","transport","success","failure","$request","ajax","then","fail","_request","abort","request","isArray","status","url","delay","_queryTimeout","clearTimeout","Tags","tags","createTag","insertTag","t","tag","wrapper","checkChildren","toUpperCase","_removeOldTags","page","Tokenizer","tokenizer","dropdown","createAndSelect","tokenData","separators","termChar","substr","MinimumInputLength","$e","minimumInputLength","minimum","MaximumInputLength","maximumInputLength","maximum","MaximumSelectionLength","maximumSelectionLength","_checkIfMaximumSelected","successCallback","count","Dropdown","showSearch","HidePlaceholder","removePlaceholder","modifiedData","InfiniteScroll","lastParams","$loadingMore","createLoadingMore","showLoadingMore","loadMoreIfNeeded","isLoadMoreVisible","documentElement","loadMore","pagination","more","AttachBody","$dropdownParent","_showDropdown","_attachPositioningHandler","_bindContainerResultHandlers","_hideDropdown","_detachPositioningHandler","$dropdownContainer","detach","_containerResultsHandlersBound","_positionDropdown","_resizeDropdown","scrollEvent","resizeEvent","orientationEvent","$watchers","parents","x","scrollLeft","y","ev","$window","isCurrentlyAbove","isCurrentlyBelow","newDirection","viewport","enoughRoomAbove","enoughRoomBelow","left","$offsetParent","offsetParent","parentOffset","isConnected","outerWidth","minWidth","appendTo","countResults","MinimumResultsForSearch","minimumResultsForSearch","Infinity","SelectOnClose","_handleSelectOnClose","originalSelect2Event","$highlightedResults","CloseOnSelect","_selectTriggered","ctrlKey","metaKey","DropdownCSS","dropdownCssClass","TagsSearchHighlight","$firstOption","firstElement","errorLoading","inputTooLong","overChars","inputTooShort","maximumSelected","noResults","searching","removeAllItems","search","ResultsList","SelectionSearch","DIACRITICS","SelectData","ArrayData","AjaxData","DropdownSearch","EnglishTranslation","Defaults","reset","tokenSeparators","resultsAdapter","selectOnClose","dropdownAdapter","multiple","SearchableDropdown","closeOnSelect","selectionAdapter","allowClear","language","_resolveLanguage","uniqueLanguages","l","_processTranslations","debug","stripDiacritics","a","original","amdLanguageBase","autocomplete","dropdownAutoWidth","scrollAfterSelect","templateResult","templateSelection","theme","applyFromElement","optionLanguage","defaultLanguage","elementLanguage","parentLanguage","languages","isEmptyObject","resolvedLanguages","baseLanguage","languageData","ex","warn","set","camelCase","convertedData","Options","fromElement","excludedData","dir","dataset","upperCaseLetter","letter","attributes","attributeName","dataName","dataValue","jquery","Select2","_generateId","tabindex","DataAdapter","_placeContainer","SelectionAdapter","DropdownAdapter","ResultsAdapter","_bindAdapters","_registerDomEvents","_registerDataEvents","_registerSelectionEvents","_registerDropdownEvents","_registerResultsEvents","_registerEvents","initialData","_syncAttributes","insertAfter","_resolveWidth","method","WIDTH","styleWidth","elementWidth","getComputedStyle","_syncA","_syncS","_syncSubtree","_observer","MutationObserver","mutations","observe","childList","subtree","nonRelayEvents","toggleDropdown","isMultiSelect","altKey","open","next","prev","selectedValue","keyPressed","fromCharCode","values","_$$text","startsWith","arrLength","elemVal","_isChangeMutation","addedNodes","removedNodes","mutation","changed","actualTrigger","preTriggerMap","preTriggerName","preTriggerArgs","hasFocus","enable","newVal","disconnect","removeData","thisMethods","instanceOptions","instance","factory","escapeJS","string","formatIcon","formatIconSelection","formatColor","border","color","formatColorSelection","formatVars","formatVarsSelection","getParent","getParentId","selectParent","hasSearch","isSmall","dropdownParent","initIcon","initColor","initSearch","initVars","sideTabs","newContent","$label","$data","$wrapper","$alllabels","$allinputs","suiTabs","indexGroup","indexItem","types","groups","activeGroups","activeChildren","activeItems","memory","onClick","groupIndex","itemIndex","setNodes","tab","pane","putActiveClass","setOption","tabItems","setDefaults","tabGroup","paneGroup","location","hash","tabsOverflow","tabs","leftButton","rightButton","overflowing","reachedEnd","newScrollLeft","animate","tabgroup","tablist","direction","clickEventListener","determineOrientation","keydownEventListener","activateTab","keyupEventListener","inputs","panels","controls","panel","deactivateTabs","proceed","pressed","switchTabOnArrowPress","currentTab","setCallback","queues","activeReqs","ajaxq","qname","opts","deferred","Deferred","promise","done","complete","always","deferredOpts","clonedOptions","enqueue","jqXHR","resolve","reject","dequeue","cb","xhr","nextCallback","isFunction","dataType","isQueueRunning","isAnyQueueRunning","isRunning","getActiveRequest","pluginName","wpmudevDashboardAdminCommon","showAlertNotice","showUpgradeHighlightsModal","initSelectSearch","noticeID","modal","action","post","ajaxurl","searchAction","searchParent","languageSearching","languageNoresults","languageErrorLoading","languageInputTooShort","wpmudevDashboardAdminDashboardPage","pluginList","upgradeNonce","redirectHash","upgradeQueName","isFailed","upgradedPlugins","attachEvents","initUpgrading","stop","redirecth","project","upgradePlugins","project_id","addUpgradeAjaxQue","pid","response","log","redirectToDash","redirect","wpmudevDashboardAdminLoginPage","animSyncInterval","numAnimateSync","currentAnimateSync","emailInput","passwordInput","initLoginButtonState","animateSync","initiateHubSync","storeSingleSignOnStatus","email","password","isValidEmail","tabWrapper","anims","setInterval","nextAnimateItem","ajaxData","dashurl","sso","ssoUserId","wpmudevDashboardAdminPluginsPage","plugins","limitPerPage","skipPluginIds","currentPluginsList","ftpDialog","pluginDialogs","pluginAfterInstallDialogs","actionEnabled","currentFilter","bulkPluginsList","bulkDialog","bulkActionErrors","bulkPluginAction","bulkAjaxQueueName","bulkActionProgress","isSearching","topPluginIds","newReleasePluginIds","maybeShowFtpDialog","info","pluginData","displayPlugins","isChangelogHash","isUpdateHash","showSuccessNotification","history","pushState","showNotification","refreshPluginList","filterPlugins","clearBulk","b","sortA","sortB","isCompatible","installed","active","hasUpdate","notInstalledHeader","row","clone","avheader","paginate","searchTerm","showChangelog","activate","deactivate","install","uninstall","saveFtp","dialogType","showPluginDialog","$thumb","$thumbs","$sliders","$slides","$slide","$currThumb","$nextThumb","$currSlide","$nextSlide","$slider","$prevThumb","$prevSlide","searchPluginById","ids","checkboxes","activePlugins","notInstalledPlugins","isProject","onBulkDialogShow","wdp_locale","plugins_cannot_delete","forEach","plugins_active","plugins_not_installed","showBulkErrorNotice","onBulkDialogHide","processHash","resetPage","no_result_search_lang","no_plugins_lang","getSearchResult","no_result_search_message","showSearchNotice","closeSearchNotice","no_plugins_message","pluginsList","toSearch","searchable","disableActions","hideNotifications","is_network","reload","enableActions","statusText","exception","doUpdate","hidePluginDialog","refreshUpdateCount","showPluginDialogAfterInstall","applyBulkAction","dialog","isLast","bulkPluginsCount","addBulkQueue","ajax_action","progressIncreaser","stateText","stateBaseText","updating_plugin","activating_plugin","installing_plugin","installing_activating_plugin","deactivating_plugin","deleting_plugin","incompatibleReason","updateBulkProgressBar","beforeSend","checkAjax","currentProgress","onBulkActionCompleted","noticeMsg","notif","form","ftp_pass","ftp_user","ftp_host","modalID","loadPluginDialogContent","initPluginDialog","onPluginDialogContentLoaded","navSlider","firstImage","onSliderFirstImageLoaded","dropdownActions","directInstall","updated","countOnWPMenu","countOnTab","allTab","prevCount","clearHash","div","wpmudevDashboardAdminSettingsPage","adminAddDialog","translationDialog","prepareTranslationUpdateDialog","initUsersSelect","project_slug","showModals","isUpdateNotificationHash","translation_updated","getTranslationUpdateCount","replaceState","mobileNav","includes","$form","$added","$available","$addedLabel","$availableLabel","$noResultsNotice","$allAddedNotice","$submit","toggleNotice","keyword","$searchable","$matchesAll","$matchesAdded","$elements","$user","onTranslationUpdateShow","onTranslationUpdateHide","installing_translation","slug","focusWhenOpen","hasTrigger","showTranslationUpdateModal","confirmButton","resetSettings","wpmudevDashboardAdminSupportPage","secDialog","showSupportAccessInfoModal","click","filterTickets","mob","wpmudevDashboardAdminToolsPage","wpMediaFrames","initDashIconPicker","initBrandingMediaUploader","initBrandingLinkLogo","initSitesActions","overflowTabsShowArrowRight","mediaButton","wrapperId","wp","media","attachment","state","toJSON","inputId","preview","$submitbtn","$clearbtn","$preview","$formfield","$type","isValidLink","$iconWrapper","$matches","site","link","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","__esModule","definition","o","ready"],"sourceRoot":""}