PageSourceSearch

https://clubmalt.com/wp-content/plugins/wordfence/modules/login-security/js/admin.1786376654.js?ver=2.0.0

js clubmalt.com collected 2026-10-09 01:48:44 UTC 12,062 bytes, 303 lines download raw bytes

1(function($) {
2	function __(string) {
3		return WFLS_ADMIN_TRANSLATIONS[string] || string;
4	}
5	window['WFLS'] = {
6		panelIsOpen: false,
7		basePageName: '',
8		panelQueue: [],
9		pendingChanges: {},
10		userIsActivating: false,
11		
12		//Screen sizes
13		SCREEN_XS: 'xs',
14		SCREEN_SM: 'sm',
15		SCREEN_MD: 'md',
16		SCREEN_LG: 'lg',
17
18		init: function() {
19			this.basePageName = document.title;
20
21			var tabs = $('.wfls-page-tabs').find('.wfls-tab a');
22			if (tabs.length > 0) {
23				tabs.click(function() {
24					$('.wfls-page-tabs').find('.wfls-tab').removeClass('wfls-active');
25					$('.wfls-tab-content').removeClass('wfls-active');
26
27					var tab = $(this).closest('.wfls-tab');
28					tab.addClass('wfls-active');
29					var content = $('#' + tab.data('target'));
30					content.addClass('wfls-active');
31					document.title = tab.data('pageTitle') + " \u2039 " + WFLS.basePageName;
32					$(window).trigger('wfls-tab-change', [tab.data('target')]);
33				});
34				if (window.location.hash) {
35					var hashes = WFLS.parseHashes();
36					var hash = hashes[hashes.length - 1];
37					for (var i = 0; i < tabs.length; i++) {
38						if (hash == $(tabs[i]).closest('.wfls-tab').data('target')) {
39							$(tabs[i]).trigger('click');
40						}
41					}
42				}
43				else {
44					$(tabs[0]).trigger('click');
45				}
46				$(window).on('hashchange', function () {
47					var hashes = WFLS.parseHashes();
48					var hash = hashes[hashes.length - 1];
49					for (var i = 0; i < tabs.length; i++) {
50						if (hash == $(tabs[i]).closest('.wfls-tab').data('target')) {
51							$(tabs[i]).trigger('click');
52						}
53					}
54				});
55			}
56		},
57
58		/**
59		 * Sends a WP AJAX call, automatically adding our nonce.
60		 * 
61		 * @param string action
62		 * @param string|array|object payload
63		 * @param function successCallback
64		 * @param function failureCallback
65		 */
66		ajax: function(action, payload, successCallback, failureCallback) {
67			if (typeof(payload) == 'string') {
68				if (payload.length > 0) {
69					payload += '&';
70				}
71				payload += 'action=' + action + '&nonce=' + WFLSVars.nonce;
72			}
73			else if (typeof(payload) == 'object' && payload instanceof Array) {
74				// jQuery serialized form data
75				payload.push({
76					name: 'action',
77					value: action
78				});
79				payload.push({
80					name: 'nonce',
81					value: WFLSVars.nonce
82				});
83			}
84			else if (typeof(payload) == 'object') {
85				payload['action'] = action;
86				payload['nonce'] = WFLSVars.nonce;
87			}
88			
89			
90			$.ajax({
91				type: 'POST',
92				url: WFLSVars.ajaxurl,
93				dataType: "json",
94				data: payload,
95				success: function(json) {
96					typeof successCallback == 'function' && successCallback(json);
97				},
98				error: function() {
99					typeof failureCallback == 'function' && failureCallback();
100				}
101			});
102		},
103
104		escapeHTML: function(str) {
105			return String(str)
106				.replace(/&/g, '&amp;')
107				.replace(/</g, '&lt;')
108				.replace(/>/g, '&gt;')
109				.replace(/"/g, '&quot;')
110				.replace(/'/g, '&#39;');
111		},
112
113		base64UrlToUint8Array: function(base64url) {
114			var padding = '='.repeat((4 - (base64url.length % 4)) % 4);
115			var base64 = (base64url + padding).replace(/-/g, '+').replace(/_/g, '/');
116			var raw = window.atob(base64);
117			var bytes = new Uint8Array(raw.length);
118			for (var i = 0; i < raw.length; i++) {
119				bytes[i] = raw.charCodeAt(i);
120			}
121			return bytes;
122		},
123
124		arrayBufferToBase64Url: function(buffer) {
125			var bytes = buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);
126			var binary = '';
127			for (var i = 0; i < bytes.length; i++) {
128				binary += String.fromCharCode(bytes[i]);
129			}
130			return window.btoa(binary).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/g, '');
131		},
132
133		publicKeyOptionsFromJSON: function(options) {
134			var parsed = $.extend(true, {}, options);
135			parsed.challenge = WFLS.base64UrlToUint8Array(parsed.challenge);
136			parsed.user.id = WFLS.base64UrlToUint8Array(parsed.user.id);
137			if (parsed.excludeCredentials && parsed.excludeCredentials.length) {
138				for (var i = 0; i < parsed.excludeCredentials.length; i++) {
139					parsed.excludeCredentials[i].id = WFLS.base64UrlToUint8Array(parsed.excludeCredentials[i].id);
140				}
141			}
142			return parsed;
143		},
144
145		credentialToJSON: function(credential) {
146			var transports = [];
147			var clientExtensionResults = {};
148			if (credential.response && typeof credential.response.getTransports === 'function') {
149				transports = credential.response.getTransports();
150			}
151			if (typeof credential.getClientExtensionResults === 'function') {
152				clientExtensionResults = credential.getClientExtensionResults() || {};
153			}
154			return {
155				id: credential.id,
156				type: credential.type,
157				rawId: WFLS.arrayBufferToBase64Url(credential.rawId),
158				clientExtensionResults: clientExtensionResults,
159				response: {
160					clientDataJSON: WFLS.arrayBufferToBase64Url(credential.response.clientDataJSON),
161					attestationObject: WFLS.arrayBufferToBase64Url(credential.response.attestationObject),
162					transports: transports
163				}
164			};
165		},
166
167		/**
168		 * Closes the current standalone modal dialog. Supports being used directly as an event handler.
169		 *
170		 * @param event (optional)
171		 */
172		closeStandaloneModal: function(event) {
173			event && event.preventDefault();
174			event && event.stopPropagation();
175			WFLS.currentDialog && WFLS.currentDialog.dialog('close');
176		},
177
178		/**
179		 * Displays a modal dialog with fixed HTML content using built-in WP functionality. This is intended for
180		 * use by content that may not have the Vue runtime available.
181		 *
182		 * @param html
183		 * @param settings
184		 */
185		standaloneModalHTML: function(html, settings) {
186			if (!settings) { settings = {}; }
187			WFLS.currentDialog && WFLS.currentDialog.dialog('close');
188			WFLS.currentDialog = $('<div>', { html: html }).dialog({
189				modal: true,
190				width: settings.width ? settings.width : (WFLS.screenSize(500) ? 300 : 400),
191				resizable: false,
192				draggable: false,
193				zIndex: 9998,
194				close: function () {
195					$(this).dialog('destroy').remove();
196					WFLS.currentDialog = false;
197					typeof settings.onClose === 'function' && settings.onClose();
198				},
199				open: function () {
200					var dialog = $(this);
201					var widget = dialog.dialog('widget');
202					var instance = dialog.dialog('instance');
203
204					widget.attr('id', 'wfls-standalone-modal').css('z-index', 9999);
205					instance && instance.overlay && instance.overlay.attr('id', 'wfls-standalone-modal-overlay');
206
207					typeof settings.onOpen === 'function' && settings.onOpen(this);
208				}
209			});
210		},
211
212		standaloneModal: function(heading, body, settings) {
213			if (!settings) { settings = {}; }
214			var html =
215				'<div class="wfls-modal">' +
216					'<div class="wfls-modal-header">' +
217					'<div class="wfls-modal-header-content">' +
218						'<div class="wfls-modal-title">' +
219							'<strong>' + (typeof heading === 'object' ? heading.html : WFLS.escapeHTML(heading)) + '</strong>' +
220						'</div>' +
221					'</div>' +
222					'<div class="wfls-modal-header-action"></div>' +
223					'</div>' +
224					'<div class="wfls-modal-content">' +
225						(typeof body === 'object' ? body.html : WFLS.escapeHTML(body)) +
226					'</div>' +
227					'<div class="wfls-modal-footer">' +
228						'<ul class="wfls-flex-horizontal wfls-flex-align-right wfls-full-width">' +
229							'<li class="wfls-padding-add-left-small"><a href="#" class="wfls-btn wfls-btn-primary wfls-btn-callout-subtle wfls-generic-close-btn">' + __('Close') + '</a></li>' +
230						'</ul>' +
231					'</div>' +
232				'</div>';
233
234			var originalOpen = settings.onOpen;
235			settings.onOpen = function(dialog) {
236				$(dialog).find('.wfls-generic-close-btn').on('click', WFLS.closeStandaloneModal);
237				typeof originalOpen === 'function' && originalOpen(dialog);
238			}
239			WFLS.standaloneModalHTML(html, settings)
240		},
241
242		/**
243		 * Parses and returns the hash portion of a URL, working around user agents that URL-encode the # character.
244		 * 
245		 * @returns {Array}
246		 */
247		parseHashes: function() {
248			var hashes = window.location.hash.replace('%23', '#');
249			var splitHashes = hashes.split('#');
250			var result = [];
251			for (var i = 0; i < splitHashes.length; i++) {
252				if (splitHashes[i].length > 0) {
253					result.push(splitHashes[i]);
254				}
255			}
256			return result;
257		},
258
259		/**
260		 * Returns whether or not the screen size is within the size given. This may be a numerical value
261		 * or one of the WFLS_SCREEN_ constants.
262		 * 
263		 * @param size
264		 * @returns {boolean}
265		 */
266		screenSize: function(size) {
267			switch (size) {
268				case WFLS.SCREEN_XS:
269					return window.matchMedia("only screen and (max-width: 767px)").matches;
270				case WFLS.SCREEN_SM:
271					return window.matchMedia("only screen and (max-width: 991px)").matches;
272				case WFLS.SCREEN_MD:
273					return window.matchMedia("only screen and (max-width: 1199px)").matches;
274				case WFLS.SCREEN_LG:
275					return window.matchMedia("only screen and (max-width: 32767px)").matches;
276			}
277			
278			var parsed = parseInt(size);
279			if (isNaN(parsed)) {
280				return false;
281			}
282			return window.matchMedia("only screen and (max-width: " + parsed + "px)").matches;
283		},
284	};
285	
286	$(function() {
287		WFLS.init();
288	});
289
290	$.fn.crossfade = function(incoming, duration, complete) {
291		duration = duration || 400;
292		complete = complete || function() { };
293		
294		return this.each(function() {
295			$(this).fadeOut(duration, function() {
296				$(incoming).fadeIn(duration, complete);
297			});
298		});
299	};
300})(jQuery);
301
302/*! @source https://github.com/eligrey/FileSaver.js/blob/master/dist/FileSaver.min.js */
303(function(a,b){if("function"==typeof define&&define.amd)define([],b);else if("undefined"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){"use strict";function b(a,b){return"undefined"==typeof b?b={autoBom:!1}:"object"!=typeof b&&(console.warn("Deprecated: Expected third argument to be a object"),b={autoBom:!b}),b.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(a.type)?new Blob(["\uFEFF",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open("GET",a),d.responseType="blob",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error("could not download file")},d.send()}function d(a){var b=new XMLHttpRequest;b.open("HEAD",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent("click"))}catch(c){var b=document.createEvent("MouseEvents");
vendor: 1,788 bytes, line 303
303b.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0,a=/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||("object"!=typeof window||window!==f?function(){}:"download"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement("a");g=g||b.name||"download",j.download=g,j.rel="noopener","string"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target="_blank")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:"msSaveOrOpenBlob"in navigator?function(f,g,h){if(g=g||f.name||"download","string"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement("a");i.href=f,i.target="_blank",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open("","_blank"),g&&(g.document.title=g.document.body.innerText="downloading..."),"string"==typeof b)return c(b,d,e);var h="application/octet-stream"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\/[\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&"undefined"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,"data:attachment/file;"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g,"undefined"!=typeof module&&(module.exports=g)});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.