You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ni...@apache.org on 2022/03/10 09:30:36 UTC

[ranger] branch ranger-2.3 updated (b97f0c3 -> 85a79f6)

This is an automated email from the ASF dual-hosted git repository.

ni3galave pushed a change to branch ranger-2.3
in repository https://gitbox.apache.org/repos/asf/ranger.git.


    from b97f0c3  RANGER-3552 : Improvement in Module Permission edit page.
     new 9c7d776  RANGER-3649 : Represent the Solr admin object types on the Ranger UI
     new 85a79f6  RANGER-3642 : Ranger - Upgrade jquery-ui to 1.13.1

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../webapp/libs/other/jquery-ui/css/jquery-ui.css  |  490 +++---
 .../libs/other/jquery-ui/css/jquery-ui.min.css     |    6 +-
 ...1.12.1.custom.js => jquery-ui-1.13.1.custom.js} | 1831 ++++++++++++--------
 .../libs/other/jquery-ui/js/jquery-ui.min.js       |   12 +-
 security-admin/src/main/webapp/scripts/Init.js     |    2 +-
 .../src/main/webapp/scripts/utils/XAUtils.js       |    1 -
 .../scripts/views/policies/RangerPolicyForm.js     |    1 -
 .../views/security_zone/ZoneResourceForm.js        |    1 -
 .../views/service/ServiceAuditFilterResources.js   |    1 -
 security-admin/src/main/webapp/styles/xa.css       |    3 +
 10 files changed, 1347 insertions(+), 1001 deletions(-)
 rename security-admin/src/main/webapp/libs/other/jquery-ui/js/{jquery-ui-1.12.1.custom.js => jquery-ui-1.13.1.custom.js} (93%)

[ranger] 02/02: RANGER-3642 : Ranger - Upgrade jquery-ui to 1.13.1

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ni3galave pushed a commit to branch ranger-2.3
in repository https://gitbox.apache.org/repos/asf/ranger.git

commit 85a79f621b58a149eb4f72f16cea990ed17b11a1
Author: Dhaval.Rajpara <dh...@gmail.com>
AuthorDate: Wed Mar 9 16:41:11 2022 +0530

    RANGER-3642 : Ranger - Upgrade jquery-ui to 1.13.1
    
    Signed-off-by: Nitin Galave <ni...@apache.org>
---
 .../webapp/libs/other/jquery-ui/css/jquery-ui.css  |  490 +++---
 .../libs/other/jquery-ui/css/jquery-ui.min.css     |    6 +-
 ...1.12.1.custom.js => jquery-ui-1.13.1.custom.js} | 1831 ++++++++++++--------
 .../libs/other/jquery-ui/js/jquery-ui.min.js       |   12 +-
 security-admin/src/main/webapp/scripts/Init.js     |    2 +-
 .../src/main/webapp/scripts/utils/XAUtils.js       |    1 -
 security-admin/src/main/webapp/styles/xa.css       |    3 +
 7 files changed, 1347 insertions(+), 998 deletions(-)

diff --git a/security-admin/src/main/webapp/libs/other/jquery-ui/css/jquery-ui.css b/security-admin/src/main/webapp/libs/other/jquery-ui/css/jquery-ui.css
index 6ff23f6..82954ec 100644
--- a/security-admin/src/main/webapp/libs/other/jquery-ui/css/jquery-ui.css
+++ b/security-admin/src/main/webapp/libs/other/jquery-ui/css/jquery-ui.css
@@ -1,7 +1,7 @@
-/*! jQuery UI - v1.12.1 - 2016-09-14
+/*! jQuery UI - v1.13.1 - 2022-01-20
 * http://jqueryui.com
 * Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
-* To view and modify this theme, visit http://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=u [...]
+* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&fwDefault=normal&cornerRadius=3px&bgColorHeader=e9e9e9&bgTextureHeader=flat&borderColorHeader=dddddd&fcHeader=333333&iconColorHeader=444444&bgColorContent=ffffff&bgTextureContent=flat&borderColorContent=dddddd&fcContent=333333&iconColorContent=444444&bgColorDefault=f6f6f6&bgTextureDefault=flat&borderColorDefault=c5c5c5&fcDefault=454545&iconColorDefault=777777&bgC [...]
 * Copyright jQuery Foundation and other contributors; Licensed MIT */
 
 /* Layout helpers
@@ -45,7 +45,7 @@
 	left: 0;
 	position: absolute;
 	opacity: 0;
-        filter:Alpha(Opacity=0); /* support: IE8 */
+	-ms-filter: "alpha(opacity=0)"; /* support: IE8 */
 }
 
 .ui-front {
@@ -57,26 +57,26 @@
 ----------------------------------*/
 .ui-state-disabled {
 	cursor: default !important;
-        pointer-events: none;
+	pointer-events: none;
 }
 
 
 /* Icons
 ----------------------------------*/
 .ui-icon {
-        display: inline-block;
-        vertical-align: middle;
-        margin-top: -.25em;
-        position: relative;
+	display: inline-block;
+	vertical-align: middle;
+	margin-top: -.25em;
+	position: relative;
 	text-indent: -99999px;
 	overflow: hidden;
 	background-repeat: no-repeat;
 }
 
 .ui-widget-icon-block {
-        left: 50%;
-        margin-left: -8px;
-        display: block;
+	left: 50%;
+	margin-left: -8px;
+	display: block;
 }
 
 /* Misc visuals
@@ -94,9 +94,9 @@
 	display: block;
 	cursor: pointer;
 	position: relative;
-        margin: 2px 0 0 0;
+	margin: 2px 0 0 0;
 	padding: .5em .5em .5em .7em;
-        font-size: 100%;
+	font-size: 100%;
 }
 .ui-accordion .ui-accordion-content {
 	padding: 1em 2.2em;
@@ -110,61 +110,61 @@
 	cursor: default;
 }
 .ui-menu {
-        list-style: none;
-        padding: 0;
-        margin: 0;
-        display: block;
-        outline: 0;
+	list-style: none;
+	padding: 0;
+	margin: 0;
+	display: block;
+	outline: 0;
 }
 .ui-menu .ui-menu {
-        position: absolute;
+	position: absolute;
 }
 .ui-menu .ui-menu-item {
-        margin: 0;
-        cursor: pointer;
-        /* support: IE10, see #8844 */
-        list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
+	margin: 0;
+	cursor: pointer;
+	/* support: IE10, see #8844 */
+	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
 }
 .ui-menu .ui-menu-item-wrapper {
-        position: relative;
-        padding: 3px 1em 3px .4em;
+	position: relative;
+	padding: 3px 1em 3px .4em;
 }
 .ui-menu .ui-menu-divider {
-        margin: 5px 0;
-        height: 0;
-        font-size: 0;
-        line-height: 0;
-        border-width: 1px 0 0 0;
+	margin: 5px 0;
+	height: 0;
+	font-size: 0;
+	line-height: 0;
+	border-width: 1px 0 0 0;
 }
 .ui-menu .ui-state-focus,
 .ui-menu .ui-state-active {
-        margin: -1px;
+	margin: -1px;
 }
 
 /* icon support */
 .ui-menu-icons {
-        position: relative;
+	position: relative;
 }
 .ui-menu-icons .ui-menu-item-wrapper {
-        padding-left: 2em;
+	padding-left: 2em;
 }
 
 /* left-aligned */
 .ui-menu .ui-icon {
-        position: absolute;
-        top: 0;
-        bottom: 0;
-        left: .2em;
-        margin: auto 0;
+	position: absolute;
+	top: 0;
+	bottom: 0;
+	left: .2em;
+	margin: auto 0;
 }
 
 /* right-aligned */
 .ui-menu .ui-menu-icon {
-        left: auto;
-        right: 0;
+	left: auto;
+	right: 0;
 }
 .ui-button {
-        padding: .4em 1em;
+	padding: .4em 1em;
 	display: inline-block;
 	position: relative;
 	line-height: normal;
@@ -172,13 +172,13 @@
 	cursor: pointer;
 	vertical-align: middle;
 	text-align: center;
-        -webkit-user-select: none;
-        -moz-user-select: none;
-        -ms-user-select: none;
-        user-select: none;
+	-webkit-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
 
-        /* Support: IE <= 11 */
-        overflow: visible;
+	/* Support: IE <= 11 */
+	overflow: visible;
 }
 
 .ui-button,
@@ -191,40 +191,40 @@
 
 /* to make room for the icon, a width needs to be set here */
 .ui-button-icon-only {
-        width: 2em;
-        box-sizing: border-box;
-        text-indent: -9999px;
-        white-space: nowrap;
+	width: 2em;
+	box-sizing: border-box;
+	text-indent: -9999px;
+	white-space: nowrap;
 }
 
 /* no icon support for input elements */
 input.ui-button.ui-button-icon-only {
-        text-indent: 0;
+	text-indent: 0;
 }
 
 /* button icon element(s) */
 .ui-button-icon-only .ui-icon {
-        position: absolute;
-        top: 50%;
-        left: 50%;
-        margin-top: -8px;
-        margin-left: -8px;
+	position: absolute;
+	top: 50%;
+	left: 50%;
+	margin-top: -8px;
+	margin-left: -8px;
 }
 
 .ui-button.ui-icon-notext .ui-icon {
-        padding: 0;
-        width: 2.1em;
-        height: 2.1em;
-        text-indent: -9999px;
-        white-space: nowrap;
+	padding: 0;
+	width: 2.1em;
+	height: 2.1em;
+	text-indent: -9999px;
+	white-space: nowrap;
 
 }
 
 input.ui-button.ui-icon-notext .ui-icon {
-        width: auto;
-        height: auto;
-        text-indent: 0;
-        white-space: normal;
+	width: auto;
+	height: auto;
+	text-indent: 0;
+	white-space: normal;
 	padding: .4em 1em;
 }
 
@@ -232,85 +232,85 @@ input.ui-button.ui-icon-notext .ui-icon {
 /* Support: Firefox 5 - 40 */
 input.ui-button::-moz-focus-inner,
 button.ui-button::-moz-focus-inner {
-        border: 0;
-        padding: 0;
+	border: 0;
+	padding: 0;
 }
 .ui-controlgroup {
-        vertical-align: middle;
-        display: inline-block;
+	vertical-align: middle;
+	display: inline-block;
 }
 .ui-controlgroup > .ui-controlgroup-item {
-        float: left;
-        margin-left: 0;
-        margin-right: 0;
+	float: left;
+	margin-left: 0;
+	margin-right: 0;
 }
 .ui-controlgroup > .ui-controlgroup-item:focus,
 .ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
-        z-index: 9999;
+	z-index: 9999;
 }
 .ui-controlgroup-vertical > .ui-controlgroup-item {
-        display: block;
-        float: none;
-        width: 100%;
-        margin-top: 0;
-        margin-bottom: 0;
-        text-align: left;
+	display: block;
+	float: none;
+	width: 100%;
+	margin-top: 0;
+	margin-bottom: 0;
+	text-align: left;
 }
 .ui-controlgroup-vertical .ui-controlgroup-item {
-        box-sizing: border-box;
+	box-sizing: border-box;
 }
 .ui-controlgroup .ui-controlgroup-label {
 	padding: .4em 1em;
 }
 .ui-controlgroup .ui-controlgroup-label span {
-        font-size: 80%;
+	font-size: 80%;
 }
 .ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
-        border-left: none;
+	border-left: none;
 }
 .ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
-        border-top: none;
+	border-top: none;
 }
 .ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
-        border-right: none;
+	border-right: none;
 }
 .ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
-        border-bottom: none;
+	border-bottom: none;
 }
 
 /* Spinner specific style fixes */
 .ui-controlgroup-vertical .ui-spinner-input {
 
-        /* Support: IE8 only, Android < 4.4 only */
-        width: 75%;
-        width: calc( 100% - 2.4em );
+	/* Support: IE8 only, Android < 4.4 only */
+	width: 75%;
+	width: calc( 100% - 2.4em );
 }
 .ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
-        border-top-style: solid;
+	border-top-style: solid;
 }
 
 .ui-checkboxradio-label .ui-icon-background {
-        box-shadow: inset 1px 1px 1px #ccc;
-        border-radius: .12em;
-        border: none;
+	box-shadow: inset 1px 1px 1px #ccc;
+	border-radius: .12em;
+	border: none;
 }
 .ui-checkboxradio-radio-label .ui-icon-background {
-        width: 16px;
-        height: 16px;
-        border-radius: 1em;
-        overflow: visible;
-        border: none;
+	width: 16px;
+	height: 16px;
+	border-radius: 1em;
+	overflow: visible;
+	border: none;
 }
 .ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
 .ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
-        background-image: none;
-        width: 8px;
-        height: 8px;
-        border-width: 4px;
-        border-style: solid;
+	background-image: none;
+	width: 8px;
+	height: 8px;
+	border-width: 4px;
+	border-style: solid;
 }
 .ui-checkboxradio-disabled {
-        pointer-events: none;
+	pointer-events: none;
 }
 .ui-datepicker {
 	width: 17em;
@@ -364,7 +364,7 @@ button.ui-button::-moz-focus-inner {
 }
 .ui-datepicker select.ui-datepicker-month,
 .ui-datepicker select.ui-datepicker-year {
-        width: 45%;
+	width: 45%;
 }
 .ui-datepicker table {
 	width: 100%;
@@ -480,12 +480,12 @@ button.ui-button::-moz-focus-inner {
 
 /* Icons */
 .ui-datepicker .ui-icon {
-        display: block;
-        text-indent: -99999px;
-        overflow: hidden;
-        background-repeat: no-repeat;
-        left: .5em;
-        top: .3em;
+	display: block;
+	text-indent: -99999px;
+	overflow: hidden;
+	background-repeat: no-repeat;
+	left: .5em;
+	top: .3em;
 }
 .ui-dialog {
 	position: absolute;
@@ -510,7 +510,7 @@ button.ui-button::-moz-focus-inner {
 	position: absolute;
 	right: .3em;
 	top: 50%;
-        width: 20px;
+	width: 20px;
 	margin: -10px 0 0 0;
 	padding: 1px;
 	height: 20px;
@@ -537,50 +537,50 @@ button.ui-button::-moz-focus-inner {
 	cursor: pointer;
 }
 .ui-dialog .ui-resizable-n {
-        height: 2px;
-        top: 0;
+	height: 2px;
+	top: 0;
 }
 .ui-dialog .ui-resizable-e {
-        width: 2px;
-        right: 0;
+	width: 2px;
+	right: 0;
 }
 .ui-dialog .ui-resizable-s {
-        height: 2px;
-        bottom: 0;
+	height: 2px;
+	bottom: 0;
 }
 .ui-dialog .ui-resizable-w {
-        width: 2px;
-        left: 0;
+	width: 2px;
+	left: 0;
 }
 .ui-dialog .ui-resizable-se,
 .ui-dialog .ui-resizable-sw,
 .ui-dialog .ui-resizable-ne,
 .ui-dialog .ui-resizable-nw {
-        width: 7px;
-        height: 7px;
+	width: 7px;
+	height: 7px;
 }
 .ui-dialog .ui-resizable-se {
-        right: 0;
-        bottom: 0;
+	right: 0;
+	bottom: 0;
 }
 .ui-dialog .ui-resizable-sw {
-        left: 0;
-        bottom: 0;
+	left: 0;
+	bottom: 0;
 }
 .ui-dialog .ui-resizable-ne {
-        right: 0;
-        top: 0;
+	right: 0;
+	top: 0;
 }
 .ui-dialog .ui-resizable-nw {
-        left: 0;
-        top: 0;
+	left: 0;
+	top: 0;
 }
 .ui-draggable .ui-dialog-titlebar {
-        cursor: move;
+	cursor: move;
 }
 .ui-draggable-handle {
-        -ms-touch-action: none;
-        touch-action: none;
+	-ms-touch-action: none;
+	touch-action: none;
 }
 .ui-resizable {
 	position: relative;
@@ -589,8 +589,8 @@ button.ui-button::-moz-focus-inner {
 	position: absolute;
 	font-size: 0.1px;
 	display: block;
-        -ms-touch-action: none;
-        touch-action: none;
+	-ms-touch-action: none;
+	touch-action: none;
 }
 .ui-resizable-disabled .ui-resizable-handle,
 .ui-resizable-autohide .ui-resizable-handle {
@@ -653,26 +653,26 @@ button.ui-button::-moz-focus-inner {
 	top: -5px;
 }
 .ui-progressbar {
-        height: 2em;
-        text-align: left;
-        overflow: hidden;
+	height: 2em;
+	text-align: left;
+	overflow: hidden;
 }
 .ui-progressbar .ui-progressbar-value {
-        margin: -1px;
-        height: 100%;
+	margin: -1px;
+	height: 100%;
 }
 .ui-progressbar .ui-progressbar-overlay {
-        background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25 [...]
-        height: 100%;
-        filter: alpha(opacity=25); /* support: IE8 */
-        opacity: 0.25;
+	background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmo [...]
+	height: 100%;
+	-ms-filter: "alpha(opacity=25)"; /* support: IE8 */
+	opacity: 0.25;
 }
 .ui-progressbar-indeterminate .ui-progressbar-value {
-        background-image: none;
+	background-image: none;
 }
 .ui-selectable {
-        -ms-touch-action: none;
-        touch-action: none;
+	-ms-touch-action: none;
+	touch-action: none;
 }
 .ui-selectable-helper {
 	position: absolute;
@@ -680,44 +680,44 @@ button.ui-button::-moz-focus-inner {
 	border: 1px dotted black;
 }
 .ui-selectmenu-menu {
-        padding: 0;
-        margin: 0;
-        position: absolute;
-        top: 0;
-        left: 0;
-        display: none;
+	padding: 0;
+	margin: 0;
+	position: absolute;
+	top: 0;
+	left: 0;
+	display: none;
 }
 .ui-selectmenu-menu .ui-menu {
-        overflow: auto;
-        overflow-x: hidden;
-        padding-bottom: 1px;
+	overflow: auto;
+	overflow-x: hidden;
+	padding-bottom: 1px;
 }
 .ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
-        font-size: 1em;
-        font-weight: bold;
-        line-height: 1.5;
-        padding: 2px 0.4em;
-        margin: 0.5em 0 0 0;
-        height: auto;
-        border: 0;
+	font-size: 1em;
+	font-weight: bold;
+	line-height: 1.5;
+	padding: 2px 0.4em;
+	margin: 0.5em 0 0 0;
+	height: auto;
+	border: 0;
 }
 .ui-selectmenu-open {
-        display: block;
+	display: block;
 }
 .ui-selectmenu-text {
-        display: block;
-        margin-right: 20px;
-        overflow: hidden;
-        text-overflow: ellipsis;
+	display: block;
+	margin-right: 20px;
+	overflow: hidden;
+	text-overflow: ellipsis;
 }
 .ui-selectmenu-button.ui-button {
-        text-align: left;
-        white-space: nowrap;
-        width: 14em;
+	text-align: left;
+	white-space: nowrap;
+	width: 14em;
 }
 .ui-selectmenu-icon.ui-icon {
-        float: right;
-        margin-top: 0;
+	float: right;
+	margin-top: 0;
 }
 .ui-slider {
 	position: relative;
@@ -728,9 +728,9 @@ button.ui-button::-moz-focus-inner {
 	z-index: 2;
 	width: 1.2em;
 	height: 1.2em;
-	cursor: default;
-        -ms-touch-action: none;
-        touch-action: none;
+	cursor: pointer;
+	-ms-touch-action: none;
+	touch-action: none;
 }
 .ui-slider .ui-slider-range {
 	position: absolute;
@@ -785,8 +785,8 @@ button.ui-button::-moz-focus-inner {
 	top: 0;
 }
 .ui-sortable-handle {
-        -ms-touch-action: none;
-        touch-action: none;
+	-ms-touch-action: none;
+	touch-action: none;
 }
 .ui-spinner {
 	position: relative;
@@ -799,14 +799,14 @@ button.ui-button::-moz-focus-inner {
 	border: none;
 	background: none;
 	color: inherit;
-        padding: .222em 0;
+	padding: .222em 0;
 	margin: .2em 0;
 	vertical-align: middle;
 	margin-left: .4em;
-        margin-right: 2em;
+	margin-right: 2em;
 }
 .ui-spinner-button {
-        width: 1.6em;
+	width: 1.6em;
 	height: 50%;
 	font-size: .5em;
 	padding: 0;
@@ -820,9 +820,9 @@ button.ui-button::-moz-focus-inner {
 }
 /* more specificity required here to override default borders */
 .ui-spinner a.ui-spinner-button {
-        border-top-style: none;
-        border-bottom-style: none;
-        border-right-style: none;
+	border-top-style: none;
+	border-bottom-style: none;
+	border-right-style: none;
 }
 .ui-spinner-up {
 	top: 0;
@@ -880,12 +880,11 @@ button.ui-button::-moz-focus-inner {
 body .ui-tooltip {
 	border-width: 2px;
 }
-
 /* Component containers
 ----------------------------------*/
 .ui-widget {
-        font-family: Arial,Helvetica,sans-serif;
-        font-size: 1em;
+	font-family: Arial,Helvetica,sans-serif;
+	font-size: 1em;
 }
 .ui-widget .ui-widget {
 	font-size: 1em;
@@ -894,28 +893,28 @@ body .ui-tooltip {
 .ui-widget select,
 .ui-widget textarea,
 .ui-widget button {
-        font-family: Arial,Helvetica,sans-serif;
+	font-family: Arial,Helvetica,sans-serif;
 	font-size: 1em;
 }
 .ui-widget.ui-widget-content {
-        border: 1px solid #c5c5c5;
+	border: 1px solid #c5c5c5;
 }
 .ui-widget-content {
-        border: 1px solid #dddddd;
-        background: #ffffff;
-        color: #333333;
+	border: 1px solid #dddddd;
+	background: #ffffff;
+	color: #333333;
 }
 .ui-widget-content a {
-        color: #333333;
+	color: #333333;
 }
 .ui-widget-header {
-        border: 1px solid #dddddd;
-        background: #e9e9e9;
-        color: #333333;
+	border: 1px solid #dddddd;
+	background: #e9e9e9;
+	color: #333333;
 	font-weight: bold;
 }
 .ui-widget-header a {
-        color: #333333;
+	color: #333333;
 }
 
 /* Interaction states
@@ -929,10 +928,10 @@ body .ui-tooltip {
 works properly when clicked or hovered */
 html .ui-button.ui-state-disabled:hover,
 html .ui-button.ui-state-disabled:active {
-        border: 1px solid #c5c5c5;
-        background: #f6f6f6;
+	border: 1px solid #c5c5c5;
+	background: #f6f6f6;
 	font-weight: normal;
-        color: #454545;
+	color: #454545;
 }
 .ui-state-default a,
 .ui-state-default a:link,
@@ -941,7 +940,7 @@ a.ui-button,
 a:link.ui-button,
 a:visited.ui-button,
 .ui-button {
-        color: #454545;
+	color: #454545;
 	text-decoration: none;
 }
 .ui-state-hover,
@@ -952,10 +951,10 @@ a:visited.ui-button,
 .ui-widget-header .ui-state-focus,
 .ui-button:hover,
 .ui-button:focus {
-        border: 1px solid #cccccc;
-        background: #ededed;
+	border: 1px solid #cccccc;
+	background: #ededed;
 	font-weight: normal;
-        color: #2b2b2b;
+	color: #2b2b2b;
 }
 .ui-state-hover a,
 .ui-state-hover a:hover,
@@ -967,12 +966,12 @@ a:visited.ui-button,
 .ui-state-focus a:visited,
 a.ui-button:hover,
 a.ui-button:focus {
-        color: #2b2b2b;
+	color: #2b2b2b;
 	text-decoration: none;
 }
 
 .ui-visual-focus {
-        box-shadow: 0 0 3px 1px rgb(94, 158, 214);
+	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
 }
 .ui-state-active,
 .ui-widget-content .ui-state-active,
@@ -980,20 +979,20 @@ a.ui-button:focus {
 a.ui-button:active,
 .ui-button:active,
 .ui-button.ui-state-active:hover {
-        border: 1px solid #003eff;
-        background: #007fff;
+	border: 1px solid #003eff;
+	background: #007fff;
 	font-weight: normal;
-        color: #ffffff;
+	color: #ffffff;
 }
 .ui-icon-background,
 .ui-state-active .ui-icon-background {
-        border: #003eff;
-        background-color: #ffffff;
+	border: #003eff;
+	background-color: #ffffff;
 }
 .ui-state-active a,
 .ui-state-active a:link,
 .ui-state-active a:visited {
-        color: #ffffff;
+	color: #ffffff;
 	text-decoration: none;
 }
 
@@ -1002,35 +1001,35 @@ a.ui-button:active,
 .ui-state-highlight,
 .ui-widget-content .ui-state-highlight,
 .ui-widget-header .ui-state-highlight {
-        border: 1px solid #dad55e;
-        background: #fffa90;
-        color: #777620;
+	border: 1px solid #dad55e;
+	background: #fffa90;
+	color: #777620;
 }
 .ui-state-checked {
-        border: 1px solid #dad55e;
-        background: #fffa90;
+	border: 1px solid #dad55e;
+	background: #fffa90;
 }
 .ui-state-highlight a,
 .ui-widget-content .ui-state-highlight a,
 .ui-widget-header .ui-state-highlight a {
-        color: #777620;
+	color: #777620;
 }
 .ui-state-error,
 .ui-widget-content .ui-state-error,
 .ui-widget-header .ui-state-error {
-        border: 1px solid #f1a899;
-        background: #fddfdf;
-        color: #5f3f3f;
+	border: 1px solid #f1a899;
+	background: #fddfdf;
+	color: #5f3f3f;
 }
 .ui-state-error a,
 .ui-widget-content .ui-state-error a,
 .ui-widget-header .ui-state-error a {
-        color: #5f3f3f;
+	color: #5f3f3f;
 }
 .ui-state-error-text,
 .ui-widget-content .ui-state-error-text,
 .ui-widget-header .ui-state-error-text {
-        color: #5f3f3f;
+	color: #5f3f3f;
 }
 .ui-priority-primary,
 .ui-widget-content .ui-priority-primary,
@@ -1041,18 +1040,18 @@ a.ui-button:active,
 .ui-widget-content .ui-priority-secondary,
 .ui-widget-header .ui-priority-secondary {
 	opacity: .7;
-        filter:Alpha(Opacity=70); /* support: IE8 */
+	-ms-filter: "alpha(opacity=70)"; /* support: IE8 */
 	font-weight: normal;
 }
 .ui-state-disabled,
 .ui-widget-content .ui-state-disabled,
 .ui-widget-header .ui-state-disabled {
 	opacity: .35;
-        filter:Alpha(Opacity=35); /* support: IE8 */
+	-ms-filter: "alpha(opacity=35)"; /* support: IE8 */
 	background-image: none;
 }
 .ui-state-disabled .ui-icon {
-        filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
+	-ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */
 }
 
 /* Icons
@@ -1065,35 +1064,38 @@ a.ui-button:active,
 }
 .ui-icon,
 .ui-widget-content .ui-icon {
-        background-image: url("images/ui-icons_444444_256x240.png");
+	background-image: url("images/ui-icons_444444_256x240.png");
 }
 .ui-widget-header .ui-icon {
-        background-image: url("images/ui-icons_444444_256x240.png");
+	background-image: url("images/ui-icons_444444_256x240.png");
 }
 .ui-state-hover .ui-icon,
 .ui-state-focus .ui-icon,
 .ui-button:hover .ui-icon,
 .ui-button:focus .ui-icon {
-        background-image: url("images/ui-icons_555555_256x240.png");
+	background-image: url("images/ui-icons_555555_256x240.png");
 }
 .ui-state-active .ui-icon,
 .ui-button:active .ui-icon {
-        background-image: url("images/ui-icons_ffffff_256x240.png");
+	background-image: url("images/ui-icons_ffffff_256x240.png");
 }
 .ui-state-highlight .ui-icon,
 .ui-button .ui-state-highlight.ui-icon {
-        background-image: url("images/ui-icons_777620_256x240.png");
+	background-image: url("images/ui-icons_777620_256x240.png");
 }
 .ui-state-error .ui-icon,
 .ui-state-error-text .ui-icon {
-        background-image: url("images/ui-icons_cc0000_256x240.png");
+	background-image: url("images/ui-icons_cc0000_256x240.png");
 }
 .ui-button .ui-icon {
-        background-image: url("images/ui-icons_777777_256x240.png");
+	background-image: url("images/ui-icons_777777_256x240.png");
 }
 
 /* positioning */
-.ui-icon-blank { background-position: 16px 16px; }
+/* Three classes needed to override `.ui-button:hover .ui-icon` */
+.ui-icon-blank.ui-icon-blank.ui-icon-blank {
+	background-image: none;
+}
 .ui-icon-caret-1-n { background-position: 0 0; }
 .ui-icon-caret-1-ne { background-position: -16px 0; }
 .ui-icon-caret-1-e { background-position: -32px 0; }
@@ -1279,34 +1281,34 @@ a.ui-button:active,
 .ui-corner-top,
 .ui-corner-left,
 .ui-corner-tl {
-        border-top-left-radius: 3px;
+	border-top-left-radius: 3px;
 }
 .ui-corner-all,
 .ui-corner-top,
 .ui-corner-right,
 .ui-corner-tr {
-        border-top-right-radius: 3px;
+	border-top-right-radius: 3px;
 }
 .ui-corner-all,
 .ui-corner-bottom,
 .ui-corner-left,
 .ui-corner-bl {
-        border-bottom-left-radius: 3px;
+	border-bottom-left-radius: 3px;
 }
 .ui-corner-all,
 .ui-corner-bottom,
 .ui-corner-right,
 .ui-corner-br {
-        border-bottom-right-radius: 3px;
+	border-bottom-right-radius: 3px;
 }
 
 /* Overlays */
 .ui-widget-overlay {
-        background: #aaaaaa;
-        opacity: .003;
-        filter: Alpha(Opacity=.3); /* support: IE8 */
+	background: #aaaaaa;
+	opacity: .3;
+	-ms-filter: Alpha(Opacity=30); /* support: IE8 */
 }
 .ui-widget-shadow {
-        -webkit-box-shadow: 0px 0px 5px #666666;
-        box-shadow: 0px 0px 5px #666666;
-}
+	-webkit-box-shadow: 0px 0px 5px #666666;
+	box-shadow: 0px 0px 5px #666666;
+}
\ No newline at end of file
diff --git a/security-admin/src/main/webapp/libs/other/jquery-ui/css/jquery-ui.min.css b/security-admin/src/main/webapp/libs/other/jquery-ui/css/jquery-ui.min.css
index 776e259..e41f9b6 100644
--- a/security-admin/src/main/webapp/libs/other/jquery-ui/css/jquery-ui.min.css
+++ b/security-admin/src/main/webapp/libs/other/jquery-ui/css/jquery-ui.min.css
@@ -1,7 +1,7 @@
-/*! jQuery UI - v1.12.1 - 2016-09-14
+/*! jQuery UI - v1.13.1 - 2022-01-20
 * http://jqueryui.com
 * Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
-* To view and modify this theme, visit http://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=u [...]
+* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&fwDefault=normal&cornerRadius=3px&bgColorHeader=e9e9e9&bgTextureHeader=flat&borderColorHeader=dddddd&fcHeader=333333&iconColorHeader=444444&bgColorContent=ffffff&bgTextureContent=flat&borderColorContent=dddddd&fcContent=333333&iconColorContent=444444&bgColorDefault=f6f6f6&bgTextureDefault=flat&borderColorDefault=c5c5c5&fcDefault=454545&iconColorDefault=777777&bgC [...]
 * Copyright jQuery Foundation and other contributors; Licensed MIT */
 
-.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:abs [...]
\ No newline at end of file
+.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:abs [...]
\ No newline at end of file
diff --git a/security-admin/src/main/webapp/libs/other/jquery-ui/js/jquery-ui-1.12.1.custom.js b/security-admin/src/main/webapp/libs/other/jquery-ui/js/jquery-ui-1.13.1.custom.js
similarity index 93%
rename from security-admin/src/main/webapp/libs/other/jquery-ui/js/jquery-ui-1.12.1.custom.js
rename to security-admin/src/main/webapp/libs/other/jquery-ui/js/jquery-ui-1.13.1.custom.js
index 912e8fb..01efc8c 100644
--- a/security-admin/src/main/webapp/libs/other/jquery-ui/js/jquery-ui-1.12.1.custom.js
+++ b/security-admin/src/main/webapp/libs/other/jquery-ui/js/jquery-ui-1.13.1.custom.js
@@ -1,27 +1,30 @@
-/*! jQuery UI - v1.12.1 - 2016-09-14
+/*! jQuery UI - v1.13.1 - 2022-01-20
 * http://jqueryui.com
-* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js [...]
+* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js [...]
 * Copyright jQuery Foundation and other contributors; Licensed MIT */
 
-(function( factory ) {
+( function( factory ) {
+        "use strict";
+        
         if ( typeof define === "function" && define.amd ) {
 
                 // AMD. Register as an anonymous module.
-                define([ "jquery" ], factory );
+                define( [ "jquery" ], factory );
         } else {
 
                 // Browser globals
                 factory( jQuery );
         }
-}(function( $ ) {
+} )( function( $ ) {
+"use strict";
 
 $.ui = $.ui || {};
 
-var version = $.ui.version = "1.12.1";
+var version = $.ui.version = "1.13.1";
 
 
 /*!
- * jQuery UI Widget 1.12.1
+ * jQuery UI Widget 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -36,24 +39,20 @@ var version = $.ui.version = "1.12.1";
 //>>demos: http://jqueryui.com/widget/
 
 
-
 var widgetUuid = 0;
+var widgetHasOwnProperty = Array.prototype.hasOwnProperty;
 var widgetSlice = Array.prototype.slice;
 
 $.cleanData = ( function( orig ) {
         return function( elems ) {
                 var events, elem, i;
                 for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {
-                        try {
-
-                                // Only trigger remove when necessary to save time
-                                events = $._data( elem, "events" );
-                                if ( events && events.remove ) {
-                                        $( elem ).triggerHandler( "remove" );
-                                }
 
-                        // Http://bugs.jquery.com/ticket/8235
-                        } catch ( e ) {}
+                        // Only trigger remove when necessary to save time
+                        events = $._data( elem, "events" );
+                        if ( events && events.remove ) {
+                                $( elem ).triggerHandler( "remove" );
+                        }
                 }
                 orig( elems );
         };
@@ -75,12 +74,12 @@ $.widget = function( name, base, prototype ) {
                 base = $.Widget;
         }
 
-        if ( $.isArray( prototype ) ) {
+        if ( Array.isArray( prototype ) ) {
                 prototype = $.extend.apply( null, [ {} ].concat( prototype ) );
         }
 
         // Create selector for plugin
-        $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {
+        $.expr.pseudos[ fullName.toLowerCase() ] = function( elem ) {
                 return !!$.data( elem, fullName );
         };
 
@@ -89,7 +88,7 @@ $.widget = function( name, base, prototype ) {
         constructor = $[ namespace ][ name ] = function( options, element ) {
 
                 // Allow instantiation without "new" keyword
-                if ( !this._createWidget ) {
+                if ( !this || !this._createWidget ) {
                         return new constructor( options, element );
                 }
 
@@ -120,7 +119,7 @@ $.widget = function( name, base, prototype ) {
         // inheriting from
         basePrototype.options = $.widget.extend( {}, basePrototype.options );
         $.each( prototype, function( prop, value ) {
-                if ( !$.isFunction( value ) ) {
+                if ( typeof value !== "function" ) {
                         proxiedPrototype[ prop ] = value;
                         return;
                 }
@@ -199,7 +198,7 @@ $.widget.extend = function( target ) {
         for ( ; inputIndex < inputLength; inputIndex++ ) {
                 for ( key in input[ inputIndex ] ) {
                         value = input[ inputIndex ][ key ];
-                        if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {
+                        if ( widgetHasOwnProperty.call( input[ inputIndex ], key ) && value !== undefined ) {
 
                                 // Clone objects
                                 if ( $.isPlainObject( value ) ) {
@@ -248,7 +247,8 @@ $.widget.bridge = function( name, object ) {
                                                         "attempted to call method '" + options + "'" );
                                         }
 
-                                        if ( !$.isFunction( instance[ options ] ) || options.charAt( 0 ) === "_" ) {
+                                        if ( typeof instance[ options ] !== "function" ||
+                                                options.charAt( 0 ) === "_" ) {
                                                 return $.error( "no such method '" + options + "' for " + name +
                                                         " widget instance" );
                                         }
@@ -509,12 +509,34 @@ $.Widget.prototype = {
                         classes: this.options.classes || {}
                 }, options );
 
+                function bindRemoveEvent() {
+                        var nodesToBind = [];
+
+                        options.element.each( function( _, element ) {
+                                var isTracked = $.map( that.classesElementLookup, function( elements ) {
+                                        return elements;
+                                } )
+                                        .some( function( elements ) {
+                                                return elements.is( element );
+                                        } );
+
+                                if ( !isTracked ) {
+                                        nodesToBind.push( element );
+                                }
+                        } );
+
+                        that._on( $( nodesToBind ), {
+                                remove: "_untrackClassesElement"
+                        } );
+                }
+
                 function processClassString( classes, checkOption ) {
                         var current, i;
                         for ( i = 0; i < classes.length; i++ ) {
                                 current = that.classesElementLookup[ classes[ i ] ] || $();
                                 if ( options.add ) {
-                                        current = $( $.unique( current.get().concat( options.element.get() ) ) );
+                                        bindRemoveEvent();
+                                        current = $( $.uniqueSort( current.get().concat( options.element.get() ) ) );
                                 } else {
                                         current = $( current.not( options.element ).get() );
                                 }
@@ -526,10 +548,6 @@ $.Widget.prototype = {
                         }
                 }
 
-                this._on( options.element, {
-                        "remove": "_untrackClassesElement"
-                } );
-
                 if ( options.keys ) {
                         processClassString( options.keys.match( /\S+/g ) || [], true );
                 }
@@ -547,6 +565,8 @@ $.Widget.prototype = {
                                 that.classesElementLookup[ key ] = $( value.not( event.target ).get() );
                         }
                 } );
+
+                this._off( $( event.target ) );
         },
 
         _removeClass: function( element, keys, extra ) {
@@ -627,7 +647,7 @@ $.Widget.prototype = {
         _off: function( element, eventName ) {
                 eventName = ( eventName || "" ).split( " " ).join( this.eventNamespace + " " ) +
                         this.eventNamespace;
-                element.off( eventName ).off( eventName );
+                element.off( eventName );
 
                 // Clear the stack to avoid memory leaks (#10056)
                 this.bindings = $( this.bindings.not( element ).get() );
@@ -693,7 +713,7 @@ $.Widget.prototype = {
                 }
 
                 this.element.trigger( event, data );
-                return !( $.isFunction( callback ) &&
+                return !( typeof callback === "function" &&
                         callback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||
                         event.isDefaultPrevented() );
         }
@@ -715,6 +735,8 @@ $.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {
                 options = options || {};
                 if ( typeof options === "number" ) {
                         options = { duration: options };
+                } else if ( options === true ) {
+                        options = {};
                 }
 
                 hasOptions = !$.isEmptyObject( options );
@@ -744,7 +766,7 @@ var widget = $.widget;
 
 
 /*!
- * jQuery UI Position 1.12.1
+ * jQuery UI Position 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -783,6 +805,10 @@ function parseCss( element, property ) {
         return parseInt( $.css( element, property ), 10 ) || 0;
 }
 
+function isWindow( obj ) {
+        return obj != null && obj === obj.window;
+}
+
 function getDimensions( elem ) {
         var raw = elem[ 0 ];
         if ( raw.nodeType === 9 ) {
@@ -792,7 +818,7 @@ function getDimensions( elem ) {
                         offset: { top: 0, left: 0 }
                 };
         }
-        if ( $.isWindow( raw ) ) {
+        if ( isWindow( raw ) ) {
                 return {
                         width: elem.width(),
                         height: elem.height(),
@@ -819,9 +845,9 @@ $.position = {
                         return cachedScrollbarWidth;
                 }
                 var w1, w2,
-                        div = $( "<div " +
-                                "style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'>" +
-                                "<div style='height:100px;width:auto;'></div></div>" ),
+                        div = $( "<div style=" +
+                                "'display:block;position:absolute;width:200px;height:200px;overflow:hidden;'>" +
+                                "<div style='height:300px;width:auto;'></div></div>" ),
                         innerDiv = div.children()[ 0 ];
 
                 $( "body" ).append( div );
@@ -854,12 +880,12 @@ $.position = {
         },
         getWithinInfo: function( element ) {
                 var withinElement = $( element || window ),
-                        isWindow = $.isWindow( withinElement[ 0 ] ),
+                        isElemWindow = isWindow( withinElement[ 0 ] ),
                         isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9,
-                        hasOffset = !isWindow && !isDocument;
+                        hasOffset = !isElemWindow && !isDocument;
                 return {
                         element: withinElement,
-                        isWindow: isWindow,
+                        isWindow: isElemWindow,
                         isDocument: isDocument,
                         offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 },
                         scrollLeft: withinElement.scrollLeft(),
@@ -879,7 +905,12 @@ $.fn.position = function( options ) {
         options = $.extend( {}, options );
 
         var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
-                target = $( options.of ),
+
+                // Make sure string options are treated as CSS selectors
+                target = typeof options.of === "string" ?
+                        $( document ).find( options.of ) :
+                        $( options.of ),
+
                 within = $.position.getWithinInfo( options.within ),
                 scrollInfo = $.position.getScrollInfo( within ),
                 collision = ( options.collision || "flip" ).split( " " ),
@@ -1232,7 +1263,7 @@ var position = $.ui.position;
 
 
 /*!
- * jQuery UI :data 1.12.1
+ * jQuery UI :data 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -1246,7 +1277,7 @@ var position = $.ui.position;
 //>>docs: http://api.jqueryui.com/data-selector/
 
 
-var data = $.extend( $.expr[ ":" ], {
+var data = $.extend( $.expr.pseudos, {
         data: $.expr.createPseudo ?
                 $.expr.createPseudo( function( dataName ) {
                         return function( elem ) {
@@ -1261,7 +1292,7 @@ var data = $.extend( $.expr[ ":" ], {
 } );
 
 /*!
- * jQuery UI Disable Selection 1.12.1
+ * jQuery UI Disable Selection 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -1276,7 +1307,6 @@ var data = $.extend( $.expr[ ":" ], {
 
 // This file is deprecated
 
-
 var disableSelection = $.fn.extend( {
         disableSelection: ( function() {
                 var eventType = "onselectstart" in document.createElement( "div" ) ?
@@ -1296,56 +1326,37 @@ var disableSelection = $.fn.extend( {
 } );
 
 
-/*!
- * jQuery UI Effects 1.12.1
- * http://jqueryui.com
- *
- * Copyright jQuery Foundation and other contributors
- * Released under the MIT license.
- * http://jquery.org/license
- */
-
-//>>label: Effects Core
-//>>group: Effects
-// jscs:disable maximumLineLength
-//>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.
-// jscs:enable maximumLineLength
-//>>docs: http://api.jqueryui.com/category/effects-core/
-//>>demos: http://jqueryui.com/effect/
 
+// Create a local jQuery because jQuery Color relies on it and the
+// global may not exist with AMD and a custom build (#10199).
+// This module is a noop if used as a regular AMD module.
+// eslint-disable-next-line no-unused-vars
+var jQuery = $;
 
 
-var dataSpace = "ui-effects-",
-        dataSpaceStyle = "ui-effects-style",
-        dataSpaceAnimated = "ui-effects-animated",
-
-        // Create a local jQuery because jQuery Color relies on it and the
-        // global may not exist with AMD and a custom build (#10199)
-        jQuery = $;
-
-$.effects = {
-        effect: {}
-};
-
 /*!
- * jQuery Color Animations v2.1.2
+ * jQuery Color Animations v2.2.0
  * https://github.com/jquery/jquery-color
  *
- * Copyright 2014 jQuery Foundation and other contributors
+ * Copyright OpenJS Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
  *
- * Date: Wed Jan 16 08:47:09 2013 -0600
+ * Date: Sun May 10 09:02:36 2020 +0200
  */
-( function( jQuery, undefined ) {
+
+
 
         var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor " +
                 "borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",
 
-        // Plusequals test for += 100 -= 100
+        class2type = {},
+        toString = class2type.toString,
+
+        // plusequals test for += 100 -= 100
         rplusequals = /^([\-+])=\s*(\d+\.?\d*)/,
 
-        // A set of RE's that can match strings and generate color tuples.
+        // a set of RE's that can match strings and generate color tuples.
         stringParsers = [ {
                         re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
                         parse: function( execResult ) {
@@ -1368,24 +1379,31 @@ $.effects = {
                         }
                 }, {
 
-                        // This regex ignores A-F because it's compared against an already lowercased string
-                        re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,
+                        // this regex ignores A-F because it's compared against an already lowercased string
+                        re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?/,
                         parse: function( execResult ) {
                                 return [
                                         parseInt( execResult[ 1 ], 16 ),
                                         parseInt( execResult[ 2 ], 16 ),
-                                        parseInt( execResult[ 3 ], 16 )
+                                        parseInt( execResult[ 3 ], 16 ),
+                                        execResult[ 4 ] ?
+                                                ( parseInt( execResult[ 4 ], 16 ) / 255 ).toFixed( 2 ) :
+                                                1
                                 ];
                         }
                 }, {
 
-                        // This regex ignores A-F because it's compared against an already lowercased string
-                        re: /#([a-f0-9])([a-f0-9])([a-f0-9])/,
+                        // this regex ignores A-F because it's compared against an already lowercased string
+                        re: /#([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])?/,
                         parse: function( execResult ) {
                                 return [
                                         parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),
                                         parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),
-                                        parseInt( execResult[ 3 ] + execResult[ 3 ], 16 )
+                                        parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ),
+                                        execResult[ 4 ] ?
+                                                ( parseInt( execResult[ 4 ] + execResult[ 4 ], 16 ) / 255 )
+                                                        .toFixed( 2 ) :
+                                                1
                                 ];
                         }
                 }, {
@@ -1401,7 +1419,7 @@ $.effects = {
                         }
                 } ],
 
-        // JQuery.Color( )
+        // jQuery.Color( )
         color = jQuery.Color = function( color, green, blue, alpha ) {
                 return new jQuery.Color.fn.parse( color, green, blue, alpha );
         },
@@ -1455,20 +1473,20 @@ $.effects = {
         },
         support = color.support = {},
 
-        // Element for support tests
+        // element for support tests
         supportElem = jQuery( "<p>" )[ 0 ],
 
-        // Colors = jQuery.Color.names
+        // colors = jQuery.Color.names
         colors,
 
-        // Local aliases of functions called often
+        // local aliases of functions called often
         each = jQuery.each;
 
-// Determine rgba support immediately
+// determine rgba support immediately
 supportElem.style.cssText = "background-color:rgba(1,1,1,.5)";
 support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1;
 
-// Define cache name and alpha properties
+// define cache name and alpha properties
 // for rgba and hsla spaces
 each( spaces, function( spaceName, space ) {
         space.cache = "_" + spaceName;
@@ -1479,6 +1497,22 @@ each( spaces, function( spaceName, space ) {
         };
 } );
 
+// Populate the class2type map
+jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
+        function( _i, name ) {
+                class2type[ "[object " + name + "]" ] = name.toLowerCase();
+        } );
+
+function getType( obj ) {
+        if ( obj == null ) {
+                return obj + "";
+        }
+
+        return typeof obj === "object" ?
+                class2type[ toString.call( obj ) ] || "object" :
+                typeof obj;
+}
+
 function clamp( value, prop, allowEmpty ) {
         var type = propTypes[ prop.type ] || {};
 
@@ -1497,13 +1531,13 @@ function clamp( value, prop, allowEmpty ) {
 
         if ( type.mod ) {
 
-                // We add mod before modding to make sure that negatives values
+                // we add mod before modding to make sure that negatives values
                 // get converted properly: -10 -> 350
                 return ( value + type.mod ) % type.mod;
         }
 
-        // For now all property types without mod have min and max
-        return 0 > value ? 0 : type.max < value ? type.max : value;
+        // for now all property types without mod have min and max
+        return Math.min( type.max, Math.max( 0, value ) );
 }
 
 function stringParse( string ) {
@@ -1512,7 +1546,7 @@ function stringParse( string ) {
 
         string = string.toLowerCase();
 
-        each( stringParsers, function( i, parser ) {
+        each( stringParsers, function( _i, parser ) {
                 var parsed,
                         match = parser.re.exec( string ),
                         values = match && parser.parse( match ),
@@ -1521,12 +1555,12 @@ function stringParse( string ) {
                 if ( values ) {
                         parsed = inst[ spaceName ]( values );
 
-                        // If this was an rgba parse the assignment might happen twice
+                        // if this was an rgba parse the assignment might happen twice
                         // oh well....
                         inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];
                         rgba = inst._rgba = parsed._rgba;
 
-                        // Exit each( stringParsers ) here because we matched
+                        // exit each( stringParsers ) here because we matched
                         return false;
                 }
         } );
@@ -1534,7 +1568,7 @@ function stringParse( string ) {
         // Found a stringParser that handled it
         if ( rgba.length ) {
 
-                // If this came from a parsed string, force "transparent" when alpha is 0
+                // if this came from a parsed string, force "transparent" when alpha is 0
                 // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0)
                 if ( rgba.join() === "0,0,0,0" ) {
                         jQuery.extend( rgba, colors.transparent );
@@ -1542,7 +1576,7 @@ function stringParse( string ) {
                 return inst;
         }
 
-        // Named colors
+        // named colors
         return colors[ string ];
 }
 
@@ -1558,10 +1592,10 @@ color.fn = jQuery.extend( color.prototype, {
                 }
 
                 var inst = this,
-                        type = jQuery.type( red ),
+                        type = getType( red ),
                         rgba = this._rgba = [];
 
-                // More than 1 argument specified - assume ( red, green, blue, alpha )
+                // more than 1 argument specified - assume ( red, green, blue, alpha )
                 if ( green !== undefined ) {
                         red = [ red, green, blue, alpha ];
                         type = "array";
@@ -1572,7 +1606,7 @@ color.fn = jQuery.extend( color.prototype, {
                 }
 
                 if ( type === "array" ) {
-                        each( spaces.rgba.props, function( key, prop ) {
+                        each( spaces.rgba.props, function( _key, prop ) {
                                 rgba[ prop.idx ] = clamp( red[ prop.idx ], prop );
                         } );
                         return this;
@@ -1580,20 +1614,20 @@ color.fn = jQuery.extend( color.prototype, {
 
                 if ( type === "object" ) {
                         if ( red instanceof color ) {
-                                each( spaces, function( spaceName, space ) {
+                                each( spaces, function( _spaceName, space ) {
                                         if ( red[ space.cache ] ) {
                                                 inst[ space.cache ] = red[ space.cache ].slice();
                                         }
                                 } );
                         } else {
-                                each( spaces, function( spaceName, space ) {
+                                each( spaces, function( _spaceName, space ) {
                                         var cache = space.cache;
                                         each( space.props, function( key, prop ) {
 
-                                                // If the cache doesn't exist, and we know how to convert
+                                                // if the cache doesn't exist, and we know how to convert
                                                 if ( !inst[ cache ] && space.to ) {
 
-                                                        // If the value was null, we don't need to copy it
+                                                        // if the value was null, we don't need to copy it
                                                         // if the key was alpha, we don't need to copy it either
                                                         if ( key === "alpha" || red[ key ] == null ) {
                                                                 return;
@@ -1601,17 +1635,19 @@ color.fn = jQuery.extend( color.prototype, {
                                                         inst[ cache ] = space.to( inst._rgba );
                                                 }
 
-                                                // This is the only case where we allow nulls for ALL properties.
+                                                // this is the only case where we allow nulls for ALL properties.
                                                 // call clamp with alwaysAllowEmpty
                                                 inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );
                                         } );
 
-                                        // Everything defined but alpha?
-                                        if ( inst[ cache ] &&
-                                                        jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {
+                                        // everything defined but alpha?
+                                        if ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {
+
+                                                // use the default of 1
+                                                if ( inst[ cache ][ 3 ] == null ) {
+                                                        inst[ cache ][ 3 ] = 1;
+                                                }
 
-                                                // Use the default of 1
-                                                inst[ cache ][ 3 ] = 1;
                                                 if ( space.from ) {
                                                         inst._rgba = space.from( inst[ cache ] );
                                                 }
@@ -1661,18 +1697,18 @@ color.fn = jQuery.extend( color.prototype, {
                         result = start.slice();
 
                 end = end[ space.cache ];
-                each( space.props, function( key, prop ) {
+                each( space.props, function( _key, prop ) {
                         var index = prop.idx,
                                 startValue = start[ index ],
                                 endValue = end[ index ],
                                 type = propTypes[ prop.type ] || {};
 
-                        // If null, don't override start value
+                        // if null, don't override start value
                         if ( endValue === null ) {
                                 return;
                         }
 
-                        // If null - use end
+                        // if null - use end
                         if ( startValue === null ) {
                                 result[ index ] = endValue;
                         } else {
@@ -1690,7 +1726,7 @@ color.fn = jQuery.extend( color.prototype, {
         },
         blend: function( opaque ) {
 
-                // If we are already opaque - return ourself
+                // if we are already opaque - return ourself
                 if ( this._rgba[ 3 ] === 1 ) {
                         return this;
                 }
@@ -1706,7 +1742,10 @@ color.fn = jQuery.extend( color.prototype, {
         toRgbaString: function() {
                 var prefix = "rgba(",
                         rgba = jQuery.map( this._rgba, function( v, i ) {
-                                return v == null ? ( i > 2 ? 1 : 0 ) : v;
+                                if ( v != null ) {
+                                        return v;
+                                }
+                                return i > 2 ? 1 : 0;
                         } );
 
                 if ( rgba[ 3 ] === 1 ) {
@@ -1723,7 +1762,7 @@ color.fn = jQuery.extend( color.prototype, {
                                         v = i > 2 ? 1 : 0;
                                 }
 
-                                // Catch 1 and 2
+                                // catch 1 and 2
                                 if ( i && i < 3 ) {
                                         v = Math.round( v * 100 ) + "%";
                                 }
@@ -1746,7 +1785,7 @@ color.fn = jQuery.extend( color.prototype, {
 
                 return "#" + jQuery.map( rgba, function( v ) {
 
-                        // Default to 0 when nulls exist
+                        // default to 0 when nulls exist
                         v = ( v || 0 ).toString( 16 );
                         return v.length === 1 ? "0" + v : v;
                 } ).join( "" );
@@ -1757,7 +1796,7 @@ color.fn = jQuery.extend( color.prototype, {
 } );
 color.fn.parse.prototype = color.fn;
 
-// Hsla conversions adapted from:
+// hsla conversions adapted from:
 // https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021
 
 function hue2rgb( p, q, h ) {
@@ -1799,7 +1838,7 @@ spaces.hsla.to = function( rgba ) {
                 h = ( 60 * ( r - g ) / diff ) + 240;
         }
 
-        // Chroma (diff) == 0 means greyscale which, by definition, saturation = 0%
+        // chroma (diff) == 0 means greyscale which, by definition, saturation = 0%
         // otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)
         if ( diff === 0 ) {
                 s = 0;
@@ -1830,16 +1869,17 @@ spaces.hsla.from = function( hsla ) {
         ];
 };
 
+
 each( spaces, function( spaceName, space ) {
         var props = space.props,
                 cache = space.cache,
                 to = space.to,
                 from = space.from;
 
-        // Makes rgba() and hsla()
+        // makes rgba() and hsla()
         color.fn[ spaceName ] = function( value ) {
 
-                // Generate a cache for this space if it doesn't exist
+                // generate a cache for this space if it doesn't exist
                 if ( to && !this[ cache ] ) {
                         this[ cache ] = to( this._rgba );
                 }
@@ -1848,7 +1888,7 @@ each( spaces, function( spaceName, space ) {
                 }
 
                 var ret,
-                        type = jQuery.type( value ),
+                        type = getType( value ),
                         arr = ( type === "array" || type === "object" ) ? value : arguments,
                         local = this[ cache ].slice();
 
@@ -1869,19 +1909,24 @@ each( spaces, function( spaceName, space ) {
                 }
         };
 
-        // Makes red() green() blue() alpha() hue() saturation() lightness()
+        // makes red() green() blue() alpha() hue() saturation() lightness()
         each( props, function( key, prop ) {
 
-                // Alpha is included in more than one space
+                // alpha is included in more than one space
                 if ( color.fn[ key ] ) {
                         return;
                 }
                 color.fn[ key ] = function( value ) {
-                        var vtype = jQuery.type( value ),
-                                fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ),
-                                local = this[ fn ](),
-                                cur = local[ prop.idx ],
-                                match;
+                        var local, cur, match, fn,
+                                vtype = getType( value );
+
+                        if ( key === "alpha" ) {
+                                fn = this._hsla ? "hsla" : "rgba";
+                        } else {
+                                fn = spaceName;
+                        }
+                        local = this[ fn ]();
+                        cur = local[ prop.idx ];
 
                         if ( vtype === "undefined" ) {
                                 return cur;
@@ -1889,7 +1934,7 @@ each( spaces, function( spaceName, space ) {
 
                         if ( vtype === "function" ) {
                                 value = value.call( this, cur );
-                                vtype = jQuery.type( value );
+                                vtype = getType( value );
                         }
                         if ( value == null && prop.empty ) {
                                 return this;
@@ -1906,18 +1951,17 @@ each( spaces, function( spaceName, space ) {
         } );
 } );
 
-// Add cssHook and .fx.step function for each named hook.
+// add cssHook and .fx.step function for each named hook.
 // accept a space separated string of properties
 color.hook = function( hook ) {
         var hooks = hook.split( " " );
-        each( hooks, function( i, hook ) {
+        each( hooks, function( _i, hook ) {
                 jQuery.cssHooks[ hook ] = {
                         set: function( elem, value ) {
                                 var parsed, curElem,
                                         backgroundColor = "";
 
-                                if ( value !== "transparent" && ( jQuery.type( value ) !== "string" ||
-                                                ( parsed = stringParse( value ) ) ) ) {
+                                if ( value !== "transparent" && ( getType( value ) !== "string" || ( parsed = stringParse( value ) ) ) ) {
                                         value = color( parsed || value );
                                         if ( !support.rgba && value._rgba[ 3 ] !== 1 ) {
                                                 curElem = hook === "backgroundColor" ? elem.parentNode : elem;
@@ -1943,8 +1987,7 @@ color.hook = function( hook ) {
                                         elem.style[ hook ] = value;
                                 } catch ( e ) {
 
-                                        // Wrapped to prevent IE from throwing errors on "invalid" values like
-                                        // 'auto' or 'inherit'
+                                        // wrapped to prevent IE from throwing errors on "invalid" values like 'auto' or 'inherit'
                                 }
                         }
                 };
@@ -1966,7 +2009,7 @@ jQuery.cssHooks.borderColor = {
         expand: function( value ) {
                 var expanded = {};
 
-                each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) {
+                each( [ "Top", "Right", "Bottom", "Left" ], function( _i, part ) {
                         expanded[ "border" + part + "Color" ] = value;
                 } );
                 return expanded;
@@ -2002,7 +2045,32 @@ colors = jQuery.Color.names = {
         _default: "#ffffff"
 };
 
-} )( jQuery );
+
+/*!
+ * jQuery UI Effects 1.13.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Effects Core
+//>>group: Effects
+/* eslint-disable max-len */
+//>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.
+/* eslint-enable max-len */
+//>>docs: http://api.jqueryui.com/category/effects-core/
+//>>demos: http://jqueryui.com/effect/
+
+
+var dataSpace = "ui-effects-",
+        dataSpaceStyle = "ui-effects-style",
+        dataSpaceAnimated = "ui-effects-animated";
+
+$.effects = {
+        effect: {}
+};
 
 /******************************************************************************/
 /****************************** CLASS ANIMATIONS ******************************/
@@ -2034,6 +2102,12 @@ $.each(
         }
 );
 
+function camelCase( string ) {
+        return string.replace( /-([\da-z])/gi, function( all, letter ) {
+                return letter.toUpperCase();
+        } );
+}
+
 function getElementStyles( elem ) {
         var key, len,
                 style = elem.ownerDocument.defaultView ?
@@ -2046,7 +2120,7 @@ function getElementStyles( elem ) {
                 while ( len-- ) {
                         key = style[ len ];
                         if ( typeof style[ key ] === "string" ) {
-                                styles[ $.camelCase( key ) ] = style[ key ];
+                                styles[ camelCase( key ) ] = style[ key ];
                         }
                 }
 
@@ -2220,12 +2294,12 @@ $.fn.extend( {
 
 ( function() {
 
-if ( $.expr && $.expr.filters && $.expr.filters.animated ) {
-        $.expr.filters.animated = ( function( orig ) {
+if ( $.expr && $.expr.pseudos && $.expr.pseudos.animated ) {
+        $.expr.pseudos.animated = ( function( orig ) {
                 return function( elem ) {
                         return !!$( elem ).data( dataSpaceAnimated ) || orig( elem );
                 };
-        } )( $.expr.filters.animated );
+        } )( $.expr.pseudos.animated );
 }
 
 if ( $.uiBackCompat !== false ) {
@@ -2294,6 +2368,7 @@ if ( $.uiBackCompat !== false ) {
                         // Firefox incorrectly exposes anonymous content
                         // https://bugzilla.mozilla.org/show_bug.cgi?id=561664
                         try {
+                                // eslint-disable-next-line no-unused-expressions
                                 active.id;
                         } catch ( e ) {
                                 active = document.body;
@@ -2356,7 +2431,7 @@ if ( $.uiBackCompat !== false ) {
 }
 
 $.extend( $.effects, {
-        version: "1.12.1",
+        version: "1.13.1",
 
         define: function( name, mode, effect ) {
                 if ( !effect ) {
@@ -2572,7 +2647,7 @@ function _normalizeArguments( effect, options, speed, callback ) {
         }
 
         // Catch (effect, callback)
-        if ( $.isFunction( options ) ) {
+        if ( typeof options === "function" ) {
                 callback = options;
                 speed = null;
                 options = {};
@@ -2586,7 +2661,7 @@ function _normalizeArguments( effect, options, speed, callback ) {
         }
 
         // Catch (effect, options, callback)
-        if ( $.isFunction( speed ) ) {
+        if ( typeof speed === "function" ) {
                 callback = speed;
                 speed = null;
         }
@@ -2620,7 +2695,7 @@ function standardAnimationOption( option ) {
         }
 
         // Complete callback
-        if ( $.isFunction( option ) ) {
+        if ( typeof option === "function" ) {
                 return true;
         }
 
@@ -2647,7 +2722,7 @@ $.fn.extend( {
                                 var el = $( this ),
                                         normalizedMode = $.effects.mode( el, mode ) || defaultMode;
 
-                                // Sentinel for duck-punching the :animated psuedo-selector
+                                // Sentinel for duck-punching the :animated pseudo-selector
                                 el.data( dataSpaceAnimated, true );
 
                                 // Save effect mode for later use,
@@ -2655,7 +2730,7 @@ $.fn.extend( {
                                 // as the .show() below destroys the initial state
                                 modes.push( normalizedMode );
 
-                                // See $.uiBackCompat inside of run() for removal of defaultMode in 1.13
+                                // See $.uiBackCompat inside of run() for removal of defaultMode in 1.14
                                 if ( defaultMode && ( normalizedMode === "show" ||
                                                 ( normalizedMode === defaultMode && normalizedMode === "hide" ) ) ) {
                                         el.show();
@@ -2665,7 +2740,7 @@ $.fn.extend( {
                                         $.effects.saveStyle( el );
                                 }
 
-                                if ( $.isFunction( next ) ) {
+                                if ( typeof next === "function" ) {
                                         next();
                                 }
                         };
@@ -2700,11 +2775,11 @@ $.fn.extend( {
                         }
 
                         function done() {
-                                if ( $.isFunction( complete ) ) {
+                                if ( typeof complete === "function" ) {
                                         complete.call( elem[ 0 ] );
                                 }
 
-                                if ( $.isFunction( next ) ) {
+                                if ( typeof next === "function" ) {
                                         next();
                                 }
                         }
@@ -2813,22 +2888,24 @@ $.fn.extend( {
                                 width: target.innerWidth()
                         },
                         startPosition = element.offset(),
-                        transfer = $( "<div class='ui-effects-transfer'></div>" )
-                                .appendTo( "body" )
-                                .addClass( options.className )
-                                .css( {
-                                        top: startPosition.top - fixTop,
-                                        left: startPosition.left - fixLeft,
-                                        height: element.innerHeight(),
-                                        width: element.innerWidth(),
-                                        position: targetFixed ? "fixed" : "absolute"
-                                } )
-                                .animate( animation, options.duration, options.easing, function() {
-                                        transfer.remove();
-                                        if ( $.isFunction( done ) ) {
-                                                done();
-                                        }
-                                } );
+                        transfer = $( "<div class='ui-effects-transfer'></div>" );
+
+                transfer
+                        .appendTo( "body" )
+                        .addClass( options.className )
+                        .css( {
+                                top: startPosition.top - fixTop,
+                                left: startPosition.left - fixLeft,
+                                height: element.innerHeight(),
+                                width: element.innerWidth(),
+                                position: targetFixed ? "fixed" : "absolute"
+                        } )
+                        .animate( animation, options.duration, options.easing, function() {
+                                transfer.remove();
+                                if ( typeof done === "function" ) {
+                                        done();
+                                }
+                        } );
         }
 } );
 
@@ -2922,7 +2999,7 @@ var effect = $.effects;
 
 
 /*!
- * jQuery UI Effects Blind 1.12.1
+ * jQuery UI Effects Blind 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -2937,7 +3014,6 @@ var effect = $.effects;
 //>>demos: http://jqueryui.com/effect/
 
 
-
 var effectsEffectBlind = $.effects.define( "blind", "hide", function( options, done ) {
         var map = {
                         up: [ "bottom", "top" ],
@@ -2978,7 +3054,7 @@ var effectsEffectBlind = $.effects.define( "blind", "hide", function( options, d
 
 
 /*!
- * jQuery UI Effects Bounce 1.12.1
+ * jQuery UI Effects Bounce 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -2993,7 +3069,6 @@ var effectsEffectBlind = $.effects.define( "blind", "hide", function( options, d
 //>>demos: http://jqueryui.com/effect/
 
 
-
 var effectsEffectBounce = $.effects.define( "bounce", function( options, done ) {
         var upAnim, downAnim, refValue,
                 element = $( this ),
@@ -3074,7 +3149,7 @@ var effectsEffectBounce = $.effects.define( "bounce", function( options, done )
 
 
 /*!
- * jQuery UI Effects Clip 1.12.1
+ * jQuery UI Effects Clip 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -3089,7 +3164,6 @@ var effectsEffectBounce = $.effects.define( "bounce", function( options, done )
 //>>demos: http://jqueryui.com/effect/
 
 
-
 var effectsEffectClip = $.effects.define( "clip", "hide", function( options, done ) {
         var start,
                 animate = {},
@@ -3125,7 +3199,7 @@ var effectsEffectClip = $.effects.define( "clip", "hide", function( options, don
 
 
 /*!
- * jQuery UI Effects Drop 1.12.1
+ * jQuery UI Effects Drop 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -3140,7 +3214,6 @@ var effectsEffectClip = $.effects.define( "clip", "hide", function( options, don
 //>>demos: http://jqueryui.com/effect/
 
 
-
 var effectsEffectDrop = $.effects.define( "drop", "hide", function( options, done ) {
 
         var distance,
@@ -3180,7 +3253,7 @@ var effectsEffectDrop = $.effects.define( "drop", "hide", function( options, don
 
 
 /*!
- * jQuery UI Effects Explode 1.12.1
+ * jQuery UI Effects Explode 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -3190,14 +3263,13 @@ var effectsEffectDrop = $.effects.define( "drop", "hide", function( options, don
 
 //>>label: Explode Effect
 //>>group: Effects
-// jscs:disable maximumLineLength
+/* eslint-disable max-len */
 //>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness.
-// jscs:enable maximumLineLength
+/* eslint-enable max-len */
 //>>docs: http://api.jqueryui.com/explode-effect/
 //>>demos: http://jqueryui.com/effect/
 
 
-
 var effectsEffectExplode = $.effects.define( "explode", "hide", function( options, done ) {
 
         var i, j, left, top, mx, my,
@@ -3277,7 +3349,7 @@ var effectsEffectExplode = $.effects.define( "explode", "hide", function( option
 
 
 /*!
- * jQuery UI Effects Fade 1.12.1
+ * jQuery UI Effects Fade 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -3292,7 +3364,6 @@ var effectsEffectExplode = $.effects.define( "explode", "hide", function( option
 //>>demos: http://jqueryui.com/effect/
 
 
-
 var effectsEffectFade = $.effects.define( "fade", "toggle", function( options, done ) {
         var show = options.mode === "show";
 
@@ -3310,7 +3381,7 @@ var effectsEffectFade = $.effects.define( "fade", "toggle", function( options, d
 
 
 /*!
- * jQuery UI Effects Fold 1.12.1
+ * jQuery UI Effects Fold 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -3325,7 +3396,6 @@ var effectsEffectFade = $.effects.define( "fade", "toggle", function( options, d
 //>>demos: http://jqueryui.com/effect/
 
 
-
 var effectsEffectFold = $.effects.define( "fold", "hide", function( options, done ) {
 
         // Create element
@@ -3385,7 +3455,7 @@ var effectsEffectFold = $.effects.define( "fold", "hide", function( options, don
 
 
 /*!
- * jQuery UI Effects Highlight 1.12.1
+ * jQuery UI Effects Highlight 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -3400,7 +3470,6 @@ var effectsEffectFold = $.effects.define( "fold", "hide", function( options, don
 //>>demos: http://jqueryui.com/effect/
 
 
-
 var effectsEffectHighlight = $.effects.define( "highlight", "show", function( options, done ) {
         var element = $( this ),
                 animation = {
@@ -3428,7 +3497,7 @@ var effectsEffectHighlight = $.effects.define( "highlight", "show", function( op
 
 
 /*!
- * jQuery UI Effects Size 1.12.1
+ * jQuery UI Effects Size 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -3443,7 +3512,6 @@ var effectsEffectHighlight = $.effects.define( "highlight", "show", function( op
 //>>demos: http://jqueryui.com/effect/
 
 
-
 var effectsEffectSize = $.effects.define( "size", function( options, done ) {
 
         // Create element
@@ -3520,6 +3588,8 @@ var effectsEffectSize = $.effects.define( "size", function( options, done ) {
                 to.top = ( original.outerHeight - to.outerHeight ) * baseline.y + pos.top;
                 to.left = ( original.outerWidth - to.outerWidth ) * baseline.x + pos.left;
         }
+        delete from.outerHeight;
+        delete from.outerWidth;
         element.css( from );
 
         // Animate the children if desired
@@ -3605,7 +3675,7 @@ var effectsEffectSize = $.effects.define( "size", function( options, done ) {
 
 
 /*!
- * jQuery UI Effects Scale 1.12.1
+ * jQuery UI Effects Scale 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -3620,7 +3690,6 @@ var effectsEffectSize = $.effects.define( "size", function( options, done ) {
 //>>demos: http://jqueryui.com/effect/
 
 
-
 var effectsEffectScale = $.effects.define( "scale", function( options, done ) {
 
         // Create element
@@ -3646,7 +3715,7 @@ var effectsEffectScale = $.effects.define( "scale", function( options, done ) {
 
 
 /*!
- * jQuery UI Effects Puff 1.12.1
+ * jQuery UI Effects Puff 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -3661,7 +3730,6 @@ var effectsEffectScale = $.effects.define( "scale", function( options, done ) {
 //>>demos: http://jqueryui.com/effect/
 
 
-
 var effectsEffectPuff = $.effects.define( "puff", "hide", function( options, done ) {
         var newOptions = $.extend( true, {}, options, {
                 fade: true,
@@ -3673,7 +3741,7 @@ var effectsEffectPuff = $.effects.define( "puff", "hide", function( options, don
 
 
 /*!
- * jQuery UI Effects Pulsate 1.12.1
+ * jQuery UI Effects Pulsate 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -3688,7 +3756,6 @@ var effectsEffectPuff = $.effects.define( "puff", "hide", function( options, don
 //>>demos: http://jqueryui.com/effect/
 
 
-
 var effectsEffectPulsate = $.effects.define( "pulsate", "show", function( options, done ) {
         var element = $( this ),
                 mode = options.mode,
@@ -3723,7 +3790,7 @@ var effectsEffectPulsate = $.effects.define( "pulsate", "show", function( option
 
 
 /*!
- * jQuery UI Effects Shake 1.12.1
+ * jQuery UI Effects Shake 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -3738,7 +3805,6 @@ var effectsEffectPulsate = $.effects.define( "pulsate", "show", function( option
 //>>demos: http://jqueryui.com/effect/
 
 
-
 var effectsEffectShake = $.effects.define( "shake", function( options, done ) {
 
         var i = 1,
@@ -3783,7 +3849,7 @@ var effectsEffectShake = $.effects.define( "shake", function( options, done ) {
 
 
 /*!
- * jQuery UI Effects Slide 1.12.1
+ * jQuery UI Effects Slide 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -3798,7 +3864,6 @@ var effectsEffectShake = $.effects.define( "shake", function( options, done ) {
 //>>demos: http://jqueryui.com/effect/
 
 
-
 var effectsEffectSlide = $.effects.define( "slide", "show", function( options, done ) {
         var startClip, startRef,
                 element = $( this ),
@@ -3845,7 +3910,7 @@ var effectsEffectSlide = $.effects.define( "slide", "show", function( options, d
 
 
 /*!
- * jQuery UI Effects Transfer 1.12.1
+ * jQuery UI Effects Transfer 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -3860,7 +3925,6 @@ var effectsEffectSlide = $.effects.define( "slide", "show", function( options, d
 //>>demos: http://jqueryui.com/effect/
 
 
-
 var effect;
 if ( $.uiBackCompat !== false ) {
         effect = $.effects.define( "transfer", function( options, done ) {
@@ -3871,7 +3935,7 @@ var effectsEffectTransfer = effect;
 
 
 /*!
- * jQuery UI Focusable 1.12.1
+ * jQuery UI Focusable 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -3885,7 +3949,6 @@ var effectsEffectTransfer = effect;
 //>>docs: http://api.jqueryui.com/focusable-selector/
 
 
-
 // Selectors
 $.ui.focusable = function( element, hasTabindex ) {
         var map, mapName, img, focusableIfVisible, fieldset,
@@ -3932,10 +3995,10 @@ function visible( element ) {
                 element = element.parent();
                 visibility = element.css( "visibility" );
         }
-        return visibility !== "hidden";
+        return visibility === "visible";
 }
 
-$.extend( $.expr[ ":" ], {
+$.extend( $.expr.pseudos, {
         focusable: function( element ) {
                 return $.ui.focusable( element, $.attr( element, "tabindex" ) != null );
         }
@@ -3945,17 +4008,16 @@ var focusable = $.ui.focusable;
 
 
 
-
 // Support: IE8 Only
 // IE8 does not support the form attribute and when it is supplied. It overwrites the form prop
 // with a string, so we need to find the proper form.
-var form = $.fn.form = function() {
+var form = $.fn._form = function() {
         return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form );
 };
 
 
 /*!
- * jQuery UI Form Reset Mixin 1.12.1
+ * jQuery UI Form Reset Mixin 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -3969,7 +4031,6 @@ var form = $.fn.form = function() {
 //>>docs: http://api.jqueryui.com/form-reset-mixin/
 
 
-
 var formResetMixin = $.ui.formResetMixin = {
         _formResetHandler: function() {
                 var form = $( this );
@@ -3984,7 +4045,7 @@ var formResetMixin = $.ui.formResetMixin = {
         },
 
         _bindFormResetHandler: function() {
-                this.form = this.element.form();
+                this.form = this.element._form();
                 if ( !this.form.length ) {
                         return;
                 }
@@ -4018,7 +4079,7 @@ var formResetMixin = $.ui.formResetMixin = {
 
 
 /*!
- * jQuery UI Support for jQuery core 1.7.x 1.12.1
+ * jQuery UI Support for jQuery core 1.8.x and newer 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -4027,77 +4088,73 @@ var formResetMixin = $.ui.formResetMixin = {
  *
  */
 
-//>>label: jQuery 1.7 Support
+//>>label: jQuery 1.8+ Support
 //>>group: Core
-//>>description: Support version 1.7.x of jQuery core
-
-
-
-// Support: jQuery 1.7 only
-// Not a great way to check versions, but since we only support 1.7+ and only
-// need to detect <1.8, this is a simple check that should suffice. Checking
-// for "1.7." would be a bit safer, but the version string is 1.7, not 1.7.0
-// and we'll never reach 1.70.0 (if we do, we certainly won't be supporting
-// 1.7 anymore). See #11197 for why we're not using feature detection.
-if ( $.fn.jquery.substring( 0, 3 ) === "1.7" ) {
-
-        // Setters for .innerWidth(), .innerHeight(), .outerWidth(), .outerHeight()
-        // Unlike jQuery Core 1.8+, these only support numeric values to set the
-        // dimensions in pixels
-        $.each( [ "Width", "Height" ], function( i, name ) {
-                var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
-                        type = name.toLowerCase(),
-                        orig = {
-                                innerWidth: $.fn.innerWidth,
-                                innerHeight: $.fn.innerHeight,
-                                outerWidth: $.fn.outerWidth,
-                                outerHeight: $.fn.outerHeight
-                        };
+//>>description: Support version 1.8.x and newer of jQuery core
 
-                function reduce( elem, size, border, margin ) {
-                        $.each( side, function() {
-                                size -= parseFloat( $.css( elem, "padding" + this ) ) || 0;
-                                if ( border ) {
-                                        size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0;
-                                }
-                                if ( margin ) {
-                                        size -= parseFloat( $.css( elem, "margin" + this ) ) || 0;
-                                }
-                        } );
-                        return size;
-                }
 
-                $.fn[ "inner" + name ] = function( size ) {
-                        if ( size === undefined ) {
-                                return orig[ "inner" + name ].call( this );
-                        }
+// Support: jQuery 1.9.x or older
+// $.expr[ ":" ] is deprecated.
+if ( !$.expr.pseudos ) {
+        $.expr.pseudos = $.expr[ ":" ];
+}
 
-                        return this.each( function() {
-                                $( this ).css( type, reduce( this, size ) + "px" );
-                        } );
-                };
+// Support: jQuery 1.11.x or older
+// $.unique has been renamed to $.uniqueSort
+if ( !$.uniqueSort ) {
+        $.uniqueSort = $.unique;
+}
+
+// Support: jQuery 2.2.x or older.
+// This method has been defined in jQuery 3.0.0.
+// Code from https://github.com/jquery/jquery/blob/e539bac79e666bba95bba86d690b4e609dca2286/src/selector/escapeSelector.js
+if ( !$.escapeSelector ) {
 
-                $.fn[ "outer" + name ] = function( size, margin ) {
-                        if ( typeof size !== "number" ) {
-                                return orig[ "outer" + name ].call( this, size );
+        // CSS string/identifier serialization
+        // https://drafts.csswg.org/cssom/#common-serializing-idioms
+        var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;
+
+        var fcssescape = function( ch, asCodePoint ) {
+                if ( asCodePoint ) {
+
+                        // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
+                        if ( ch === "\0" ) {
+                                return "\uFFFD";
                         }
 
-                        return this.each( function() {
-                                $( this ).css( type, reduce( this, size, true, margin ) + "px" );
-                        } );
-                };
-        } );
+                        // Control characters and (dependent upon position) numbers get escaped as code points
+                        return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
+                }
 
-        $.fn.addBack = function( selector ) {
-                return this.add( selector == null ?
-                        this.prevObject : this.prevObject.filter( selector )
-                );
+                // Other potentially-special ASCII characters get backslash-escaped
+                return "\\" + ch;
         };
+
+        $.escapeSelector = function( sel ) {
+                return ( sel + "" ).replace( rcssescape, fcssescape );
+        };
+}
+
+// Support: jQuery 3.4.x or older
+// These methods have been defined in jQuery 3.5.0.
+if ( !$.fn.even || !$.fn.odd ) {
+        $.fn.extend( {
+                even: function() {
+                        return this.filter( function( i ) {
+                                return i % 2 === 0;
+                        } );
+                },
+                odd: function() {
+                        return this.filter( function( i ) {
+                                return i % 2 === 1;
+                        } );
+                }
+        } );
 }
 
 ;
 /*!
- * jQuery UI Keycode 1.12.1
+ * jQuery UI Keycode 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -4131,19 +4188,8 @@ var keycode = $.ui.keyCode = {
 };
 
 
-
-
-// Internal use only
-var escapeSelector = $.ui.escapeSelector = ( function() {
-        var selectorEscape = /([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;
-        return function( selector ) {
-                return selector.replace( selectorEscape, "\\$1" );
-        };
-} )();
-
-
 /*!
- * jQuery UI Labels 1.12.1
+ * jQuery UI Labels 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -4157,10 +4203,13 @@ var escapeSelector = $.ui.escapeSelector = ( function() {
 //>>docs: http://api.jqueryui.com/labels/
 
 
-
 var labels = $.fn.labels = function() {
         var ancestor, selector, id, labels, ancestors;
 
+        if ( !this.length ) {
+                return this.pushStack( [] );
+        }
+
         // Check control.labels first
         if ( this[ 0 ].labels && this[ 0 ].labels.length ) {
                 return this.pushStack( this[ 0 ].labels );
@@ -4183,7 +4232,7 @@ var labels = $.fn.labels = function() {
                 ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() );
 
                 // Create a selector for the label based on the id
-                selector = "label[for='" + $.ui.escapeSelector( id ) + "']";
+                selector = "label[for='" + $.escapeSelector( id ) + "']";
 
                 labels = labels.add( ancestors.find( selector ).addBack( selector ) );
 
@@ -4195,7 +4244,7 @@ var labels = $.fn.labels = function() {
 
 
 /*!
- * jQuery UI Scroll Parent 1.12.1
+ * jQuery UI Scroll Parent 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -4209,7 +4258,6 @@ var labels = $.fn.labels = function() {
 //>>docs: http://api.jqueryui.com/scrollParent/
 
 
-
 var scrollParent = $.fn.scrollParent = function( includeHidden ) {
         var position = this.css( "position" ),
                 excludeStaticParent = position === "absolute",
@@ -4230,7 +4278,7 @@ var scrollParent = $.fn.scrollParent = function( includeHidden ) {
 
 
 /*!
- * jQuery UI Tabbable 1.12.1
+ * jQuery UI Tabbable 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -4244,8 +4292,7 @@ var scrollParent = $.fn.scrollParent = function( includeHidden ) {
 //>>docs: http://api.jqueryui.com/tabbable-selector/
 
 
-
-var tabbable = $.extend( $.expr[ ":" ], {
+var tabbable = $.extend( $.expr.pseudos, {
         tabbable: function( element ) {
                 var tabIndex = $.attr( element, "tabindex" ),
                         hasTabindex = tabIndex != null;
@@ -4255,7 +4302,7 @@ var tabbable = $.extend( $.expr[ ":" ], {
 
 
 /*!
- * jQuery UI Unique ID 1.12.1
+ * jQuery UI Unique ID 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -4269,7 +4316,6 @@ var tabbable = $.extend( $.expr[ ":" ], {
 //>>docs: http://api.jqueryui.com/uniqueId/
 
 
-
 var uniqueId = $.fn.extend( {
         uniqueId: ( function() {
                 var uuid = 0;
@@ -4294,7 +4340,7 @@ var uniqueId = $.fn.extend( {
 
 
 /*!
- * jQuery UI Accordion 1.12.1
+ * jQuery UI Accordion 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -4304,9 +4350,9 @@ var uniqueId = $.fn.extend( {
 
 //>>label: Accordion
 //>>group: Widgets
-// jscs:disable maximumLineLength
+/* eslint-disable max-len */
 //>>description: Displays collapsible content panels for presenting information in a limited amount of space.
-// jscs:enable maximumLineLength
+/* eslint-enable max-len */
 //>>docs: http://api.jqueryui.com/accordion/
 //>>demos: http://jqueryui.com/accordion/
 //>>css.structure: ../../themes/base/core.css
@@ -4314,9 +4360,8 @@ var uniqueId = $.fn.extend( {
 //>>css.theme: ../../themes/base/theme.css
 
 
-
 var widgetsAccordion = $.widget( "ui.accordion", {
-        version: "1.12.1",
+        version: "1.13.1",
         options: {
                 active: 0,
                 animate: {},
@@ -4327,7 +4372,9 @@ var widgetsAccordion = $.widget( "ui.accordion", {
                 },
                 collapsible: false,
                 event: "click",
-                header: "> li > :first-child, > :not(li):even",
+                header: function( elem ) {
+                        return elem.find( "> li > :first-child" ).add( elem.find( "> :not(li)" ).even() );
+                },
                 heightStyle: "auto",
                 icons: {
                         activeHeader: "ui-icon-triangle-1-s",
@@ -4558,7 +4605,11 @@ var widgetsAccordion = $.widget( "ui.accordion", {
                 var prevHeaders = this.headers,
                         prevPanels = this.panels;
 
-                this.headers = this.element.find( this.options.header );
+                if ( typeof this.options.header === "function" ) {
+                        this.headers = this.options.header( this.element );
+                } else {
+                        this.headers = this.element.find( this.options.header );
+                }
                 this._addClass( this.headers, "ui-accordion-header ui-accordion-header-collapsed",
                         "ui-state-default" );
 
@@ -4921,7 +4972,7 @@ var safeActiveElement = $.ui.safeActiveElement = function( document ) {
 
 
 /*!
- * jQuery UI Menu 1.12.1
+ * jQuery UI Menu 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -4939,9 +4990,8 @@ var safeActiveElement = $.ui.safeActiveElement = function( document ) {
 //>>css.theme: ../../themes/base/theme.css
 
 
-
 var widgetsMenu = $.widget( "ui.menu", {
-        version: "1.12.1",
+        version: "1.13.1",
         defaultElement: "<ul>",
         delay: 300,
         options: {
@@ -4968,6 +5018,7 @@ var widgetsMenu = $.widget( "ui.menu", {
                 // Flag used to prevent firing of the click handler
                 // as the event bubbles up through nested menus
                 this.mouseHandled = false;
+                this.lastMousePosition = { x: null, y: null };
                 this.element
                         .uniqueId()
                         .attr( {
@@ -4982,6 +5033,8 @@ var widgetsMenu = $.widget( "ui.menu", {
                         // them (focus should always stay on UL during navigation).
                         "mousedown .ui-menu-item": function( event ) {
                                 event.preventDefault();
+
+                                this._activateItem( event );
                         },
                         "click .ui-menu-item": function( event ) {
                                 var target = $( event.target );
@@ -5011,36 +5064,15 @@ var widgetsMenu = $.widget( "ui.menu", {
                                         }
                                 }
                         },
-                        "mouseenter .ui-menu-item": function( event ) {
-
-                                // Ignore mouse events while typeahead is active, see #10458.
-                                // Prevents focusing the wrong item when typeahead causes a scroll while the mouse
-                                // is over an item in the menu
-                                if ( this.previousFilter ) {
-                                        return;
-                                }
-
-                                var actualTarget = $( event.target ).closest( ".ui-menu-item" ),
-                                        target = $( event.currentTarget );
-
-                                // Ignore bubbled events on parent items, see #11641
-                                if ( actualTarget[ 0 ] !== target[ 0 ] ) {
-                                        return;
-                                }
-
-                                // Remove ui-state-active class from siblings of the newly focused menu item
-                                // to avoid a jump caused by adjacent elements both having a class with a border
-                                this._removeClass( target.siblings().children( ".ui-state-active" ),
-                                        null, "ui-state-active" );
-                                this.focus( event, target );
-                        },
+                        "mouseenter .ui-menu-item": "_activateItem",
+                        "mousemove .ui-menu-item": "_activateItem",
                         mouseleave: "collapseAll",
                         "mouseleave .ui-menu": "collapseAll",
                         focus: function( event, keepActiveItem ) {
 
                                 // If there's already an active item, keep it active
                                 // If not, activate the first item
-                                var item = this.active || this.element.find( this.options.items ).eq( 0 );
+                                var item = this.active || this._menuItems().first();
 
                                 if ( !keepActiveItem ) {
                                         this.focus( event, item );
@@ -5066,7 +5098,7 @@ var widgetsMenu = $.widget( "ui.menu", {
                 this._on( this.document, {
                         click: function( event ) {
                                 if ( this._closeOnDocumentClick( event ) ) {
-                                        this.collapseAll( event );
+                                        this.collapseAll( event, true );
                                 }
 
                                 // Reset the mouseHandled flag
@@ -5075,6 +5107,46 @@ var widgetsMenu = $.widget( "ui.menu", {
                 } );
         },
 
+        _activateItem: function( event ) {
+
+                // Ignore mouse events while typeahead is active, see #10458.
+                // Prevents focusing the wrong item when typeahead causes a scroll while the mouse
+                // is over an item in the menu
+                if ( this.previousFilter ) {
+                        return;
+                }
+
+                // If the mouse didn't actually move, but the page was scrolled, ignore the event (#9356)
+                if ( event.clientX === this.lastMousePosition.x &&
+                                event.clientY === this.lastMousePosition.y ) {
+                        return;
+                }
+
+                this.lastMousePosition = {
+                        x: event.clientX,
+                        y: event.clientY
+                };
+
+                var actualTarget = $( event.target ).closest( ".ui-menu-item" ),
+                        target = $( event.currentTarget );
+
+                // Ignore bubbled events on parent items, see #11641
+                if ( actualTarget[ 0 ] !== target[ 0 ] ) {
+                        return;
+                }
+
+                // If the item is already active, there's nothing to do
+                if ( target.is( ".ui-state-active" ) ) {
+                        return;
+                }
+
+                // Remove ui-state-active class from siblings of the newly focused menu item
+                // to avoid a jump caused by adjacent elements both having a class with a border
+                this._removeClass( target.siblings().children( ".ui-state-active" ),
+                        null, "ui-state-active" );
+                this.focus( event, target );
+        },
+
         _destroy: function() {
                 var items = this.element.find( ".ui-menu-item" )
                                 .removeAttr( "role aria-disabled" ),
@@ -5406,7 +5478,7 @@ var widgetsMenu = $.widget( "ui.menu", {
                         this._removeClass( currentMenu.find( ".ui-state-active" ), null, "ui-state-active" );
 
                         this.activeMenu = currentMenu;
-                }, this.delay );
+                }, all ? 0 : this.delay );
         },
 
         // With no arguments, closes the currently active menu - if nothing is active
@@ -5442,11 +5514,7 @@ var widgetsMenu = $.widget( "ui.menu", {
         },
 
         expand: function( event ) {
-                var newItem = this.active &&
-                        this.active
-                                .children( ".ui-menu " )
-                                        .find( this.options.items )
-                                                .first();
+                var newItem = this.active && this._menuItems( this.active.children( ".ui-menu" ) ).first();
 
                 if ( newItem && newItem.length ) {
                         this._open( newItem.parent() );
@@ -5474,21 +5542,27 @@ var widgetsMenu = $.widget( "ui.menu", {
                 return this.active && !this.active.nextAll( ".ui-menu-item" ).length;
         },
 
+        _menuItems: function( menu ) {
+                return ( menu || this.element )
+                        .find( this.options.items )
+                        .filter( ".ui-menu-item" );
+        },
+
         _move: function( direction, filter, event ) {
                 var next;
                 if ( this.active ) {
                         if ( direction === "first" || direction === "last" ) {
                                 next = this.active
                                         [ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" )
-                                        .eq( -1 );
+                                        .last();
                         } else {
                                 next = this.active
                                         [ direction + "All" ]( ".ui-menu-item" )
-                                        .eq( 0 );
+                                        .first();
                         }
                 }
                 if ( !next || !next.length || !this.active ) {
-                        next = this.activeMenu.find( this.options.items )[ filter ]();
+                        next = this._menuItems( this.activeMenu )[ filter ]();
                 }
 
                 this.focus( event, next );
@@ -5506,7 +5580,13 @@ var widgetsMenu = $.widget( "ui.menu", {
                 }
                 if ( this._hasScroll() ) {
                         base = this.active.offset().top;
-                        height = this.element.height();
+                        height = this.element.innerHeight();
+
+                        // jQuery 3.2 doesn't include scrollbars in innerHeight, add it back.
+                        if ( $.fn.jquery.indexOf( "3.2." ) === 0 ) {
+                                height += this.element[ 0 ].offsetHeight - this.element.outerHeight();
+                        }
+
                         this.active.nextAll( ".ui-menu-item" ).each( function() {
                                 item = $( this );
                                 return item.offset().top - base - height < 0;
@@ -5514,7 +5594,7 @@ var widgetsMenu = $.widget( "ui.menu", {
 
                         this.focus( event, item );
                 } else {
-                        this.focus( event, this.activeMenu.find( this.options.items )
+                        this.focus( event, this._menuItems( this.activeMenu )
                                 [ !this.active ? "first" : "last" ]() );
                 }
         },
@@ -5530,7 +5610,13 @@ var widgetsMenu = $.widget( "ui.menu", {
                 }
                 if ( this._hasScroll() ) {
                         base = this.active.offset().top;
-                        height = this.element.height();
+                        height = this.element.innerHeight();
+
+                        // jQuery 3.2 doesn't include scrollbars in innerHeight, add it back.
+                        if ( $.fn.jquery.indexOf( "3.2." ) === 0 ) {
+                                height += this.element[ 0 ].offsetHeight - this.element.outerHeight();
+                        }
+
                         this.active.prevAll( ".ui-menu-item" ).each( function() {
                                 item = $( this );
                                 return item.offset().top - base + height > 0;
@@ -5538,7 +5624,7 @@ var widgetsMenu = $.widget( "ui.menu", {
 
                         this.focus( event, item );
                 } else {
-                        this.focus( event, this.activeMenu.find( this.options.items ).first() );
+                        this.focus( event, this._menuItems( this.activeMenu ).first() );
                 }
         },
 
@@ -5569,14 +5655,15 @@ var widgetsMenu = $.widget( "ui.menu", {
                                 .filter( ".ui-menu-item" )
                                         .filter( function() {
                                                 return regex.test(
-                                                        $.trim( $( this ).children( ".ui-menu-item-wrapper" ).text() ) );
+                                                        String.prototype.trim.call(
+                                                                $( this ).children( ".ui-menu-item-wrapper" ).text() ) );
                                         } );
         }
 } );
 
 
 /*!
- * jQuery UI Autocomplete 1.12.1
+ * jQuery UI Autocomplete 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -5594,9 +5681,8 @@ var widgetsMenu = $.widget( "ui.menu", {
 //>>css.theme: ../../themes/base/theme.css
 
 
-
 $.widget( "ui.autocomplete", {
-        version: "1.12.1",
+        version: "1.13.1",
         defaultElement: "<input>",
         options: {
                 appendTo: null,
@@ -5622,6 +5708,7 @@ $.widget( "ui.autocomplete", {
 
         requestIndex: 0,
         pending: 0,
+        liveRegionTimer: null,
 
         _create: function() {
 
@@ -5759,11 +5846,6 @@ $.widget( "ui.autocomplete", {
                                 this.previous = this._value();
                         },
                         blur: function( event ) {
-                                if ( this.cancelBlur ) {
-                                        delete this.cancelBlur;
-                                        return;
-                                }
-
                                 clearTimeout( this.searching );
                                 this.close( event );
                                 this._change( event );
@@ -5779,31 +5861,24 @@ $.widget( "ui.autocomplete", {
                                 role: null
                         } )
                         .hide()
+
+                        // Support: IE 11 only, Edge <= 14
+                        // For other browsers, we preventDefault() on the mousedown event
+                        // to keep the dropdown from taking focus from the input. This doesn't
+                        // work for IE/Edge, causing problems with selection and scrolling (#9638)
+                        // Happily, IE and Edge support an "unselectable" attribute that
+                        // prevents an element from receiving focus, exactly what we want here.
+                        .attr( {
+                                "unselectable": "on"
+                        } )
                         .menu( "instance" );
 
                 this._addClass( this.menu.element, "ui-autocomplete", "ui-front" );
                 this._on( this.menu.element, {
                         mousedown: function( event ) {
 
-                                // prevent moving focus out of the text field
+                                // Prevent moving focus out of the text field
                                 event.preventDefault();
-
-                                // IE doesn't prevent moving focus even with event.preventDefault()
-                                // so we set a flag to know when we should ignore the blur event
-                                this.cancelBlur = true;
-                                this._delay( function() {
-                                        delete this.cancelBlur;
-
-                                        // Support: IE 8 only
-                                        // Right clicking a menu item or selecting text from the menu items will
-                                        // result in focus moving out of the input. However, we've already received
-                                        // and ignored the blur event because of the cancelBlur flag set above. So
-                                        // we restore focus to ensure that the menu closes properly based on the user's
-                                        // next actions.
-                                        if ( this.element[ 0 ] !== $.ui.safeActiveElement( this.document[ 0 ] ) ) {
-                                                this.element.trigger( "focus" );
-                                        }
-                                } );
                         },
                         menufocus: function( event, ui ) {
                                 var label, item;
@@ -5834,9 +5909,11 @@ $.widget( "ui.autocomplete", {
 
                                 // Announce the value in the liveRegion
                                 label = ui.item.attr( "aria-label" ) || item.value;
-                                if ( label && $.trim( label ).length ) {
-                                        this.liveRegion.children().hide();
-                                        $( "<div>" ).text( label ).appendTo( this.liveRegion );
+                                if ( label && String.prototype.trim.call( label ).length ) {
+                                        clearTimeout( this.liveRegionTimer );
+                                        this.liveRegionTimer = this._delay( function() {
+                                                this.liveRegion.html( $( "<div>" ).text( label ) );
+                                        }, 100 );
                                 }
                         },
                         menuselect: function( event, ui ) {
@@ -5946,7 +6023,7 @@ $.widget( "ui.autocomplete", {
         _initSource: function() {
                 var array, url,
                         that = this;
-                if ( $.isArray( this.options.source ) ) {
+                if ( Array.isArray( this.options.source ) ) {
                         array = this.options.source;
                         this.source = function( request, response ) {
                                 response( $.ui.autocomplete.filter( array, request.term ) );
@@ -6018,7 +6095,7 @@ $.widget( "ui.autocomplete", {
         _response: function() {
                 var index = ++this.requestIndex;
 
-                return $.proxy( function( content ) {
+                return function( content ) {
                         if ( index === this.requestIndex ) {
                                 this.__response( content );
                         }
@@ -6027,7 +6104,7 @@ $.widget( "ui.autocomplete", {
                         if ( !this.pending ) {
                                 this._removeClass( "ui-autocomplete-loading" );
                         }
-                }, this );
+                }.bind( this );
         },
 
         __response: function( content ) {
@@ -6187,7 +6264,7 @@ $.widget( "ui.autocomplete", {
                 var editable = element.prop( "contentEditable" );
 
                 if ( editable === "inherit" ) {
-                  return this._isContentEditable( element.parent() );
+                        return this._isContentEditable( element.parent() );
                 }
 
                 return editable === "true";
@@ -6231,8 +6308,10 @@ $.widget( "ui.autocomplete", $.ui.autocomplete, {
                 } else {
                         message = this.options.messages.noResults;
                 }
-                this.liveRegion.children().hide();
-                $( "<div>" ).text( message ).appendTo( this.liveRegion );
+                clearTimeout( this.liveRegionTimer );
+                this.liveRegionTimer = this._delay( function() {
+                        this.liveRegion.html( $( "<div>" ).text( message ) );
+                }, 100 );
         }
 } );
 
@@ -6240,7 +6319,7 @@ var widgetsAutocomplete = $.ui.autocomplete;
 
 
 /*!
- * jQuery UI Controlgroup 1.12.1
+ * jQuery UI Controlgroup 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -6261,7 +6340,7 @@ var widgetsAutocomplete = $.ui.autocomplete;
 var controlgroupCornerRegex = /ui-corner-([a-z]){2,6}/g;
 
 var widgetsControlgroup = $.widget( "ui.controlgroup", {
-        version: "1.12.1",
+        version: "1.13.1",
         defaultElement: "<div>",
         options: {
                 direction: "horizontal",
@@ -6378,7 +6457,7 @@ var widgetsControlgroup = $.widget( "ui.controlgroup", {
                                 } );
                 } );
 
-                this.childWidgets = $( $.unique( childWidgets ) );
+                this.childWidgets = $( $.uniqueSort( childWidgets ) );
                 this._addClass( this.childWidgets, "ui-controlgroup-item" );
         },
 
@@ -6462,7 +6541,7 @@ var widgetsControlgroup = $.widget( "ui.controlgroup", {
                 var result = {};
                 $.each( classes, function( key ) {
                         var current = instance.options.classes[ key ] || "";
-                        current = $.trim( current.replace( controlgroupCornerRegex, "" ) );
+                        current = String.prototype.trim.call( current.replace( controlgroupCornerRegex, "" ) );
                         result[ key ] = ( current + " " + classes[ key ] ).replace( /\s+/g, " " );
                 } );
                 return result;
@@ -6525,7 +6604,7 @@ var widgetsControlgroup = $.widget( "ui.controlgroup", {
 } );
 
 /*!
- * jQuery UI Checkboxradio 1.12.1
+ * jQuery UI Checkboxradio 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -6544,9 +6623,8 @@ var widgetsControlgroup = $.widget( "ui.controlgroup", {
 //>>css.theme: ../../themes/base/theme.css
 
 
-
 $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
-        version: "1.12.1",
+        version: "1.13.1",
         options: {
                 disabled: null,
                 label: null,
@@ -6625,9 +6703,6 @@ $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
 
                 if ( checked ) {
                         this._addClass( this.label, "ui-checkboxradio-checked", "ui-state-active" );
-                        if ( this.icon ) {
-                                this._addClass( this.icon, null, "ui-state-hover" );
-                        }
                 }
 
                 this._on( {
@@ -6662,7 +6737,7 @@ $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
         _getRadioGroup: function() {
                 var group;
                 var name = this.element[ 0 ].name;
-                var nameSelector = "input[name='" + $.ui.escapeSelector( name ) + "']";
+                var nameSelector = "input[name='" + $.escapeSelector( name ) + "']";
 
                 if ( !name ) {
                         return $( [] );
@@ -6674,7 +6749,7 @@ $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
 
                         // Not inside a form, check all inputs that also are not inside a form
                         group = $( nameSelector ).filter( function() {
-                                return $( this ).form().length === 0;
+                                return $( this )._form().length === 0;
                         } );
                 }
 
@@ -6795,7 +6870,7 @@ var widgetsCheckboxradio = $.ui.checkboxradio;
 
 
 /*!
- * jQuery UI Button 1.12.1
+ * jQuery UI Button 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -6813,9 +6888,8 @@ var widgetsCheckboxradio = $.ui.checkboxradio;
 //>>css.theme: ../../themes/base/theme.css
 
 
-
 $.widget( "ui.button", {
-        version: "1.12.1",
+        version: "1.13.1",
         defaultElement: "<button>",
         options: {
                 classes: {
@@ -7039,7 +7113,7 @@ $.widget( "ui.button", {
                         this._toggleClass( null, "ui-state-disabled", value );
                         this.element[ 0 ].disabled = value;
                         if ( value ) {
-                                this.element.blur();
+                                this.element.trigger( "blur" );
                         }
                 }
         },
@@ -7118,22 +7192,82 @@ if ( $.uiBackCompat !== false ) {
         } );
 
         $.fn.button = ( function( orig ) {
-                return function() {
-                        if ( !this.length || ( this.length && this[ 0 ].tagName !== "INPUT" ) ||
-                                        ( this.length && this[ 0 ].tagName === "INPUT" && (
-                                                this.attr( "type" ) !== "checkbox" && this.attr( "type" ) !== "radio"
-                                        ) ) ) {
-                                return orig.apply( this, arguments );
-                        }
-                        if ( !$.ui.checkboxradio ) {
-                                $.error( "Checkboxradio widget missing" );
-                        }
-                        if ( arguments.length === 0 ) {
-                                return this.checkboxradio( {
-                                        "icon": false
+                return function( options ) {
+                        var isMethodCall = typeof options === "string";
+                        var args = Array.prototype.slice.call( arguments, 1 );
+                        var returnValue = this;
+
+                        if ( isMethodCall ) {
+
+                                // If this is an empty collection, we need to have the instance method
+                                // return undefined instead of the jQuery instance
+                                if ( !this.length && options === "instance" ) {
+                                        returnValue = undefined;
+                                } else {
+                                        this.each( function() {
+                                                var methodValue;
+                                                var type = $( this ).attr( "type" );
+                                                var name = type !== "checkbox" && type !== "radio" ?
+                                                        "button" :
+                                                        "checkboxradio";
+                                                var instance = $.data( this, "ui-" + name );
+
+                                                if ( options === "instance" ) {
+                                                        returnValue = instance;
+                                                        return false;
+                                                }
+
+                                                if ( !instance ) {
+                                                        return $.error( "cannot call methods on button" +
+                                                                " prior to initialization; " +
+                                                                "attempted to call method '" + options + "'" );
+                                                }
+
+                                                if ( typeof instance[ options ] !== "function" ||
+                                                        options.charAt( 0 ) === "_" ) {
+                                                        return $.error( "no such method '" + options + "' for button" +
+                                                                " widget instance" );
+                                                }
+
+                                                methodValue = instance[ options ].apply( instance, args );
+
+                                                if ( methodValue !== instance && methodValue !== undefined ) {
+                                                        returnValue = methodValue && methodValue.jquery ?
+                                                                returnValue.pushStack( methodValue.get() ) :
+                                                                methodValue;
+                                                        return false;
+                                                }
+                                        } );
+                                }
+                        } else {
+
+                                // Allow multiple hashes to be passed on init
+                                if ( args.length ) {
+                                        options = $.widget.extend.apply( null, [ options ].concat( args ) );
+                                }
+
+                                this.each( function() {
+                                        var type = $( this ).attr( "type" );
+                                        var name = type !== "checkbox" && type !== "radio" ? "button" : "checkboxradio";
+                                        var instance = $.data( this, "ui-" + name );
+
+                                        if ( instance ) {
+                                                instance.option( options || {} );
+                                                if ( instance._init ) {
+                                                        instance._init();
+                                                }
+                                        } else {
+                                                if ( name === "button" ) {
+                                                        orig.call( $( this ), options );
+                                                        return;
+                                                }
+
+                                                $( this ).checkboxradio( $.extend( { icon: false }, options ) );
+                                        }
                                 } );
                         }
-                        return this.checkboxradio.apply( this, arguments );
+
+                        return returnValue;
                 };
         } )( $.fn.button );
 
@@ -7160,10 +7294,9 @@ if ( $.uiBackCompat !== false ) {
 var widgetsButton = $.ui.button;
 
 
-// jscs:disable maximumLineLength
-/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
+/* eslint-disable max-len, camelcase */
 /*!
- * jQuery UI Datepicker 1.12.1
+ * jQuery UI Datepicker 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -7181,8 +7314,7 @@ var widgetsButton = $.ui.button;
 //>>css.theme: ../../themes/base/theme.css
 
 
-
-$.extend( $.ui, { datepicker: { version: "1.12.1" } } );
+$.extend( $.ui, { datepicker: { version: "1.13.1" } } );
 
 var datepicker_instActive;
 
@@ -7210,6 +7342,7 @@ function datepicker_getZindex( elem ) {
 
         return 0;
 }
+
 /* Date picker manager.
    Use the singleton instance of this class, $.datepicker, to interact with the date picker.
    Settings for (groups of) date pickers are maintained in an instance object,
@@ -7236,18 +7369,20 @@ function Datepicker() {
                 prevText: "Prev", // Display text for previous month link
                 nextText: "Next", // Display text for next month link
                 currentText: "Today", // Display text for current month link
-                monthNames: [ "January","February","March","April","May","June",
-                        "July","August","September","October","November","December" ], // Names of months for drop-down and formatting
+                monthNames: [ "January", "February", "March", "April", "May", "June",
+                        "July", "August", "September", "October", "November", "December" ], // Names of months for drop-down and formatting
                 monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ], // For formatting
                 dayNames: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], // For formatting
                 dayNamesShort: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], // For formatting
-                dayNamesMin: [ "Su","Mo","Tu","We","Th","Fr","Sa" ], // Column headings for days starting at Sunday
+                dayNamesMin: [ "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa" ], // Column headings for days starting at Sunday
                 weekHeader: "Wk", // Column header for week of the year
                 dateFormat: "mm/dd/yy", // See format options on parseDate
                 firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...
                 isRTL: false, // True if right-to-left language, false if left-to-right
                 showMonthAfterYear: false, // True if the year select precedes month, false for month then year
-                yearSuffix: "" // Additional text to append to the year in the month headers
+                yearSuffix: "", // Additional text to append to the year in the month headers,
+                selectMonthLabel: "Select month", // Invisible label for month selector
+                selectYearLabel: "Select year" // Invisible label for year selector
         };
         this._defaults = { // Global defaults for all the date picker instances
                 showOn: "focus", // "focus" for popup on focus,
@@ -7288,6 +7423,7 @@ function Datepicker() {
                 onSelect: null, // Define a callback function when a date is selected
                 onChangeMonthYear: null, // Define a callback function when the month or year is changed
                 onClose: null, // Define a callback function when the datepicker is closed
+                onUpdateDatepicker: null, // Define a callback function when the datepicker is updated
                 numberOfMonths: 1, // Number of months to show at a time
                 showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)
                 stepMonths: 1, // Number of months to step back/forward
@@ -7306,6 +7442,7 @@ function Datepicker() {
 }
 
 $.extend( Datepicker.prototype, {
+
         /* Class name added to elements to indicate already configured with a date picker. */
         markerClassName: "hasDatepicker",
 
@@ -7327,7 +7464,7 @@ $.extend( Datepicker.prototype, {
         },
 
         /* Attach the date picker to a jQuery selection.
-         * @param  target	element - the target input field or division or span
+         * @param  target       element - the target input field or division or span
          * @param  settings  object - the new settings to use for this date picker instance (anonymous)
          */
         _attachDatepicker: function( target, settings ) {
@@ -7388,7 +7525,9 @@ $.extend( Datepicker.prototype, {
                         inst.append.remove();
                 }
                 if ( appendText ) {
-                        inst.append = $( "<span class='" + this._appendClass + "'>" + appendText + "</span>" );
+                        inst.append = $( "<span>" )
+                                .addClass( this._appendClass )
+                                .text( appendText );
                         input[ isRTL ? "before" : "after" ]( inst.append );
                 }
 
@@ -7405,12 +7544,32 @@ $.extend( Datepicker.prototype, {
                 if ( showOn === "button" || showOn === "both" ) { // pop-up date picker when button clicked
                         buttonText = this._get( inst, "buttonText" );
                         buttonImage = this._get( inst, "buttonImage" );
-                        inst.trigger = $( this._get( inst, "buttonImageOnly" ) ?
-                                $( "<img/>" ).addClass( this._triggerClass ).
-                                        attr( { src: buttonImage, alt: buttonText, title: buttonText } ) :
-                                $( "<button type='button'></button>" ).addClass( this._triggerClass ).
-                                        html( !buttonImage ? buttonText : $( "<img/>" ).attr(
-                                        { src:buttonImage, alt:buttonText, title:buttonText } ) ) );
+
+                        if ( this._get( inst, "buttonImageOnly" ) ) {
+                                inst.trigger = $( "<img>" )
+                                        .addClass( this._triggerClass )
+                                        .attr( {
+                                                src: buttonImage,
+                                                alt: buttonText,
+                                                title: buttonText
+                                        } );
+                        } else {
+                                inst.trigger = $( "<button type='button'>" )
+                                        .addClass( this._triggerClass );
+                                if ( buttonImage ) {
+                                        inst.trigger.html(
+                                                $( "<img>" )
+                                                        .attr( {
+                                                                src: buttonImage,
+                                                                alt: buttonText,
+                                                                title: buttonText
+                                                        } )
+                                        );
+                                } else {
+                                        inst.trigger.text( buttonText );
+                                }
+                        }
+
                         input[ isRTL ? "before" : "after" ]( inst.trigger );
                         inst.trigger.on( "click", function() {
                                 if ( $.datepicker._datepickerShowing && $.datepicker._lastInput === input[ 0 ] ) {
@@ -7478,12 +7637,12 @@ $.extend( Datepicker.prototype, {
 
         /* Pop-up the date picker in a "dialog" box.
          * @param  input element - ignored
-         * @param  date	string or Date - the initial date to display
+         * @param  date string or Date - the initial date to display
          * @param  onSelect  function - the function to call when a date is selected
          * @param  settings  object - update the dialog date picker instance's settings (anonymous object)
          * @param  pos int[2] - coordinates for the dialog's position within the screen or
-         *					event - with x/y coordinates or
-         *					leave empty for default (screen centre)
+         *                                      event - with x/y coordinates or
+         *                                      leave empty for default (screen centre)
          * @return the manager object
          */
         _dialogDatepicker: function( input, date, onSelect, settings, pos ) {
@@ -7529,7 +7688,7 @@ $.extend( Datepicker.prototype, {
         },
 
         /* Detach a datepicker from its control.
-         * @param  target	element - the target input field or division or span
+         * @param  target       element - the target input field or division or span
          */
         _destroyDatepicker: function( target ) {
                 var nodeName,
@@ -7556,11 +7715,12 @@ $.extend( Datepicker.prototype, {
 
                 if ( datepicker_instActive === inst ) {
                         datepicker_instActive = null;
+                        this._curInst = null;
                 }
         },
 
         /* Enable the date picker to a jQuery selection.
-         * @param  target	element - the target input field or division or span
+         * @param  target       element - the target input field or division or span
          */
         _enableDatepicker: function( target ) {
                 var nodeName, inline,
@@ -7575,7 +7735,9 @@ $.extend( Datepicker.prototype, {
                 if ( nodeName === "input" ) {
                         target.disabled = false;
                         inst.trigger.filter( "button" ).
-                                each( function() { this.disabled = false; } ).end().
+                                each( function() {
+                                        this.disabled = false;
+                                } ).end().
                                 filter( "img" ).css( { opacity: "1.0", cursor: "" } );
                 } else if ( nodeName === "div" || nodeName === "span" ) {
                         inline = $target.children( "." + this._inlineClass );
@@ -7584,11 +7746,15 @@ $.extend( Datepicker.prototype, {
                                 prop( "disabled", false );
                 }
                 this._disabledInputs = $.map( this._disabledInputs,
-                        function( value ) { return ( value === target ? null : value ); } ); // delete entry
+
+                        // Delete entry
+                        function( value ) {
+                                return ( value === target ? null : value );
+                        } );
         },
 
         /* Disable the date picker to a jQuery selection.
-         * @param  target	element - the target input field or division or span
+         * @param  target       element - the target input field or division or span
          */
         _disableDatepicker: function( target ) {
                 var nodeName, inline,
@@ -7603,7 +7769,9 @@ $.extend( Datepicker.prototype, {
                 if ( nodeName === "input" ) {
                         target.disabled = true;
                         inst.trigger.filter( "button" ).
-                                each( function() { this.disabled = true; } ).end().
+                                each( function() {
+                                        this.disabled = true;
+                                } ).end().
                                 filter( "img" ).css( { opacity: "0.5", cursor: "default" } );
                 } else if ( nodeName === "div" || nodeName === "span" ) {
                         inline = $target.children( "." + this._inlineClass );
@@ -7612,12 +7780,16 @@ $.extend( Datepicker.prototype, {
                                 prop( "disabled", true );
                 }
                 this._disabledInputs = $.map( this._disabledInputs,
-                        function( value ) { return ( value === target ? null : value ); } ); // delete entry
+
+                        // Delete entry
+                        function( value ) {
+                                return ( value === target ? null : value );
+                        } );
                 this._disabledInputs[ this._disabledInputs.length ] = target;
         },
 
         /* Is the first field in a jQuery collection disabled as a datepicker?
-         * @param  target	element - the target input field or division or span
+         * @param  target       element - the target input field or division or span
          * @return boolean - true if disabled, false if enabled
          */
         _isDisabledDatepicker: function( target ) {
@@ -7640,20 +7812,19 @@ $.extend( Datepicker.prototype, {
         _getInst: function( target ) {
                 try {
                         return $.data( target, "datepicker" );
-                }
-                catch ( err ) {
+                } catch ( err ) {
                         throw "Missing instance data for this datepicker";
                 }
         },
 
         /* Update or retrieve the settings for a date picker attached to an input field or division.
          * @param  target  element - the target input field or division or span
-         * @param  name	object - the new settings to update or
-         *				string - the name of the setting to change or retrieve,
-         *				when retrieving also "all" for all instance settings or
-         *				"defaults" for all global defaults
+         * @param  name object - the new settings to update or
+         *                              string - the name of the setting to change or retrieve,
+         *                              when retrieving also "all" for all instance settings or
+         *                              "defaults" for all global defaults
          * @param  value   any - the new value for the setting
-         *				(omit if above is an object or to retrieve a value)
+         *                              (omit if above is an object or to retrieve a value)
          */
         _optionDatepicker: function( target, name, value ) {
                 var settings, date, minDate, maxDate,
@@ -7720,7 +7891,7 @@ $.extend( Datepicker.prototype, {
 
         /* Set the dates for a jQuery selection.
          * @param  target element - the target input field or division or span
-         * @param  date	Date - the new date
+         * @param  date Date - the new date
          */
         _setDateDatepicker: function( target, date ) {
                 var inst = this._getInst( target );
@@ -7874,8 +8045,7 @@ $.extend( Datepicker.prototype, {
                                         $.datepicker._updateAlternate( inst );
                                         $.datepicker._updateDatepicker( inst );
                                 }
-                        }
-                        catch ( err ) {
+                        } catch ( err ) {
                         }
                 }
                 return true;
@@ -7884,7 +8054,7 @@ $.extend( Datepicker.prototype, {
         /* Pop-up the date picker for a given input field.
          * If false returned from beforeShow event handler do not show.
          * @param  input  element - the input field attached to the date picker or
-         *					event - if triggered by focus
+         *                                      event - if triggered by focus
          */
         _showDatepicker: function( input ) {
                 input = input.target || input;
@@ -7980,7 +8150,8 @@ $.extend( Datepicker.prototype, {
                         numMonths = this._getNumberOfMonths( inst ),
                         cols = numMonths[ 1 ],
                         width = 17,
-                        activeCell = inst.dpDiv.find( "." + this._dayOverClass + " a" );
+                        activeCell = inst.dpDiv.find( "." + this._dayOverClass + " a" ),
+                        onUpdateDatepicker = $.datepicker._get( inst, "onUpdateDatepicker" );
 
                 if ( activeCell.length > 0 ) {
                         datepicker_handleMouseover.apply( activeCell.get( 0 ) );
@@ -8006,11 +8177,15 @@ $.extend( Datepicker.prototype, {
 
                                 //assure that inst.yearshtml didn't change.
                                 if ( origyearshtml === inst.yearshtml && inst.yearshtml ) {
-                                        inst.dpDiv.find( "select.ui-datepicker-year:first" ).replaceWith( inst.yearshtml );
+                                        inst.dpDiv.find( "select.ui-datepicker-year" ).first().replaceWith( inst.yearshtml );
                                 }
                                 origyearshtml = inst.yearshtml = null;
                         }, 0 );
                 }
+
+                if ( onUpdateDatepicker ) {
+                        onUpdateDatepicker.apply( ( inst.input ? inst.input[ 0 ] : null ), [ inst ] );
+                }
         },
 
         // #6694 - don't focus the input if it's already focused
@@ -8048,7 +8223,7 @@ $.extend( Datepicker.prototype, {
                         inst = this._getInst( obj ),
                         isRTL = this._get( inst, "isRTL" );
 
-                while ( obj && ( obj.type === "hidden" || obj.nodeType !== 1 || $.expr.filters.hidden( obj ) ) ) {
+                while ( obj && ( obj.type === "hidden" || obj.nodeType !== 1 || $.expr.pseudos.hidden( obj ) ) ) {
                         obj = obj[ isRTL ? "previousSibling" : "nextSibling" ];
                 }
 
@@ -8136,9 +8311,7 @@ $.extend( Datepicker.prototype, {
                 if ( this._isDisabledDatepicker( target[ 0 ] ) ) {
                         return;
                 }
-                this._adjustInstDate( inst, offset +
-                        ( period === "M" ? this._get( inst, "showCurrentAtPos" ) : 0 ), // undo positioning
-                        period );
+                this._adjustInstDate( inst, offset, period );
                 this._updateDatepicker( inst );
         },
 
@@ -8185,7 +8358,7 @@ $.extend( Datepicker.prototype, {
                 }
 
                 inst = this._getInst( target[ 0 ] );
-                inst.selectedDay = inst.currentDay = $( "a", td ).html();
+                inst.selectedDay = inst.currentDay = parseInt( $( "a", td ).attr( "data-date" ) );
                 inst.selectedMonth = inst.currentMonth = month;
                 inst.selectedYear = inst.currentYear = year;
                 this._selectDate( id, this._formatDate( inst,
@@ -8238,7 +8411,7 @@ $.extend( Datepicker.prototype, {
                         altFormat = this._get( inst, "altFormat" ) || this._get( inst, "dateFormat" );
                         date = this._getDate( inst );
                         dateStr = this.formatDate( altFormat, date, this._getFormatConfig( inst ) );
-                        $( altField ).val( dateStr );
+                        $( document ).find( altField ).val( dateStr );
                 }
         },
 
@@ -8274,11 +8447,11 @@ $.extend( Datepicker.prototype, {
          * @param  format string - the expected format of the date
          * @param  value string - the date in the above format
          * @param  settings Object - attributes include:
-         *					shortYearCutoff  number - the cutoff year for determining the century (optional)
-         *					dayNamesShort	string[7] - abbreviated names of the days from Sunday (optional)
-         *					dayNames		string[7] - names of the days from Sunday (optional)
-         *					monthNamesShort string[12] - abbreviated names of the months (optional)
-         *					monthNames		string[12] - names of the months (optional)
+         *                                      shortYearCutoff  number - the cutoff year for determining the century (optional)
+         *                                      dayNamesShort   string[7] - abbreviated names of the days from Sunday (optional)
+         *                                      dayNames                string[7] - names of the days from Sunday (optional)
+         *                                      monthNamesShort string[12] - abbreviated names of the months (optional)
+         *                                      monthNames              string[12] - names of the months (optional)
          * @return  Date - the extracted date value or null if value is blank
          */
         parseDate: function( format, value, settings ) {
@@ -8488,10 +8661,10 @@ $.extend( Datepicker.prototype, {
          * @param  format string - the desired format of the date
          * @param  date Date - the date value to format
          * @param  settings Object - attributes include:
-         *					dayNamesShort	string[7] - abbreviated names of the days from Sunday (optional)
-         *					dayNames		string[7] - names of the days from Sunday (optional)
-         *					monthNamesShort string[12] - abbreviated names of the months (optional)
-         *					monthNames		string[12] - names of the months (optional)
+         *                                      dayNamesShort   string[7] - abbreviated names of the days from Sunday (optional)
+         *                                      dayNames                string[7] - names of the days from Sunday (optional)
+         *                                      monthNamesShort string[12] - abbreviated names of the months (optional)
+         *                                      monthNames              string[12] - names of the months (optional)
          * @return  string - the date in the above format
          */
         formatDate: function( format, date, settings ) {
@@ -8677,8 +8850,7 @@ $.extend( Datepicker.prototype, {
                                 try {
                                         return $.datepicker.parseDate( $.datepicker._get( inst, "dateFormat" ),
                                                 offset, $.datepicker._getFormatConfig( inst ) );
-                                }
-                                catch ( e ) {
+                                } catch ( e ) {
 
                                         // Ignore
                                 }
@@ -8852,32 +9024,104 @@ $.extend( Datepicker.prototype, {
                         this._daylightSavingAdjust( new Date( drawYear, drawMonth - stepMonths, 1 ) ),
                         this._getFormatConfig( inst ) ) );
 
-                prev = ( this._canAdjustMonth( inst, -1, drawYear, drawMonth ) ?
-                        "<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click'" +
-                        " title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w" ) + "'>" + prevText + "</span></a>" :
-                        ( hideIfNoPrevNext ? "" : "<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w" ) + "'>" + prevText + "</span></a>" ) );
+                if ( this._canAdjustMonth( inst, -1, drawYear, drawMonth ) ) {
+                        prev = $( "<a>" )
+                                .attr( {
+                                        "class": "ui-datepicker-prev ui-corner-all",
+                                        "data-handler": "prev",
+                                        "data-event": "click",
+                                        title: prevText
+                                } )
+                                .append(
+                                        $( "<span>" )
+                                                .addClass( "ui-icon ui-icon-circle-triangle-" +
+                                                        ( isRTL ? "e" : "w" ) )
+                                                .text( prevText )
+                                )[ 0 ].outerHTML;
+                } else if ( hideIfNoPrevNext ) {
+                        prev = "";
+                } else {
+                        prev = $( "<a>" )
+                                .attr( {
+                                        "class": "ui-datepicker-prev ui-corner-all ui-state-disabled",
+                                        title: prevText
+                                } )
+                                .append(
+                                        $( "<span>" )
+                                                .addClass( "ui-icon ui-icon-circle-triangle-" +
+                                                        ( isRTL ? "e" : "w" ) )
+                                                .text( prevText )
+                                )[ 0 ].outerHTML;
+                }
 
                 nextText = this._get( inst, "nextText" );
                 nextText = ( !navigationAsDateFormat ? nextText : this.formatDate( nextText,
                         this._daylightSavingAdjust( new Date( drawYear, drawMonth + stepMonths, 1 ) ),
                         this._getFormatConfig( inst ) ) );
 
-                next = ( this._canAdjustMonth( inst, +1, drawYear, drawMonth ) ?
-                        "<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click'" +
-                        " title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e" ) + "'>" + nextText + "</span></a>" :
-                        ( hideIfNoPrevNext ? "" : "<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e" ) + "'>" + nextText + "</span></a>" ) );
+                if ( this._canAdjustMonth( inst, +1, drawYear, drawMonth ) ) {
+                        next = $( "<a>" )
+                                .attr( {
+                                        "class": "ui-datepicker-next ui-corner-all",
+                                        "data-handler": "next",
+                                        "data-event": "click",
+                                        title: nextText
+                                } )
+                                .append(
+                                        $( "<span>" )
+                                                .addClass( "ui-icon ui-icon-circle-triangle-" +
+                                                        ( isRTL ? "w" : "e" ) )
+                                                .text( nextText )
+                                )[ 0 ].outerHTML;
+                } else if ( hideIfNoPrevNext ) {
+                        next = "";
+                } else {
+                        next = $( "<a>" )
+                                .attr( {
+                                        "class": "ui-datepicker-next ui-corner-all ui-state-disabled",
+                                        title: nextText
+                                } )
+                                .append(
+                                        $( "<span>" )
+                                                .attr( "class", "ui-icon ui-icon-circle-triangle-" +
+                                                        ( isRTL ? "w" : "e" ) )
+                                                .text( nextText )
+                                )[ 0 ].outerHTML;
+                }
 
                 currentText = this._get( inst, "currentText" );
                 gotoDate = ( this._get( inst, "gotoCurrent" ) && inst.currentDay ? currentDate : today );
                 currentText = ( !navigationAsDateFormat ? currentText :
                         this.formatDate( currentText, gotoDate, this._getFormatConfig( inst ) ) );
 
-                controls = ( !inst.inline ? "<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>" +
-                        this._get( inst, "closeText" ) + "</button>" : "" );
-
-                buttonPanel = ( showButtonPanel ) ? "<div class='ui-datepicker-buttonpane ui-widget-content'>" + ( isRTL ? controls : "" ) +
-                        ( this._isInRange( inst, gotoDate ) ? "<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'" +
-                        ">" + currentText + "</button>" : "" ) + ( isRTL ? "" : controls ) + "</div>" : "";
+                controls = "";
+                if ( !inst.inline ) {
+                        controls = $( "<button>" )
+                                .attr( {
+                                        type: "button",
+                                        "class": "ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all",
+                                        "data-handler": "hide",
+                                        "data-event": "click"
+                                } )
+                                .text( this._get( inst, "closeText" ) )[ 0 ].outerHTML;
+                }
+
+                buttonPanel = "";
+                if ( showButtonPanel ) {
+                        buttonPanel = $( "<div class='ui-datepicker-buttonpane ui-widget-content'>" )
+                                .append( isRTL ? controls : "" )
+                                .append( this._isInRange( inst, gotoDate ) ?
+                                        $( "<button>" )
+                                                .attr( {
+                                                        type: "button",
+                                                        "class": "ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all",
+                                                        "data-handler": "today",
+                                                        "data-event": "click"
+                                                } )
+                                                .text( currentText ) :
+                                        "" )
+                                .append( isRTL ? "" : controls )[ 0 ].outerHTML;
+                }
 
                 firstDay = parseInt( this._get( inst, "firstDay" ), 10 );
                 firstDay = ( isNaN( firstDay ) ? 0 : firstDay );
@@ -8965,7 +9209,9 @@ $.extend( Datepicker.prototype, {
                                                         ( printDate.getTime() === today.getTime() ? " ui-state-highlight" : "" ) +
                                                         ( printDate.getTime() === currentDate.getTime() ? " ui-state-active" : "" ) + // highlight selected day
                                                         ( otherMonth ? " ui-priority-secondary" : "" ) + // distinguish dates from other months
-                                                        "' href='#'>" + printDate.getDate() + "</a>" ) ) + "</td>"; // display selectable date
+                                                        "' href='#' aria-current='" + ( printDate.getTime() === currentDate.getTime() ? "true" : "false" ) + // mark date as selected for screen reader
+                                                        "' data-date='" + printDate.getDate() + // store date as data
+                                                        "'>" + printDate.getDate() + "</a>" ) ) + "</td>"; // display selectable date
                                                 printDate.setDate( printDate.getDate() + 1 );
                                                 printDate = this._daylightSavingAdjust( printDate );
                                         }
@@ -8995,6 +9241,8 @@ $.extend( Datepicker.prototype, {
                         changeMonth = this._get( inst, "changeMonth" ),
                         changeYear = this._get( inst, "changeYear" ),
                         showMonthAfterYear = this._get( inst, "showMonthAfterYear" ),
+                        selectMonthLabel = this._get( inst, "selectMonthLabel" ),
+                        selectYearLabel = this._get( inst, "selectYearLabel" ),
                         html = "<div class='ui-datepicker-title'>",
                         monthHtml = "";
 
@@ -9004,7 +9252,7 @@ $.extend( Datepicker.prototype, {
                 } else {
                         inMinYear = ( minDate && minDate.getFullYear() === drawYear );
                         inMaxYear = ( maxDate && maxDate.getFullYear() === drawYear );
-                        monthHtml += "<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>";
+                        monthHtml += "<select class='ui-datepicker-month' aria-label='" + selectMonthLabel + "' data-handler='selectMonth' data-event='change'>";
                         for ( month = 0; month < 12; month++ ) {
                                 if ( ( !inMinYear || month >= minDate.getMonth() ) && ( !inMaxYear || month <= maxDate.getMonth() ) ) {
                                         monthHtml += "<option value='" + month + "'" +
@@ -9039,7 +9287,7 @@ $.extend( Datepicker.prototype, {
                                 endYear = Math.max( year, determineYear( years[ 1 ] || "" ) );
                                 year = ( minDate ? Math.max( year, minDate.getFullYear() ) : year );
                                 endYear = ( maxDate ? Math.min( endYear, maxDate.getFullYear() ) : endYear );
-                                inst.yearshtml += "<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";
+                                inst.yearshtml += "<select class='ui-datepicker-year' aria-label='" + selectYearLabel + "' data-handler='selectYear' data-event='change'>";
                                 for ( ; year <= endYear; year++ ) {
                                         inst.yearshtml += "<option value='" + year + "'" +
                                                 ( year === drawYear ? " selected='selected'" : "" ) +
@@ -9251,28 +9499,29 @@ $.fn.datepicker = function( options ) {
                         apply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) );
         }
         return this.each( function() {
-                typeof options === "string" ?
-                        $.datepicker[ "_" + options + "Datepicker" ].
-                                apply( $.datepicker, [ this ].concat( otherArgs ) ) :
+                if ( typeof options === "string" ) {
+                        $.datepicker[ "_" + options + "Datepicker" ]
+                                .apply( $.datepicker, [ this ].concat( otherArgs ) );
+                } else {
                         $.datepicker._attachDatepicker( this, options );
+                }
         } );
 };
 
 $.datepicker = new Datepicker(); // singleton instance
 $.datepicker.initialized = false;
 $.datepicker.uuid = new Date().getTime();
-$.datepicker.version = "1.12.1";
+$.datepicker.version = "1.13.1";
 
 var widgetsDatepicker = $.datepicker;
 
 
 
-
 // This file is deprecated
 var ie = $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
 
 /*!
- * jQuery UI Mouse 1.12.1
+ * jQuery UI Mouse 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -9286,14 +9535,13 @@ var ie = $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
 //>>docs: http://api.jqueryui.com/mouse/
 
 
-
 var mouseHandled = false;
 $( document ).on( "mouseup", function() {
         mouseHandled = false;
 } );
 
 var widgetsMouse = $.widget( "ui.mouse", {
-        version: "1.12.1",
+        version: "1.13.1",
         options: {
                 cancel: "input, textarea, button, select, option",
                 distance: 1,
@@ -9338,7 +9586,9 @@ var widgetsMouse = $.widget( "ui.mouse", {
                 this._mouseMoved = false;
 
                 // We may have missed mouseup (out of window)
-                ( this._mouseStarted && this._mouseUp( event ) );
+                if ( this._mouseStarted ) {
+                        this._mouseUp( event );
+                }
 
                 this._mouseDownEvent = event;
 
@@ -9431,7 +9681,11 @@ var widgetsMouse = $.widget( "ui.mouse", {
                 if ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {
                         this._mouseStarted =
                                 ( this._mouseStart( this._mouseDownEvent, event ) !== false );
-                        ( this._mouseStarted ? this._mouseDrag( event ) : this._mouseUp( event ) );
+                        if ( this._mouseStarted ) {
+                                this._mouseDrag( event );
+                        } else {
+                                this._mouseUp( event );
+                        }
                 }
 
                 return !this._mouseStarted;
@@ -9478,12 +9732,13 @@ var widgetsMouse = $.widget( "ui.mouse", {
         _mouseStart: function( /* event */ ) {},
         _mouseDrag: function( /* event */ ) {},
         _mouseStop: function( /* event */ ) {},
-        _mouseCapture: function( /* event */ ) { return true; }
+        _mouseCapture: function( /* event */ ) {
+                return true;
+        }
 } );
 
 
 
-
 // $.ui.plugin is deprecated. Use $.widget() extensions instead.
 var plugin = $.ui.plugin = {
         add: function( module, option, set ) {
@@ -9528,7 +9783,7 @@ var safeBlur = $.ui.safeBlur = function( element ) {
 
 
 /*!
- * jQuery UI Draggable 1.12.1
+ * jQuery UI Draggable 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -9544,9 +9799,8 @@ var safeBlur = $.ui.safeBlur = function( element ) {
 //>>css.structure: ../../themes/base/draggable.css
 
 
-
 $.widget( "ui.draggable", $.ui.mouse, {
-        version: "1.12.1",
+        version: "1.13.1",
         widgetEventPrefix: "drag",
         options: {
                 addClasses: true,
@@ -9710,7 +9964,9 @@ $.widget( "ui.draggable", $.ui.mouse, {
                 this.originalPageY = event.pageY;
 
                 //Adjust the mouse offset relative to the helper if "cursorAt" is supplied
-                ( o.cursorAt && this._adjustOffsetFromHelper( o.cursorAt ) );
+                if ( o.cursorAt ) {
+                        this._adjustOffsetFromHelper( o.cursorAt );
+                }
 
                 //Set a containment if given in the options
                 this._setContainment();
@@ -9805,7 +10061,7 @@ $.widget( "ui.draggable", $.ui.mouse, {
 
                 if ( ( this.options.revert === "invalid" && !dropped ) ||
                                 ( this.options.revert === "valid" && dropped ) ||
-                                this.options.revert === true || ( $.isFunction( this.options.revert ) &&
+                                this.options.revert === true || ( typeof this.options.revert === "function" &&
                                 this.options.revert.call( this.element, dropped ) )
                 ) {
                         $( this.helper ).animate(
@@ -9877,7 +10133,7 @@ $.widget( "ui.draggable", $.ui.mouse, {
         _createHelper: function( event ) {
 
                 var o = this.options,
-                        helperIsFunction = $.isFunction( o.helper ),
+                        helperIsFunction = typeof o.helper === "function",
                         helper = helperIsFunction ?
                                 $( o.helper.apply( this.element[ 0 ], [ event ] ) ) :
                                 ( o.helper === "clone" ?
@@ -9916,7 +10172,7 @@ $.widget( "ui.draggable", $.ui.mouse, {
                 if ( typeof obj === "string" ) {
                         obj = obj.split( " " );
                 }
-                if ( $.isArray( obj ) ) {
+                if ( Array.isArray( obj ) ) {
                         obj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };
                 }
                 if ( "left" in obj ) {
@@ -10089,7 +10345,7 @@ $.widget( "ui.draggable", $.ui.mouse, {
                         top: (
 
                                 // The absolute mouse position
-                                pos.top	+
+                                pos.top +
 
                                 // Only for relative positioned nodes: Relative offset from element to offset parent
                                 this.offset.relative.top * mod +
@@ -10109,7 +10365,7 @@ $.widget( "ui.draggable", $.ui.mouse, {
                                 this.offset.relative.left * mod +
 
                                 // The offsetParent's offset without borders (offset + border)
-                                this.offset.parent.left * mod	-
+                                this.offset.parent.left * mod   -
                                 ( ( this.cssPosition === "fixed" ?
                                         -this.offset.scroll.left :
                                         ( scrollIsRootNode ? 0 : this.offset.scroll.left ) ) * mod )
@@ -10625,12 +10881,13 @@ $.ui.plugin.add( "draggable", "snap", {
                                         !$.contains( inst.snapElements[ i ].item.ownerDocument,
                                         inst.snapElements[ i ].item ) ) {
                                 if ( inst.snapElements[ i ].snapping ) {
-                                        ( inst.options.snap.release &&
+                                        if ( inst.options.snap.release ) {
                                                 inst.options.snap.release.call(
                                                         inst.element,
                                                         event,
                                                         $.extend( inst._uiHash(), { snapItem: inst.snapElements[ i ].item } )
-                                                ) );
+                                                );
+                                        }
                                 }
                                 inst.snapElements[ i ].snapping = false;
                                 continue;
@@ -10701,13 +10958,14 @@ $.ui.plugin.add( "draggable", "snap", {
                         }
 
                         if ( !inst.snapElements[ i ].snapping && ( ts || bs || ls || rs || first ) ) {
-                                ( inst.options.snap.snap &&
+                                if ( inst.options.snap.snap ) {
                                         inst.options.snap.snap.call(
                                                 inst.element,
                                                 event,
                                                 $.extend( inst._uiHash(), {
                                                         snapItem: inst.snapElements[ i ].item
-                                                } ) ) );
+                                                } ) );
+                                }
                         }
                         inst.snapElements[ i ].snapping = ( ts || bs || ls || rs || first );
 
@@ -10725,7 +10983,9 @@ $.ui.plugin.add( "draggable", "stack", {
                                         ( parseInt( $( b ).css( "zIndex" ), 10 ) || 0 );
                         } );
 
-                if ( !group.length ) { return; }
+                if ( !group.length ) {
+                        return;
+                }
 
                 min = parseInt( $( group[ 0 ] ).css( "zIndex" ), 10 ) || 0;
                 $( group ).each( function( i ) {
@@ -10758,7 +11018,7 @@ var widgetsDraggable = $.ui.draggable;
 
 
 /*!
- * jQuery UI Resizable 1.12.1
+ * jQuery UI Resizable 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -10776,9 +11036,8 @@ var widgetsDraggable = $.ui.draggable;
 //>>css.theme: ../../themes/base/theme.css
 
 
-
 $.widget( "ui.resizable", $.ui.mouse, {
-        version: "1.12.1",
+        version: "1.13.1",
         widgetEventPrefix: "resize",
         options: {
                 alsoResize: false,
@@ -10833,9 +11092,15 @@ $.widget( "ui.resizable", $.ui.mouse, {
                 // TODO: determine which cases actually cause this to happen
                 // if the element doesn't have the scroll set, see if it's possible to
                 // set the scroll
-                el[ scroll ] = 1;
-                has = ( el[ scroll ] > 0 );
-                el[ scroll ] = 0;
+                try {
+                        el[ scroll ] = 1;
+                        has = ( el[ scroll ] > 0 );
+                        el[ scroll ] = 0;
+                } catch ( e ) {
+
+                        // `el` might be a string, then setting `scroll` will throw
+                        // an error in strict mode; ignore it.
+                }
                 return has;
         },
 
@@ -10858,7 +11123,8 @@ $.widget( "ui.resizable", $.ui.mouse, {
                 if ( this.element[ 0 ].nodeName.match( /^(canvas|textarea|input|select|button|img)$/i ) ) {
 
                         this.element.wrap(
-                                $( "<div class='ui-wrapper' style='overflow: hidden;'></div>" ).css( {
+                                $( "<div class='ui-wrapper'></div>" ).css( {
+                                        overflow: "hidden",
                                         position: this.element.css( "position" ),
                                         width: this.element.outerWidth(),
                                         height: this.element.outerHeight(),
@@ -10929,15 +11195,14 @@ $.widget( "ui.resizable", $.ui.mouse, {
         _destroy: function() {
 
                 this._mouseDestroy();
+                this._addedHandles.remove();
 
                 var wrapper,
                         _destroy = function( exp ) {
                                 $( exp )
                                         .removeData( "resizable" )
                                         .removeData( "ui-resizable" )
-                                        .off( ".resizable" )
-                                        .find( ".ui-resizable-handle" )
-                                                .remove();
+                                        .off( ".resizable" );
                         };
 
                 // TODO: Unwrap at same DOM position
@@ -10968,6 +11233,9 @@ $.widget( "ui.resizable", $.ui.mouse, {
                         this._removeHandles();
                         this._setupHandles();
                         break;
+                case "aspectRatio":
+                        this._aspectRatio = !!value;
+                        break;
                 default:
                         break;
                 }
@@ -10989,6 +11257,7 @@ $.widget( "ui.resizable", $.ui.mouse, {
                                 } );
 
                 this._handles = $();
+                this._addedHandles = $();
                 if ( this.handles.constructor === String ) {
 
                         if ( this.handles === "all" ) {
@@ -11000,7 +11269,7 @@ $.widget( "ui.resizable", $.ui.mouse, {
 
                         for ( i = 0; i < n.length; i++ ) {
 
-                                handle = $.trim( n[ i ] );
+                                handle = String.prototype.trim.call( n[ i ] );
                                 hname = "ui-resizable-" + handle;
                                 axis = $( "<div>" );
                                 this._addClass( axis, "ui-resizable-handle " + hname );
@@ -11008,7 +11277,10 @@ $.widget( "ui.resizable", $.ui.mouse, {
                                 axis.css( { zIndex: o.zIndex } );
 
                                 this.handles[ handle ] = ".ui-resizable-" + handle;
-                                this.element.append( axis );
+                                if ( !this.element.children( this.handles[ handle ] ).length ) {
+                                        this.element.append( axis );
+                                        this._addedHandles = this._addedHandles.add( axis );
+                                }
                         }
 
                 }
@@ -11074,7 +11346,7 @@ $.widget( "ui.resizable", $.ui.mouse, {
         },
 
         _removeHandles: function() {
-                this._handles.remove();
+                this._addedHandles.remove();
         },
 
         _mouseCapture: function( event ) {
@@ -11454,7 +11726,7 @@ $.widget( "ui.resizable", $.ui.mouse, {
 
                 if ( this._helper ) {
 
-                        this.helper = this.helper || $( "<div style='overflow:hidden;'></div>" );
+                        this.helper = this.helper || $( "<div></div>" ).css( { overflow: "hidden" } );
 
                         this._addClass( this.helper, this._helper );
                         this.helper.css( {
@@ -11511,7 +11783,9 @@ $.widget( "ui.resizable", $.ui.mouse, {
 
         _propagate: function( n, event ) {
                 $.ui.plugin.call( this, n, [ event, this.ui() ] );
-                ( n !== "resize" && this._trigger( n, event, this.ui() ) );
+                if ( n !== "resize" ) {
+                        this._trigger( n, event, this.ui() );
+                }
         },
 
         plugins: {},
@@ -11632,8 +11906,8 @@ $.ui.plugin.add( "resizable", "containment", {
                         co = that.containerOffset;
                         ch = that.containerSize.height;
                         cw = that.containerSize.width;
-                        width = ( that._hasScroll ( ce, "left" ) ? ce.scrollWidth : cw );
-                        height = ( that._hasScroll ( ce ) ? ce.scrollHeight : ch ) ;
+                        width = ( that._hasScroll( ce, "left" ) ? ce.scrollWidth : cw );
+                        height = ( that._hasScroll( ce ) ? ce.scrollHeight : ch );
 
                         that.parentData = {
                                 element: ce,
@@ -11942,7 +12216,7 @@ var widgetsResizable = $.ui.resizable;
 
 
 /*!
- * jQuery UI Dialog 1.12.1
+ * jQuery UI Dialog 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -11960,9 +12234,8 @@ var widgetsResizable = $.ui.resizable;
 //>>css.theme: ../../themes/base/theme.css
 
 
-
 $.widget( "ui.dialog", {
-        version: "1.12.1",
+        version: "1.13.1",
         options: {
                 appendTo: "body",
                 autoOpen: true,
@@ -12207,7 +12480,7 @@ $.widget( "ui.dialog", {
                         that._trigger( "focus" );
                 } );
 
-                // Track the dialog immediately upon openening in case a focus event
+                // Track the dialog immediately upon opening in case a focus event
                 // somehow occurs outside of the dialog before an element inside the
                 // dialog is focused (#10152)
                 this._makeFocusTarget();
@@ -12243,22 +12516,23 @@ $.widget( "ui.dialog", {
                 hasFocus.eq( 0 ).trigger( "focus" );
         },
 
-        _keepFocus: function( event ) {
-                function checkFocus() {
-                        var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),
-                                isActive = this.uiDialog[ 0 ] === activeElement ||
-                                        $.contains( this.uiDialog[ 0 ], activeElement );
-                        if ( !isActive ) {
-                                this._focusTabbable();
-                        }
+        _restoreTabbableFocus: function() {
+                var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),
+                        isActive = this.uiDialog[ 0 ] === activeElement ||
+                                $.contains( this.uiDialog[ 0 ], activeElement );
+                if ( !isActive ) {
+                        this._focusTabbable();
                 }
+        },
+
+        _keepFocus: function( event ) {
                 event.preventDefault();
-                checkFocus.call( this );
+                this._restoreTabbableFocus();
 
                 // support: IE
                 // IE <= 8 doesn't prevent moving focus even with event.preventDefault()
                 // so we check again later
-                this._delay( checkFocus );
+                this._delay( this._restoreTabbableFocus );
         },
 
         _createWrapper: function() {
@@ -12287,8 +12561,8 @@ $.widget( "ui.dialog", {
                                         return;
                                 }
                                 var tabbables = this.uiDialog.find( ":tabbable" ),
-                                        first = tabbables.filter( ":first" ),
-                                        last = tabbables.filter( ":last" );
+                                        first = tabbables.first(),
+                                        last = tabbables.last();
 
                                 if ( ( event.target === last[ 0 ] || event.target === this.uiDialog[ 0 ] ) &&
                                                 !event.shiftKey ) {
@@ -12399,14 +12673,14 @@ $.widget( "ui.dialog", {
                 this.uiDialogButtonPane.remove();
                 this.uiButtonSet.empty();
 
-                if ( $.isEmptyObject( buttons ) || ( $.isArray( buttons ) && !buttons.length ) ) {
+                if ( $.isEmptyObject( buttons ) || ( Array.isArray( buttons ) && !buttons.length ) ) {
                         this._removeClass( this.uiDialog, "ui-dialog-buttons" );
                         return;
                 }
 
                 $.each( buttons, function( name, props ) {
                         var click, buttonOptions;
-                        props = $.isFunction( props ) ?
+                        props = typeof props === "function" ?
                                 { click: props, text: name } :
                                 props;
 
@@ -12771,6 +13045,8 @@ $.widget( "ui.dialog", {
                         return;
                 }
 
+                var jqMinor = $.fn.jquery.substring( 0, 4 );
+
                 // We use a delay in case the overlay is created from an
                 // event that we're going to be cancelling (#2804)
                 var isOpening = true;
@@ -12781,20 +13057,28 @@ $.widget( "ui.dialog", {
                 if ( !this.document.data( "ui-dialog-overlays" ) ) {
 
                         // Prevent use of anchors and inputs
-                        // Using _on() for an event handler shared across many instances is
-                        // safe because the dialogs stack and must be closed in reverse order
-                        this._on( this.document, {
-                                focusin: function( event ) {
-                                        if ( isOpening ) {
-                                                return;
-                                        }
+                        // This doesn't use `_on()` because it is a shared event handler
+                        // across all open modal dialogs.
+                        this.document.on( "focusin.ui-dialog", function( event ) {
+                                if ( isOpening ) {
+                                        return;
+                                }
 
-                                        if ( !this._allowInteraction( event ) ) {
-                                                event.preventDefault();
-                                                this._trackingInstances()[ 0 ]._focusTabbable();
+                                var instance = this._trackingInstances()[ 0 ];
+                                if ( !instance._allowInteraction( event ) ) {
+                                        event.preventDefault();
+                                        instance._focusTabbable();
+
+                                        // Support: jQuery >=3.4 <3.6 only
+                                        // Focus re-triggering in jQuery 3.4/3.5 makes the original element
+                                        // have its focus event propagated last, breaking the re-targeting.
+                                        // Trigger focus in a delay in addition if needed to avoid the issue
+                                        // See https://github.com/jquery/jquery/issues/4382
+                                        if ( jqMinor === "3.4." || jqMinor === "3.5." ) {
+                                                instance._delay( instance._restoreTabbableFocus );
                                         }
                                 }
-                        } );
+                        }.bind( this ) );
                 }
 
                 this.overlay = $( "<div>" )
@@ -12817,7 +13101,7 @@ $.widget( "ui.dialog", {
                         var overlays = this.document.data( "ui-dialog-overlays" ) - 1;
 
                         if ( !overlays ) {
-                                this._off( this.document, "focusin" );
+                                this.document.off( "focusin.ui-dialog" );
                                 this.document.removeData( "ui-dialog-overlays" );
                         } else {
                                 this.document.data( "ui-dialog-overlays", overlays );
@@ -12857,7 +13141,7 @@ var widgetsDialog = $.ui.dialog;
 
 
 /*!
- * jQuery UI Droppable 1.12.1
+ * jQuery UI Droppable 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -12872,9 +13156,8 @@ var widgetsDialog = $.ui.dialog;
 //>>demos: http://jqueryui.com/droppable/
 
 
-
 $.widget( "ui.droppable", {
-        version: "1.12.1",
+        version: "1.13.1",
         widgetEventPrefix: "drop",
         options: {
                 accept: "*",
@@ -12899,7 +13182,7 @@ $.widget( "ui.droppable", {
                 this.isover = false;
                 this.isout = true;
 
-                this.accept = $.isFunction( accept ) ? accept : function( d ) {
+                this.accept = typeof accept === "function" ? accept : function( d ) {
                         return d.is( accept );
                 };
 
@@ -12922,7 +13205,9 @@ $.widget( "ui.droppable", {
 
                 this._addToManager( o.scope );
 
-                o.addClasses && this._addClass( "ui-droppable" );
+                if ( o.addClasses ) {
+                        this._addClass( "ui-droppable" );
+                }
 
         },
 
@@ -12951,7 +13236,7 @@ $.widget( "ui.droppable", {
         _setOption: function( key, value ) {
 
                 if ( key === "accept" ) {
-                        this.accept = $.isFunction( value ) ? value : function( d ) {
+                        this.accept = typeof value === "function" ? value : function( d ) {
                                 return d.is( value );
                         };
                 } else if ( key === "scope" ) {
@@ -13041,14 +13326,15 @@ $.widget( "ui.droppable", {
                                         inst.accept.call(
                                                 inst.element[ 0 ], ( draggable.currentItem || draggable.element )
                                         ) &&
-                                        intersect(
+                                        $.ui.intersect(
                                                 draggable,
                                                 $.extend( inst, { offset: inst.element.offset() } ),
                                                 inst.options.tolerance, event
                                         )
                                 ) {
                                         childrenIntersection = true;
-                                        return false; }
+                                        return false;
+                                }
                         } );
                 if ( childrenIntersection ) {
                         return false;
@@ -13077,7 +13363,7 @@ $.widget( "ui.droppable", {
         },
 
         // Extension points just to make backcompat sane and avoid duplicating logic
-        // TODO: Remove in 1.13 along with call to it below
+        // TODO: Remove in 1.14 along with call to it below
         _addHoverClass: function() {
                 this._addClass( "ui-droppable-hover" );
         },
@@ -13095,7 +13381,7 @@ $.widget( "ui.droppable", {
         }
 } );
 
-var intersect = $.ui.intersect = ( function() {
+$.ui.intersect = ( function() {
         function isOverAxis( x, reference, size ) {
                 return ( x >= reference ) && ( x < ( reference + size ) );
         }
@@ -13203,7 +13489,7 @@ $.ui.ddmanager = {
                                 return;
                         }
                         if ( !this.options.disabled && this.visible &&
-                                        intersect( draggable, this, this.options.tolerance, event ) ) {
+                                        $.ui.intersect( draggable, this, this.options.tolerance, event ) ) {
                                 dropped = this._drop.call( this, event ) || dropped;
                         }
 
@@ -13244,7 +13530,7 @@ $.ui.ddmanager = {
                         }
 
                         var parentInstance, scope, parent,
-                                intersects = intersect( draggable, this, this.options.tolerance, event ),
+                                intersects = $.ui.intersect( draggable, this, this.options.tolerance, event ),
                                 c = !intersects && this.isover ?
                                         "isout" :
                                         ( intersects && !this.isover ? "isover" : null );
@@ -13338,7 +13624,7 @@ var widgetsDroppable = $.ui.droppable;
 
 
 /*!
- * jQuery UI Progressbar 1.12.1
+ * jQuery UI Progressbar 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -13348,9 +13634,9 @@ var widgetsDroppable = $.ui.droppable;
 
 //>>label: Progressbar
 //>>group: Widgets
-// jscs:disable maximumLineLength
+/* eslint-disable max-len */
 //>>description: Displays a status indicator for loading state, standard percentage, and other progress indicators.
-// jscs:enable maximumLineLength
+/* eslint-enable max-len */
 //>>docs: http://api.jqueryui.com/progressbar/
 //>>demos: http://jqueryui.com/progressbar/
 //>>css.structure: ../../themes/base/core.css
@@ -13358,9 +13644,8 @@ var widgetsDroppable = $.ui.droppable;
 //>>css.theme: ../../themes/base/theme.css
 
 
-
 var widgetsProgressbar = $.widget( "ui.progressbar", {
-        version: "1.12.1",
+        version: "1.13.1",
         options: {
                 classes: {
                         "ui-progressbar": "ui-corner-all",
@@ -13502,7 +13787,7 @@ var widgetsProgressbar = $.widget( "ui.progressbar", {
 
 
 /*!
- * jQuery UI Selectable 1.12.1
+ * jQuery UI Selectable 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -13518,9 +13803,8 @@ var widgetsProgressbar = $.widget( "ui.progressbar", {
 //>>css.structure: ../../themes/base/selectable.css
 
 
-
 var widgetsSelectable = $.widget( "ui.selectable", $.ui.mouse, {
-        version: "1.12.1",
+        version: "1.13.1",
         options: {
                 appendTo: "body",
                 autoRefresh: true,
@@ -13671,8 +13955,12 @@ var widgetsSelectable = $.widget( "ui.selectable", $.ui.mouse, {
                         x2 = event.pageX,
                         y2 = event.pageY;
 
-                if ( x1 > x2 ) { tmp = x2; x2 = x1; x1 = tmp; }
-                if ( y1 > y2 ) { tmp = y2; y2 = y1; y1 = tmp; }
+                if ( x1 > x2 ) {
+                        tmp = x2; x2 = x1; x1 = tmp;
+                }
+                if ( y1 > y2 ) {
+                        tmp = y2; y2 = y1; y1 = tmp;
+                }
                 this.helper.css( { left: x1, top: y1, width: x2 - x1, height: y2 - y1 } );
 
                 this.selectees.each( function() {
@@ -13797,7 +14085,7 @@ var widgetsSelectable = $.widget( "ui.selectable", $.ui.mouse, {
 
 
 /*!
- * jQuery UI Selectmenu 1.12.1
+ * jQuery UI Selectmenu 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -13807,9 +14095,9 @@ var widgetsSelectable = $.widget( "ui.selectable", $.ui.mouse, {
 
 //>>label: Selectmenu
 //>>group: Widgets
-// jscs:disable maximumLineLength
+/* eslint-disable max-len */
 //>>description: Duplicates and extends the functionality of a native HTML select element, allowing it to be customizable in behavior and appearance far beyond the limitations of a native select.
-// jscs:enable maximumLineLength
+/* eslint-enable max-len */
 //>>docs: http://api.jqueryui.com/selectmenu/
 //>>demos: http://jqueryui.com/selectmenu/
 //>>css.structure: ../../themes/base/core.css
@@ -13817,9 +14105,8 @@ var widgetsSelectable = $.widget( "ui.selectable", $.ui.mouse, {
 //>>css.theme: ../../themes/base/theme.css
 
 
-
 var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
-        version: "1.12.1",
+        version: "1.13.1",
         defaultElement: "<select>",
         options: {
                 appendTo: null,
@@ -13874,7 +14161,7 @@ var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
                 this.labels = this.element.labels().attr( "for", this.ids.button );
                 this._on( this.labels, {
                         click: function( event ) {
-                                this.button.focus();
+                                this.button.trigger( "focus" );
                                 event.preventDefault();
                         }
                 } );
@@ -14202,7 +14489,7 @@ var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
                         }
 
                         if ( !$( event.target ).closest( ".ui-selectmenu-menu, #" +
-                                        $.ui.escapeSelector( this.ids.button ) ).length ) {
+                                $.escapeSelector( this.ids.button ) ).length ) {
                                 this.close( event );
                         }
                 }
@@ -14433,6 +14720,10 @@ var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
                 var that = this,
                         data = [];
                 options.each( function( index, item ) {
+                        if ( item.hidden ) {
+                                return;
+                        }
+
                         data.push( that._parseOption( $( item ), index ) );
                 } );
                 this.items = data;
@@ -14463,7 +14754,7 @@ var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
 
 
 /*!
- * jQuery UI Slider 1.12.1
+ * jQuery UI Slider 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -14481,9 +14772,8 @@ var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
 //>>css.theme: ../../themes/base/theme.css
 
 
-
 var widgetsSlider = $.widget( "ui.slider", $.ui.mouse, {
-        version: "1.12.1",
+        version: "1.13.1",
         widgetEventPrefix: "slide",
 
         options: {
@@ -14580,7 +14870,7 @@ var widgetsSlider = $.widget( "ui.slider", $.ui.mouse, {
                                         options.values = [ this._valueMin(), this._valueMin() ];
                                 } else if ( options.values.length && options.values.length !== 2 ) {
                                         options.values = [ options.values[ 0 ], options.values[ 0 ] ];
-                                } else if ( $.isArray( options.values ) ) {
+                                } else if ( Array.isArray( options.values ) ) {
                                         options.values = options.values.slice( 0 );
                                 }
                         }
@@ -14843,7 +15133,7 @@ var widgetsSlider = $.widget( "ui.slider", $.ui.mouse, {
                 }
 
                 if ( arguments.length ) {
-                        if ( $.isArray( arguments[ 0 ] ) ) {
+                        if ( Array.isArray( arguments[ 0 ] ) ) {
                                 vals = this.options.values;
                                 newValues = arguments[ 0 ];
                                 for ( i = 0; i < vals.length; i += 1 ) {
@@ -14877,7 +15167,7 @@ var widgetsSlider = $.widget( "ui.slider", $.ui.mouse, {
                         }
                 }
 
-                if ( $.isArray( this.options.values ) ) {
+                if ( Array.isArray( this.options.values ) ) {
                         valsLength = this.options.values.length;
                 }
 
@@ -15199,7 +15489,7 @@ var widgetsSlider = $.widget( "ui.slider", $.ui.mouse, {
 
 
 /*!
- * jQuery UI Sortable 1.12.1
+ * jQuery UI Sortable 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -15215,9 +15505,8 @@ var widgetsSlider = $.widget( "ui.slider", $.ui.mouse, {
 //>>css.structure: ../../themes/base/sortable.css
 
 
-
 var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
-        version: "1.12.1",
+        version: "1.13.1",
         widgetEventPrefix: "sort",
         ready: false,
         options: {
@@ -15377,6 +15666,11 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
                 // mouseCapture
                 this.refreshPositions();
 
+                //Prepare the dragged items parent
+                this.appendTo = $( o.appendTo !== "parent" ?
+                                o.appendTo :
+                                this.currentItem.parent() );
+
                 //Create and append the visible helper
                 this.helper = this._createHelper( event );
 
@@ -15391,9 +15685,6 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
                 //Cache the margins of the original element
                 this._cacheMargins();
 
-                //Get the next scrolling parent
-                this.scrollParent = this.helper.scrollParent();
-
                 //The element's absolute position on the page minus margins
                 this.offset = this.currentItem.offset();
                 this.offset = {
@@ -15406,25 +15697,22 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
                                 left: event.pageX - this.offset.left,
                                 top: event.pageY - this.offset.top
                         },
-                        parent: this._getParentOffset(),
 
                         // This is a relative to absolute position minus the actual position calculation -
                         // only used for relative positioned helper
                         relative: this._getRelativeOffset()
                 } );
 
-                // Only after we got the offset, we can change the helper's position to absolute
+                // After we get the helper offset, but before we get the parent offset we can
+                // change the helper's position to absolute
                 // TODO: Still need to figure out a way to make relative sorting possible
                 this.helper.css( "position", "absolute" );
                 this.cssPosition = this.helper.css( "position" );
 
-                //Generate the original position
-                this.originalPosition = this._generatePosition( event );
-                this.originalPageX = event.pageX;
-                this.originalPageY = event.pageY;
-
                 //Adjust the mouse offset relative to the helper if "cursorAt" is supplied
-                ( o.cursorAt && this._adjustOffsetFromHelper( o.cursorAt ) );
+                if ( o.cursorAt ) {
+                        this._adjustOffsetFromHelper( o.cursorAt );
+                }
 
                 //Cache the former DOM position
                 this.domPosition = {
@@ -15441,6 +15729,13 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
                 //Create the placeholder
                 this._createPlaceholder();
 
+                //Get the next scrolling parent
+                this.scrollParent = this.placeholder.scrollParent();
+
+                $.extend( this.offset, {
+                        parent: this._getParentOffset()
+                } );
+
                 //Set a containment if given in the options
                 if ( o.containment ) {
                         this._setContainment();
@@ -15457,13 +15752,9 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
                                 $( "<style>*{ cursor: " + o.cursor + " !important; }</style>" ).appendTo( body );
                 }
 
-                if ( o.opacity ) { // opacity option
-                        if ( this.helper.css( "opacity" ) ) {
-                                this._storedOpacity = this.helper.css( "opacity" );
-                        }
-                        this.helper.css( "opacity", o.opacity );
-                }
-
+                // We need to make sure to grab the zIndex before setting the
+                // opacity, because setting the opacity to anything lower than 1
+                // causes the zIndex to change from "auto" to 0.
                 if ( o.zIndex ) { // zIndex option
                         if ( this.helper.css( "zIndex" ) ) {
                                 this._storedZIndex = this.helper.css( "zIndex" );
@@ -15471,6 +15762,13 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
                         this.helper.css( "zIndex", o.zIndex );
                 }
 
+                if ( o.opacity ) { // opacity option
+                        if ( this.helper.css( "opacity" ) ) {
+                                this._storedOpacity = this.helper.css( "opacity" );
+                        }
+                        this.helper.css( "opacity", o.opacity );
+                }
+
                 //Prepare scrolling
                 if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
                                 this.scrollParent[ 0 ].tagName !== "HTML" ) {
@@ -15505,77 +15803,82 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
 
                 this._addClass( this.helper, "ui-sortable-helper" );
 
-                // Execute the drag once - this causes the helper not to be visiblebefore getting its
-                // correct position
-                this._mouseDrag( event );
-                return true;
+                //Move the helper, if needed
+                if ( !this.helper.parent().is( this.appendTo ) ) {
+                        this.helper.detach().appendTo( this.appendTo );
 
-        },
+                        //Update position
+                        this.offset.parent = this._getParentOffset();
+                }
 
-        _mouseDrag: function( event ) {
-                var i, item, itemElement, intersection,
-                        o = this.options,
-                        scrolled = false;
+                //Generate the original position
+                this.position = this.originalPosition = this._generatePosition( event );
+                this.originalPageX = event.pageX;
+                this.originalPageY = event.pageY;
+                this.lastPositionAbs = this.positionAbs = this._convertPositionTo( "absolute" );
 
-                //Compute the helpers position
-                this.position = this._generatePosition( event );
-                this.positionAbs = this._convertPositionTo( "absolute" );
+                this._mouseDrag( event );
 
-                if ( !this.lastPositionAbs ) {
-                        this.lastPositionAbs = this.positionAbs;
-                }
+                return true;
 
-                //Do scrolling
-                if ( this.options.scroll ) {
-                        if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
-                                        this.scrollParent[ 0 ].tagName !== "HTML" ) {
+        },
 
-                                if ( ( this.overflowOffset.top + this.scrollParent[ 0 ].offsetHeight ) -
-                                                event.pageY < o.scrollSensitivity ) {
-                                        this.scrollParent[ 0 ].scrollTop =
-                                                scrolled = this.scrollParent[ 0 ].scrollTop + o.scrollSpeed;
-                                } else if ( event.pageY - this.overflowOffset.top < o.scrollSensitivity ) {
-                                        this.scrollParent[ 0 ].scrollTop =
-                                                scrolled = this.scrollParent[ 0 ].scrollTop - o.scrollSpeed;
-                                }
+        _scroll: function( event ) {
+                var o = this.options,
+                        scrolled = false;
 
-                                if ( ( this.overflowOffset.left + this.scrollParent[ 0 ].offsetWidth ) -
-                                                event.pageX < o.scrollSensitivity ) {
-                                        this.scrollParent[ 0 ].scrollLeft = scrolled =
-                                                this.scrollParent[ 0 ].scrollLeft + o.scrollSpeed;
-                                } else if ( event.pageX - this.overflowOffset.left < o.scrollSensitivity ) {
-                                        this.scrollParent[ 0 ].scrollLeft = scrolled =
-                                                this.scrollParent[ 0 ].scrollLeft - o.scrollSpeed;
-                                }
+                if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
+                                this.scrollParent[ 0 ].tagName !== "HTML" ) {
 
-                        } else {
+                        if ( ( this.overflowOffset.top + this.scrollParent[ 0 ].offsetHeight ) -
+                                        event.pageY < o.scrollSensitivity ) {
+                                this.scrollParent[ 0 ].scrollTop =
+                                        scrolled = this.scrollParent[ 0 ].scrollTop + o.scrollSpeed;
+                        } else if ( event.pageY - this.overflowOffset.top < o.scrollSensitivity ) {
+                                this.scrollParent[ 0 ].scrollTop =
+                                        scrolled = this.scrollParent[ 0 ].scrollTop - o.scrollSpeed;
+                        }
 
-                                if ( event.pageY - this.document.scrollTop() < o.scrollSensitivity ) {
-                                        scrolled = this.document.scrollTop( this.document.scrollTop() - o.scrollSpeed );
-                                } else if ( this.window.height() - ( event.pageY - this.document.scrollTop() ) <
-                                                o.scrollSensitivity ) {
-                                        scrolled = this.document.scrollTop( this.document.scrollTop() + o.scrollSpeed );
-                                }
+                        if ( ( this.overflowOffset.left + this.scrollParent[ 0 ].offsetWidth ) -
+                                        event.pageX < o.scrollSensitivity ) {
+                                this.scrollParent[ 0 ].scrollLeft = scrolled =
+                                        this.scrollParent[ 0 ].scrollLeft + o.scrollSpeed;
+                        } else if ( event.pageX - this.overflowOffset.left < o.scrollSensitivity ) {
+                                this.scrollParent[ 0 ].scrollLeft = scrolled =
+                                        this.scrollParent[ 0 ].scrollLeft - o.scrollSpeed;
+                        }
 
-                                if ( event.pageX - this.document.scrollLeft() < o.scrollSensitivity ) {
-                                        scrolled = this.document.scrollLeft(
-                                                this.document.scrollLeft() - o.scrollSpeed
-                                        );
-                                } else if ( this.window.width() - ( event.pageX - this.document.scrollLeft() ) <
-                                                o.scrollSensitivity ) {
-                                        scrolled = this.document.scrollLeft(
-                                                this.document.scrollLeft() + o.scrollSpeed
-                                        );
-                                }
+                } else {
 
+                        if ( event.pageY - this.document.scrollTop() < o.scrollSensitivity ) {
+                                scrolled = this.document.scrollTop( this.document.scrollTop() - o.scrollSpeed );
+                        } else if ( this.window.height() - ( event.pageY - this.document.scrollTop() ) <
+                                        o.scrollSensitivity ) {
+                                scrolled = this.document.scrollTop( this.document.scrollTop() + o.scrollSpeed );
                         }
 
-                        if ( scrolled !== false && $.ui.ddmanager && !o.dropBehaviour ) {
-                                $.ui.ddmanager.prepareOffsets( this, event );
+                        if ( event.pageX - this.document.scrollLeft() < o.scrollSensitivity ) {
+                                scrolled = this.document.scrollLeft(
+                                        this.document.scrollLeft() - o.scrollSpeed
+                                );
+                        } else if ( this.window.width() - ( event.pageX - this.document.scrollLeft() ) <
+                                        o.scrollSensitivity ) {
+                                scrolled = this.document.scrollLeft(
+                                        this.document.scrollLeft() + o.scrollSpeed
+                                );
                         }
+
                 }
 
-                //Regenerate the absolute position used for position checks
+                return scrolled;
+        },
+
+        _mouseDrag: function( event ) {
+                var i, item, itemElement, intersection,
+                        o = this.options;
+
+                //Compute the helpers position
+                this.position = this._generatePosition( event );
                 this.positionAbs = this._convertPositionTo( "absolute" );
 
                 //Set the helper position
@@ -15586,6 +15889,24 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
                         this.helper[ 0 ].style.top = this.position.top + "px";
                 }
 
+                //Do scrolling
+                if ( o.scroll ) {
+                        if ( this._scroll( event ) !== false ) {
+
+                                //Update item positions used in position checks
+                                this._refreshItemPositions( true );
+
+                                if ( $.ui.ddmanager && !o.dropBehaviour ) {
+                                        $.ui.ddmanager.prepareOffsets( this, event );
+                                }
+                        }
+                }
+
+                this.dragDirection = {
+                        vertical: this._getDragVerticalDirection(),
+                        horizontal: this._getDragHorizontalDirection()
+                };
+
                 //Rearrange
                 for ( i = this.items.length - 1; i >= 0; i-- ) {
 
@@ -15612,7 +15933,8 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
                         // no useless actions that have been done before
                         // no action if the item moved is the parent of the item checked
                         if ( itemElement !== this.currentItem[ 0 ] &&
-                                this.placeholder[ intersection === 1 ? "next" : "prev" ]()[ 0 ] !== itemElement &&
+                                this.placeholder[ intersection === 1 ?
+                                "next" : "prev" ]()[ 0 ] !== itemElement &&
                                 !$.contains( this.placeholder[ 0 ], itemElement ) &&
                                 ( this.options.type === "semi-dynamic" ?
                                         !$.contains( this.element[ 0 ], itemElement ) :
@@ -15622,7 +15944,8 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
 
                                 this.direction = intersection === 1 ? "down" : "up";
 
-                                if ( this.options.tolerance === "pointer" || this._intersectsWithSides( item ) ) {
+                                if ( this.options.tolerance === "pointer" ||
+                                                this._intersectsWithSides( item ) ) {
                                         this._rearrange( event, item );
                                 } else {
                                         break;
@@ -15838,12 +16161,12 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
                         return false;
                 }
 
-                verticalDirection = this._getDragVerticalDirection();
-                horizontalDirection = this._getDragHorizontalDirection();
+                verticalDirection = this.dragDirection.vertical;
+                horizontalDirection = this.dragDirection.horizontal;
 
                 return this.floating ?
-                        ( ( horizontalDirection === "right" || verticalDirection === "down" ) ? 2 : 1 )
-                        : ( verticalDirection && ( verticalDirection === "down" ? 2 : 1 ) );
+                        ( ( horizontalDirection === "right" || verticalDirection === "down" ) ? 2 : 1 ) :
+                        ( verticalDirection && ( verticalDirection === "down" ? 2 : 1 ) );
 
         },
 
@@ -15853,8 +16176,8 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
                                 this.offset.click.top, item.top + ( item.height / 2 ), item.height ),
                         isOverRightHalf = this._isOverAxis( this.positionAbs.left +
                                 this.offset.click.left, item.left + ( item.width / 2 ), item.width ),
-                        verticalDirection = this._getDragVerticalDirection(),
-                        horizontalDirection = this._getDragHorizontalDirection();
+                        verticalDirection = this.dragDirection.vertical,
+                        horizontalDirection = this.dragDirection.horizontal;
 
                 if ( this.floating && horizontalDirection ) {
                         return ( ( horizontalDirection === "right" && isOverRightHalf ) ||
@@ -15903,7 +16226,7 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
                                 for ( j = cur.length - 1; j >= 0; j-- ) {
                                         inst = $.data( cur[ j ], this.widgetFullName );
                                         if ( inst && inst !== this && !inst.options.disabled ) {
-                                                queries.push( [ $.isFunction( inst.options.items ) ?
+                                                queries.push( [ typeof inst.options.items === "function" ?
                                                         inst.options.items.call( inst.element ) :
                                                         $( inst.options.items, inst.element )
                                                                 .not( ".ui-sortable-helper" )
@@ -15913,7 +16236,7 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
                         }
                 }
 
-                queries.push( [ $.isFunction( this.options.items ) ?
+                queries.push( [ typeof this.options.items === "function" ?
                         this.options.items
                                 .call( this.element, null, { options: this.options, item: this.currentItem } ) :
                         $( this.options.items, this.element )
@@ -15953,7 +16276,7 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
 
                 var i, j, cur, inst, targetData, _queries, item, queriesLength,
                         items = this.items,
-                        queries = [ [ $.isFunction( this.options.items ) ?
+                        queries = [ [ typeof this.options.items === "function" ?
                                 this.options.items.call( this.element[ 0 ], event, { item: this.currentItem } ) :
                                 $( this.options.items, this.element ), this ] ],
                         connectWith = this._connectWith();
@@ -15965,7 +16288,7 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
                                 for ( j = cur.length - 1; j >= 0; j-- ) {
                                         inst = $.data( cur[ j ], this.widgetFullName );
                                         if ( inst && inst !== this && !inst.options.disabled ) {
-                                                queries.push( [ $.isFunction( inst.options.items ) ?
+                                                queries.push( [ typeof inst.options.items === "function" ?
                                                         inst.options.items
                                                                 .call( inst.element[ 0 ], event, { item: this.currentItem } ) :
                                                         $( inst.options.items, inst.element ), inst ] );
@@ -15996,26 +16319,14 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
 
         },
 
-        refreshPositions: function( fast ) {
-
-                // Determine whether items are being displayed horizontally
-                this.floating = this.items.length ?
-                        this.options.axis === "x" || this._isFloating( this.items[ 0 ].item ) :
-                        false;
-
-                //This has to be redone because due to the item being moved out/into the offsetParent,
-                // the offsetParent's position will change
-                if ( this.offsetParent && this.helper ) {
-                        this.offset.parent = this._getParentOffset();
-                }
-
+        _refreshItemPositions: function( fast ) {
                 var i, item, t, p;
 
                 for ( i = this.items.length - 1; i >= 0; i-- ) {
                         item = this.items[ i ];
 
                         //We ignore calculating positions of all connected containers when we're not over them
-                        if ( item.instance !== this.currentContainer && this.currentContainer &&
+                        if ( this.currentContainer && item.instance !== this.currentContainer &&
                                         item.item[ 0 ] !== this.currentItem[ 0 ] ) {
                                 continue;
                         }
@@ -16033,6 +16344,24 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
                         item.left = p.left;
                         item.top = p.top;
                 }
+        },
+
+        refreshPositions: function( fast ) {
+
+                // Determine whether items are being displayed horizontally
+                this.floating = this.items.length ?
+                        this.options.axis === "x" || this._isFloating( this.items[ 0 ].item ) :
+                        false;
+
+                // This has to be redone because due to the item being moved out/into the offsetParent,
+                // the offsetParent's position will change
+                if ( this.offsetParent && this.helper ) {
+                        this.offset.parent = this._getParentOffset();
+                }
+
+                this._refreshItemPositions( fast );
+
+                var i, p;
 
                 if ( this.options.custom && this.options.custom.refreshContainers ) {
                         this.options.custom.refreshContainers.call( this );
@@ -16053,20 +16382,20 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
 
         _createPlaceholder: function( that ) {
                 that = that || this;
-                var className,
+                var className, nodeName,
                         o = that.options;
 
                 if ( !o.placeholder || o.placeholder.constructor === String ) {
                         className = o.placeholder;
+                        nodeName = that.currentItem[ 0 ].nodeName.toLowerCase();
                         o.placeholder = {
                                 element: function() {
 
-                                        var nodeName = that.currentItem[ 0 ].nodeName.toLowerCase(),
-                                                element = $( "<" + nodeName + ">", that.document[ 0 ] );
+                                        var element = $( "<" + nodeName + ">", that.document[ 0 ] );
 
-                                                that._addClass( element, "ui-sortable-placeholder",
-                                                                className || that.currentItem[ 0 ].className )
-                                                        ._removeClass( element, "ui-sortable-helper" );
+                                        that._addClass( element, "ui-sortable-placeholder",
+                                                        className || that.currentItem[ 0 ].className )
+                                                ._removeClass( element, "ui-sortable-helper" );
 
                                         if ( nodeName === "tbody" ) {
                                                 that._createTrPlaceholder(
@@ -16095,9 +16424,15 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
                                                 return;
                                         }
 
-                                        //If the element doesn't have a actual height by itself (without styles coming
-                                        // from a stylesheet), it receives the inline height from the dragged item
-                                        if ( !p.height() ) {
+                                        // If the element doesn't have a actual height or width by itself (without
+                                        // styles coming from a stylesheet), it receives the inline height and width
+                                        // from the dragged item. Or, if it's a tbody or tr, it's going to have a height
+                                        // anyway since we're populating them with <td>s above, but they're unlikely to
+                                        // be the correct height on their own if the row heights are dynamic, so we'll
+                                        // always assign the height of the dragged item given forcePlaceholderSize
+                                        // is true.
+                                        if ( !p.height() || ( o.forcePlaceholderSize &&
+                                                        ( nodeName === "tbody" || nodeName === "tr" ) ) ) {
                                                 p.height(
                                                         that.currentItem.innerHeight() -
                                                         parseInt( that.currentItem.css( "paddingTop" ) || 0, 10 ) -
@@ -16230,9 +16565,11 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
                                 return;
                         }
 
-                        itemWithLeastDistance ?
-                                this._rearrange( event, itemWithLeastDistance, null, true ) :
+                        if ( itemWithLeastDistance ) {
+                                this._rearrange( event, itemWithLeastDistance, null, true );
+                        } else {
                                 this._rearrange( event, null, this.containers[ innermostIndex ].element, true );
+                        }
                         this._trigger( "change", event, this._uiHash() );
                         this.containers[ innermostIndex ]._trigger( "change", event, this._uiHash( this ) );
                         this.currentContainer = this.containers[ innermostIndex ];
@@ -16240,6 +16577,15 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
                         //Update the placeholder
                         this.options.placeholder.update( this.currentContainer, this.placeholder );
 
+                        //Update scrollParent
+                        this.scrollParent = this.placeholder.scrollParent();
+
+                        //Update overflowOffset
+                        if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
+                                        this.scrollParent[ 0 ].tagName !== "HTML" ) {
+                                this.overflowOffset = this.scrollParent.offset();
+                        }
+
                         this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash( this ) );
                         this.containers[ innermostIndex ].containerCache.over = 1;
                 }
@@ -16249,15 +16595,13 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
         _createHelper: function( event ) {
 
                 var o = this.options,
-                        helper = $.isFunction( o.helper ) ?
+                        helper = typeof o.helper === "function" ?
                                 $( o.helper.apply( this.element[ 0 ], [ event, this.currentItem ] ) ) :
                                 ( o.helper === "clone" ? this.currentItem.clone() : this.currentItem );
 
                 //Add the helper to the DOM if that didn't happen already
                 if ( !helper.parents( "body" ).length ) {
-                        $( o.appendTo !== "parent" ?
-                                o.appendTo :
-                                this.currentItem[ 0 ].parentNode )[ 0 ].appendChild( helper[ 0 ] );
+                        this.appendTo[ 0 ].appendChild( helper[ 0 ] );
                 }
 
                 if ( helper[ 0 ] === this.currentItem[ 0 ] ) {
@@ -16285,7 +16629,7 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
                 if ( typeof obj === "string" ) {
                         obj = obj.split( " " );
                 }
-                if ( $.isArray( obj ) ) {
+                if ( Array.isArray( obj ) ) {
                         obj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };
                 }
                 if ( "left" in obj ) {
@@ -16427,7 +16771,7 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
                         top: (
 
                                 // The absolute mouse position
-                                pos.top	+
+                                pos.top +
 
                                 // Only for relative positioned nodes: Relative offset from element to offset parent
                                 this.offset.relative.top * mod +
@@ -16447,7 +16791,7 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
                                 this.offset.relative.left * mod +
 
                                 // The offsetParent's offset without borders (offset + border)
-                                this.offset.parent.left * mod	-
+                                this.offset.parent.left * mod   -
                                 ( ( this.cssPosition === "fixed" ?
                                         -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 :
                                         scroll.scrollLeft() ) * mod )
@@ -16565,9 +16909,12 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
 
         _rearrange: function( event, i, a, hardRefresh ) {
 
-                a ? a[ 0 ].appendChild( this.placeholder[ 0 ] ) :
+                if ( a ) {
+                        a[ 0 ].appendChild( this.placeholder[ 0 ] );
+                } else {
                         i.item[ 0 ].parentNode.insertBefore( this.placeholder[ 0 ],
                                 ( this.direction === "down" ? i.item[ 0 ] : i.item[ 0 ].nextSibling ) );
+                }
 
                 //Various things done here to improve the performance:
                 // 1. we create a setTimeout, that calls refreshPositions
@@ -16735,7 +17082,7 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
 
 
 /*!
- * jQuery UI Spinner 1.12.1
+ * jQuery UI Spinner 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -16753,8 +17100,7 @@ var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
 //>>css.theme: ../../themes/base/theme.css
 
 
-
-function spinnerModifer( fn ) {
+function spinnerModifier( fn ) {
         return function() {
                 var previous = this.element.val();
                 fn.apply( this, arguments );
@@ -16766,7 +17112,7 @@ function spinnerModifer( fn ) {
 }
 
 $.widget( "ui.spinner", {
-        version: "1.12.1",
+        version: "1.13.1",
         defaultElement: "<input>",
         widgetEventPrefix: "spin",
         options: {
@@ -16859,9 +17205,13 @@ $.widget( "ui.spinner", {
                         }
                 },
                 mousewheel: function( event, delta ) {
-                        if ( !delta ) {
+                        var activeElement = $.ui.safeActiveElement( this.document[ 0 ] );
+                        var isActive = this.element[ 0 ] === activeElement;
+
+                        if ( !isActive || !delta ) {
                                 return;
                         }
+
                         if ( !this.spinning && !this._start( event ) ) {
                                 return false;
                         }
@@ -17059,7 +17409,7 @@ $.widget( "ui.spinner", {
                 var incremental = this.options.incremental;
 
                 if ( incremental ) {
-                        return $.isFunction( incremental ) ?
+                        return typeof incremental === "function" ?
                                 incremental( i ) :
                                 Math.floor( i * i * i / 50000 - i * i / 500 + 17 * i / 200 + 1 );
                 }
@@ -17157,7 +17507,7 @@ $.widget( "ui.spinner", {
                 this.buttons.button( value ? "disable" : "enable" );
         },
 
-        _setOptions: spinnerModifer( function( options ) {
+        _setOptions: spinnerModifier( function( options ) {
                 this._super( options );
         } ),
 
@@ -17224,7 +17574,7 @@ $.widget( "ui.spinner", {
                 this.uiSpinner.replaceWith( this.element );
         },
 
-        stepUp: spinnerModifer( function( steps ) {
+        stepUp: spinnerModifier( function( steps ) {
                 this._stepUp( steps );
         } ),
         _stepUp: function( steps ) {
@@ -17234,7 +17584,7 @@ $.widget( "ui.spinner", {
                 }
         },
 
-        stepDown: spinnerModifer( function( steps ) {
+        stepDown: spinnerModifier( function( steps ) {
                 this._stepDown( steps );
         } ),
         _stepDown: function( steps ) {
@@ -17244,11 +17594,11 @@ $.widget( "ui.spinner", {
                 }
         },
 
-        pageUp: spinnerModifer( function( pages ) {
+        pageUp: spinnerModifier( function( pages ) {
                 this._stepUp( ( pages || 1 ) * this.options.page );
         } ),
 
-        pageDown: spinnerModifer( function( pages ) {
+        pageDown: spinnerModifier( function( pages ) {
                 this._stepDown( ( pages || 1 ) * this.options.page );
         } ),
 
@@ -17256,7 +17606,7 @@ $.widget( "ui.spinner", {
                 if ( !arguments.length ) {
                         return this._parse( this.element.val() );
                 }
-                spinnerModifer( this._value ).call( this, newVal );
+                spinnerModifier( this._value ).call( this, newVal );
         },
 
         widget: function() {
@@ -17293,7 +17643,7 @@ var widgetsSpinner = $.ui.spinner;
 
 
 /*!
- * jQuery UI Tabs 1.12.1
+ * jQuery UI Tabs 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -17311,9 +17661,8 @@ var widgetsSpinner = $.ui.spinner;
 //>>css.theme: ../../themes/base/theme.css
 
 
-
 $.widget( "ui.tabs", {
-        version: "1.12.1",
+        version: "1.13.1",
         delay: 300,
         options: {
                 active: null,
@@ -17371,8 +17720,8 @@ $.widget( "ui.tabs", {
 
                 // Take disabling tabs via class attribute from HTML
                 // into account and update option properly.
-                if ( $.isArray( options.disabled ) ) {
-                        options.disabled = $.unique( options.disabled.concat(
+                if ( Array.isArray( options.disabled ) ) {
+                        options.disabled = $.uniqueSort( options.disabled.concat(
                                 $.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) {
                                         return that.tabs.index( li );
                                 } )
@@ -17707,7 +18056,6 @@ $.widget( "ui.tabs", {
                         return $( "a", this )[ 0 ];
                 } )
                         .attr( {
-                                role: "presentation",
                                 tabIndex: -1
                         } );
                 this._addClass( this.anchors, "ui-tabs-anchor" );
@@ -17779,7 +18127,7 @@ $.widget( "ui.tabs", {
         _setOptionDisabled: function( disabled ) {
                 var currentItem, li, i;
 
-                if ( $.isArray( disabled ) ) {
+                if ( Array.isArray( disabled ) ) {
                         if ( !disabled.length ) {
                                 disabled = false;
                         } else if ( disabled.length === this.anchors.length ) {
@@ -18010,7 +18358,7 @@ $.widget( "ui.tabs", {
                 // meta-function to give users option to provide a href string instead of a numerical index.
                 if ( typeof index === "string" ) {
                         index = this.anchors.index( this.anchors.filter( "[href$='" +
-                                $.ui.escapeSelector( index ) + "']" ) );
+                                $.escapeSelector( index ) + "']" ) );
                 }
 
                 return index;
@@ -18067,7 +18415,7 @@ $.widget( "ui.tabs", {
                         disabled = false;
                 } else {
                         index = this._getIndex( index );
-                        if ( $.isArray( disabled ) ) {
+                        if ( Array.isArray( disabled ) ) {
                                 disabled = $.map( disabled, function( num ) {
                                         return num !== index ? num : null;
                                 } );
@@ -18093,7 +18441,7 @@ $.widget( "ui.tabs", {
                         if ( $.inArray( index, disabled ) !== -1 ) {
                                 return;
                         }
-                        if ( $.isArray( disabled ) ) {
+                        if ( Array.isArray( disabled ) ) {
                                 disabled = $.merge( [ index ], disabled ).sort();
                         } else {
                                 disabled = [ index ];
@@ -18199,7 +18547,7 @@ var widgetsTabs = $.ui.tabs;
 
 
 /*!
- * jQuery UI Tooltip 1.12.1
+ * jQuery UI Tooltip 1.13.1
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
@@ -18217,18 +18565,14 @@ var widgetsTabs = $.ui.tabs;
 //>>css.theme: ../../themes/base/theme.css
 
 
-
 $.widget( "ui.tooltip", {
-        version: "1.12.1",
+        version: "1.13.1",
         options: {
                 classes: {
                         "ui-tooltip": "ui-corner-all ui-widget-shadow"
                 },
                 content: function() {
-
-                        // support: IE<9, Opera in jQuery <1.7
-                        // .text() can't accept undefined, so coerce to a string
-                        var title = $( this ).attr( "title" ) || "";
+                        var title = $( this ).attr( "title" );
 
                         // Escape title, since we're going from an attribute to raw HTML
                         return $( "<a>" ).text( title ).html();
@@ -18255,7 +18599,7 @@ $.widget( "ui.tooltip", {
                 describedby.push( id );
                 elem
                         .data( "ui-tooltip-id", id )
-                        .attr( "aria-describedby", $.trim( describedby.join( " " ) ) );
+                        .attr( "aria-describedby", String.prototype.trim.call( describedby.join( " " ) ) );
         },
 
         _removeDescribedBy: function( elem ) {
@@ -18268,7 +18612,7 @@ $.widget( "ui.tooltip", {
                 }
 
                 elem.removeData( "ui-tooltip-id" );
-                describedby = $.trim( describedby.join( " " ) );
+                describedby = String.prototype.trim.call( describedby.join( " " ) );
                 if ( describedby ) {
                         elem.attr( "aria-describedby", describedby );
                 } else {
@@ -18514,7 +18858,7 @@ $.widget( "ui.tooltip", {
                                         position( positionOption.of );
                                         clearInterval( delayedShow );
                                 }
-                        }, $.fx.interval );
+                        }, 13 );
                 }
 
                 this._trigger( "open", event, { tooltip: tooltip } );
@@ -18535,7 +18879,10 @@ $.widget( "ui.tooltip", {
                 // tooltips will handle this in destroy.
                 if ( target[ 0 ] !== this.element[ 0 ] ) {
                         events.remove = function() {
-                                this._removeTooltip( this._find( target ).tooltip );
+                                var targetElement = this._find( target );
+                                if ( targetElement ) {
+                                        this._removeTooltip( targetElement.tooltip );
+                                }
                         };
                 }
 
@@ -18635,6 +18982,10 @@ $.widget( "ui.tooltip", {
         },
 
         _removeTooltip: function( tooltip ) {
+
+                // Clear the interval for delayed tracking tooltips
+                clearInterval( this.delayedShow );
+
                 tooltip.remove();
                 delete this.tooltips[ tooltip.attr( "id" ) ];
         },
@@ -18703,4 +19054,4 @@ var widgetsTooltip = $.ui.tooltip;
 
 
 
-}));
\ No newline at end of file
+} );
\ No newline at end of file
diff --git a/security-admin/src/main/webapp/libs/other/jquery-ui/js/jquery-ui.min.js b/security-admin/src/main/webapp/libs/other/jquery-ui/js/jquery-ui.min.js
index 74ef5e5..c1cbc8b 100644
--- a/security-admin/src/main/webapp/libs/other/jquery-ui/js/jquery-ui.min.js
+++ b/security-admin/src/main/webapp/libs/other/jquery-ui/js/jquery-ui.min.js
@@ -1,12 +1,6 @@
-/*! jQuery UI - v1.12.1 - 2018-03-28
+/*! jQuery UI - v1.13.1 - 2022-01-20
 * http://jqueryui.com
-* Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/draggable.js, widgets/droppable.js, widgets/resizable.js, widgets/selectable.js, widgets/sortable.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/dialog.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, wi [...]
+* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js [...]
 * Copyright jQuery Foundation and other contributors; Licensed MIT */
 
-(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e=t.css("visibility");"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}function i(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change")}}t.ui=t.ui||{},t.ui.version="1.12.1";var s=0,n=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n [...]
-},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,i,s)},plugin [...]
-}}),t.ui.resizable,t.widget("ui.selectable",t.ui.mouse,{version:"1.12.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){e.elementPos=t(e.element[0]).offset(),e.selectees=t(e.options.filter,e.element[0]),e._addClass(e.selectees,"ui-selectee"),e.selectees.each(function(){var [...]
-},_processPanels:function(){var t=this.headers,e=this.panels;this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var e,i=this.options, [...]
-},_updateTooltip:function(){this.title=this.element.attr("title"),this.options.showLabel||this.title||this.element.attr("title",this.options.label)},_updateIcon:function(e,i){var s="iconPosition"!==e,n=s?this.options.iconPosition:i,o="top"===n||"bottom"===n;this.icon?s&&this._removeClass(this.icon,null,this.options.icon):(this.icon=t("<span>"),this._addClass(this.icon,"ui-button-icon","ui-icon"),this.options.showLabel||this._addClass("ui-button-icon-only")),s&&this._addClass(this.icon,nu [...]
-},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var s,n,o=this.value(),a=this.values();this._hasMultipleValues()&&(n=this.values(e?0:1),o=this.values(e),2===this.options.values.length&&this.options.range===!0&&(i=0===e?Math.min(n,i):Math.max(n,i)),a[e]=i),i!==o&&(s=this._trigger("slide",t,this._uiHash(e,i,a)),s!==!1&&(this._hasMultipleValues()?this.values(e,i):this.value(i)))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_cha [...]
-}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],h=t.Color=function(e,i,s,n){return new t.Co [...]
\ No newline at end of file
+!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(V){"use strict";V.ui=V.ui||{};V.ui.version="1.13.1";var n,i=0,a=Array.prototype.hasOwnProperty,r=Array.prototype.slice;V.cleanData=(n=V.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=V._data(i,"events"))&&e.remove&&V(i).triggerHandler("remove");n(t)}),V.widget=function(t,i,e){var s,n,o,a={},r=t.split(".")[0],l=r+"-"+(t=t.split(".")[1]);return e||(e=i,i=V.Widget),Array.isA [...]
\ No newline at end of file
diff --git a/security-admin/src/main/webapp/scripts/Init.js b/security-admin/src/main/webapp/scripts/Init.js
index e155fa3..5909f93 100644
--- a/security-admin/src/main/webapp/scripts/Init.js
+++ b/security-admin/src/main/webapp/scripts/Init.js
@@ -59,7 +59,7 @@ require.config({
             exports: 'Globalize'
         },
         'bootstrap-datepicker': {
-            deps: ['bootstrap']
+            deps: ['jquery-ui', 'bootstrap']
         },
 
         'bootstrap-notify': {
diff --git a/security-admin/src/main/webapp/scripts/utils/XAUtils.js b/security-admin/src/main/webapp/scripts/utils/XAUtils.js
index 49f03d1..fdebfdb 100644
--- a/security-admin/src/main/webapp/scripts/utils/XAUtils.js
+++ b/security-admin/src/main/webapp/scripts/utils/XAUtils.js
@@ -934,7 +934,6 @@ define(function(require) {
 		$el.parents('body').find('.datepicker').hide();
 		input.datepicker({
 			autoclose : true,
-                        dateFormat : 'yy-mm-dd',
 		}).on('changeDate', function(ev) {
 			callback(ev.date);
 			input.datepicker("hide");
diff --git a/security-admin/src/main/webapp/styles/xa.css b/security-admin/src/main/webapp/styles/xa.css
index f170d47..96dacd6 100644
--- a/security-admin/src/main/webapp/styles/xa.css
+++ b/security-admin/src/main/webapp/styles/xa.css
@@ -4258,6 +4258,9 @@ ul.tagit li.tagit-new {
     width: 110%;
     margin-bottom: -7px;
 }
+.ui-datepicker.ui-widget.ui-widget-content {
+  width: 20%;
+}
 /*.field-sameLevel10 .select2-container-multi .select2-choices,
 .field-sameLevel30table .select2-container-multi .select2-choices,
 .field-sameLevel20database .select2-container-multi .select2-choices,

[ranger] 01/02: RANGER-3649 : Represent the Solr admin object types on the Ranger UI

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ni3galave pushed a commit to branch ranger-2.3
in repository https://gitbox.apache.org/repos/asf/ranger.git

commit 9c7d7767760213ac42285bf6bc8369be44c47a25
Author: Dhaval.Rajpara <dh...@gmail.com>
AuthorDate: Fri Mar 4 17:07:59 2022 +0530

    RANGER-3649 : Represent the Solr admin object types on the Ranger UI
    
    Signed-off-by: Nitin Galave <ni...@apache.org>
---
 .../src/main/webapp/scripts/views/policies/RangerPolicyForm.js           | 1 -
 .../src/main/webapp/scripts/views/security_zone/ZoneResourceForm.js      | 1 -
 .../src/main/webapp/scripts/views/service/ServiceAuditFilterResources.js | 1 -
 3 files changed, 3 deletions(-)

diff --git a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js
index 3ea1db3..5b3940a 100644
--- a/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js
+++ b/security-admin/src/main/webapp/scripts/views/policies/RangerPolicyForm.js
@@ -766,7 +766,6 @@ define(function(require){
 					closeOnSelect : true,
 					tags:true,
 					multiple: true,
-					minimumInputLength: 1,
 					width :'220px',
 					tokenSeparators: [' '],
 					initSelection : function (element, callback) {
diff --git a/security-admin/src/main/webapp/scripts/views/security_zone/ZoneResourceForm.js b/security-admin/src/main/webapp/scripts/views/security_zone/ZoneResourceForm.js
index 700d4f4..68092fd 100644
--- a/security-admin/src/main/webapp/scripts/views/security_zone/ZoneResourceForm.js
+++ b/security-admin/src/main/webapp/scripts/views/security_zone/ZoneResourceForm.js
@@ -330,7 +330,6 @@ define(function(require) {
                         closeOnSelect: true,
                         tags: true,
                         multiple: true,
-                        minimumInputLength: 1,
                         width: '220px',
                         tokenSeparators: [" "],
                         initSelection: function(element, callback) {
diff --git a/security-admin/src/main/webapp/scripts/views/service/ServiceAuditFilterResources.js b/security-admin/src/main/webapp/scripts/views/service/ServiceAuditFilterResources.js
index 6a489b5..2cfdfd9 100644
--- a/security-admin/src/main/webapp/scripts/views/service/ServiceAuditFilterResources.js
+++ b/security-admin/src/main/webapp/scripts/views/service/ServiceAuditFilterResources.js
@@ -324,7 +324,6 @@ define(function(require) {
                         closeOnSelect: true,
                         tags: true,
                         multiple: true,
-                        minimumInputLength: 1,
                         width: '220px',
                         tokenSeparators: [" "],
                         initSelection: function(element, callback) {