PageSourceSearch

https://folkdancefootnotes.org/_static/??-eJydkUtuwzAMRC9UmXEaNOmi…46cdEKrrb09nuS7mePTfdT7981mv3t7PfRfbB3g7w==

js folkdancefootnotes.org collected 2026-10-02 11:33:42 UTC 154,862 bytes, 2,362 lines download raw bytes

1/**
2 * Comment Likes - JavaScript
3 *
4 * This handles liking and unliking comments, as well as viewing who has
5 * liked a particular comment.
6 *
7 * @dependency  Swipe (dynamically loaded when needed)
8 *
9 * @package     Comment_Likes
10 * @subpackage  JavaScript
11 */
12(function () {
13	function init() {
14		let extWin;
15		let extWinCheck;
16		let commentLikeEvent;
17
18		// Only run once.
19		if (window.comment_likes_loaded) {
20			return;
21		}
22		window.comment_likes_loaded = true;
23
24		// Client-side cache of who liked a particular comment to avoid
25		// having to hit the server multiple times for the same data.
26		const commentLikeCache = {};
27
28		let swipeLibPromise;
29
30		// Load the Swipe library, if it's not already loaded.
31		function swipeLibLoader() {
32			if (!swipeLibPromise) {
33				swipeLibPromise = new Promise((resolve, reject) => {
34					if (window.Swipe) {
35						resolve(window.Swipe);
36					} else {
37						const swipeScript = document.createElement('script');
38						swipeScript.src = comment_like_text.swipeUrl;
39						swipeScript.async = true;
40						document.body.appendChild(swipeScript);
41						swipeScript.addEventListener('load', () => resolve(window.Swipe));
42						swipeScript.addEventListener('error', error => reject(error));
43					}
44				});
45			}
46			return swipeLibPromise;
47		}
48
49		/**
50		 * Parse the comment ID from a comment like link.
51		 */
52		function getCommentId(link) {
53			const commentId =
54				link && link.getAttribute('href') && link.getAttribute('href').split('like_comment=');
55			return commentId[1].split('&_wpnonce=')[0];
56		}
57
58		/**
59		 * Handle an ajax action on the comment like link.
60		 */
61		function handleLinkAction(link, action, commentId, callback) {
62			const nonce =
63				link && link.getAttribute('href') && link.getAttribute('href').split('_wpnonce=')[1];
64
65			fetch('/wp-admin/admin-ajax.php', {
66				method: 'POST',
67				body: new URLSearchParams({
68					action: action,
69					_wpnonce: nonce,
70					like_comment: commentId,
71					blog_id: Number(link.dataset.blog),
72				}),
73				headers: {
74					'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
75					'X-Requested-With': 'XMLHttpRequest',
76					Accept: 'application/json',
77					'cache-control': 'no-cache',
78					pragma: 'no-cache',
79				},
80			})
81				.then(response => response.json())
82				.then(callback);
83		}
84
85		function startPolling() {
86			// Append cookie polling login iframe to this window to wait for user to finish logging in (or cancel)
87			const loginIframe = document.createElement('iframe');
88			loginIframe.id = 'wp-login-polling-iframe';
89			loginIframe.src = 'https://wordpress.com/public.api/connect/?iframe=true';
90			document.body.appendChild(loginIframe);
91			loginIframe.style.display = 'none';
92		}
93
94		function stopPolling() {
95			const iframe = document.querySelector('#wp-login-polling-iframe');
96			if (iframe) {
97				iframe.remove();
98			}
99		}
100
101		function hide(el) {
102			if (el && el.style) {
103				el.style.display = 'none';
104			}
105		}
106
107		function show(el) {
108			if (el && el.style) {
109				el.style.removeProperty('display');
110			}
111		}
112
113		// Overlay used for displaying comment like info.
114		class Overlay {
115			constructor() {
116				// Overlay element.
117				this.el = document.createElement('div');
118				this.el.classList.add('comment-likes-overlay');
119				document.body.appendChild(this.el);
120				hide(this.el);
121
122				this.el.addEventListener('mouseenter', () => {
123					// Don't hide the overlay if the user is mousing over it.
124					overlay.cancelHide();
125				});
126
127				this.el.addEventListener('mouseleave', () => overlay.requestHide());
128
129				// Inner contents of overlay.
130				this.innerEl = null;
131
132				// Instance of the Swipe library.
133				this.swipe = null;
134
135				// Timeout used for hiding the overlay.
136				this.hideTimeout = null;
137			}
138
139			// Initialise the overlay for use, removing any old content.
140			clear() {
141				// Unload any previous instance of Swipe (to avoid leaking a global
142				// event handler). This is done before clearing the contents of the
143				// overlay because Swipe expects the slides to still be present.
144				if (this.swipe) {
145					this.swipe.kill();
146					this.swipe = null;
147				}
148				this.el.innerHTML = '';
149				this.innerEl = document.createElement('div');
150				this.innerEl.classList.add('inner');
151				this.el.appendChild(this.innerEl);
152			}
153
154			/**
155			 * Construct a list (<ul>) of user (gravatar, name) details.
156			 *
157			 * @param  data     liker data returned from the server
158			 * @param  klass    CSS class to apply to the <ul> element
159			 * @param  start    index of user to start at
160			 * @param  length   number of users to include in the list
161			 *
162			 * @return          A container element with the list
163			 */
164			getUserBits(data, klass, start, length) {
165				start = start || 0;
166				let last = start + (length || data.length);
167				last = last > data.length ? data.length : last;
168				const container = document.createElement('div');
169				container.classList.add('liker-list');
170				let html = `<ul class="${klass || ''}">`;
171				for (let i = start; i < last; ++i) {
172					const user = data[i];
173					html += `
174						<li>
175							<a rel="nofollow" title="${user.display_name_esc}" href="${user.profile_url_esc}">
176								<img src="${user.avatar_url_esc}" alt="${user.display_name_esc}" />
177								<span class="user-name">${user.display_name_esc}</span>
178							</a>
179						</li>
180					`;
181				}
182				html += '</ul>';
183				container.innerHTML = html;
184				return container;
185			}
186
187			/**
188			 * Render the display of who has liked this comment. The type of
189			 * display depends on how many people have liked the comment.
190			 * If more than 10 people have liked the comment, this function
191			 * renders navigation controls and sets up the Swipe library for
192			 * changing between pages.
193			 *
194			 * @param link  the element over which the user is hovering
195			 * @param data  the results retrieved from the server
196			 */
197			showLikes(link, data) {
198				this.clear();
199
200				link.dataset.likeCount = data.length;
201				if (data.length === 0) {
202					// No likers after all.
203					hide(this.el);
204					return;
205				}
206
207				this.innerEl.style.padding = '12px';
208
209				if (data.length < 6) {
210					// Only one column needed.
211					this.innerEl.style.maxWidth = '200px';
212					this.innerEl.innerHTML = '';
213					this.innerEl.appendChild(this.getUserBits(data, 'single'));
214					this.setPosition(link);
215				} else if (data.length < 11) {
216					// Two columns, but only one page.
217					this.innerEl.innerHTML = '';
218					this.innerEl.appendChild(this.getUserBits(data, 'double'));
219					this.setPosition(link);
220				} else {
221					// Multiple pages.
222					this.renderLikesWithPagination(data, link);
223				}
224			}
225
226			/**
227			 * Render multiple pages of likes with pagination controls.
228			 * This function is intended to be called by `showLikes` above.
229			 *
230			 * @param data  the results retrieved from the server
231			 */
232			renderLikesWithPagination(data, link) {
233				swipeLibLoader().then(() => {
234					const page_count = Math.ceil(data.length / 10);
235					// Swipe requires two nested containers.
236					const swipe = document.createElement('div');
237					swipe.classList.add('swipe');
238					this.innerEl.appendChild(swipe);
239
240					const wrap = document.createElement('div');
241					wrap.classList.add('swipe-wrap');
242					swipe.appendChild(wrap);
243
244					for (let i = 0; i < page_count; ++i) {
245						wrap.appendChild(this.getUserBits(data, 'double', i * 10, 10));
246					}
247
248					/**
249					 * Navigation controls.
250					 * This is based on the Newdash controls found in
251					 *    reader/recommendations-templates.php
252					 */
253					const nav = document.createElement('nav');
254					nav.classList.add('slider-nav');
255
256					let navContents = `
257						<a href="#" class="prev">
258							<span class="noticon noticon-previous" title="Previous" alt="<"></span>
259						</a>
260						<span class="position">
261					`;
262					for (let i = 0; i < page_count; ++i) {
263						navContents += `<em data-page="${i}" class="${i === 0 ? 'on' : ''}">&bull;</em>`;
264					}
265					navContents += `
266						</span>
267						<a href="#" class="next">
268							<span class="noticon noticon-next" title="Next" alt=">"></span>
269						</a>
270					`;
271					this.innerEl.appendChild(nav);
272					nav.innerHTML = navContents;
273
274					/** Set up Swipe. **/
275					// Swipe cannot be set up successfully unless its container
276					// is visible, so we show it now.
277					show(this.el);
278					this.setPosition(link);
279
280					this.swipe = new Swipe(swipe, {
281						callback: function (pos) {
282							// Update the pagination indicators.
283							//
284							// If there are exactly two pages, Swipe has a weird
285							// special case where it duplicates both pages and
286							// can return index 2 and 3 even though those aren't
287							// real pages (see swipe.js, line 47). To deal with
288							// this, we use the expression `pos % page_count`.
289							pos = pos % page_count;
290							nav.querySelectorAll('em').forEach(em => {
291								const page = Number(em.dataset.page);
292								em.setAttribute('class', pos === page ? 'on' : '');
293							});
294						},
295					});
296
297					nav.querySelectorAll('em').forEach(em => {
298						em.addEventListener('click', e => {
299							// Go to the page corresponding to the indicator clicked.
300							this.swipe.slide(Number(em.dataset.page));
301							e.preventDefault();
302						});
303					});
304					// Previous and next buttons.
305					nav.querySelector('.prev').addEventListener('click', e => {
306						this.swipe.prev();
307						e.preventDefault();
308					});
309					nav.querySelector('.next').addEventListener('click', e => {
310						this.swipe.next();
311						e.preventDefault();
312					});
313				});
314			}
315
316			/**
317			 * Open the overlay and show a loading message.
318			 */
319			showLoadingMessage(link) {
320				this.clear();
321				this.innerEl.textContent = comment_like_text.loading;
322				this.setPosition(link);
323			}
324
325			/**
326			 * Position the overlay near the current comment.
327			 *
328			 * @param link  element near which to position the overlay
329			 */
330			setPosition(link) {
331				// Prepare a down arrow icon for the bottom of the overlay.
332				const icon = document.createElement('span');
333				this.el.appendChild(icon);
334				icon.classList.add('icon', 'noticon', 'noticon-downarrow');
335				icon.style.textShadow = '0px 1px 1px rgb(223, 223, 223)';
336
337				const rect = link.getBoundingClientRect();
338				const win = document.defaultView;
339				const offset = {
340					top: rect.top + win.scrollY,
341					left: rect.left + win.scrollX,
342				};
343
344				// Take measurements with the element fully visible.
345				show(this.el);
346				let left = offset.left - (this.el.offsetWidth - link.offsetWidth) / 2;
347				left = left < 5 ? 5 : left;
348				let top = offset.top - this.el.offsetHeight + 5;
349				hide(this.el);
350
351				const adminBar = document.querySelector('#wpadminbar');
352
353				// Check if the overlay would appear off the screen.
354				if (top < win.scrollY + ((adminBar && adminBar.offsetHeight) || 0)) {
355					// We'll display the overlay beneath the link instead.
356					top = offset.top + link.offsetHeight;
357					// Instead of using the down arrow icon, use an up arrow.
358					icon.remove();
359					this.el.prepend(icon);
360					icon.classList.remove('noticon-downarrow');
361					icon.classList.add('noticon-uparrow');
362					icon.style.textShadow = '0px -1px 1px rgb(223, 223, 223)';
363					icon.style.verticalAlign = 'bottom';
364				}
365
366				this.el.style.left = `${left}px`;
367				this.el.style.top = `${top}px`;
368				show(this.el);
369
370				// The height of the arrow icon differs slightly between browsers,
371				// so we compute the margin here to make sure it isn't disjointed
372				// from the overlay.
373				icon.style.marginTop = `${icon.scrollHeight - 26}px`;
374				icon.style.marginBottom = `${20 - icon.scrollHeight}px`;
375
376				// Position the arrow to be horizontally centred on the link.
377				icon.style.paddingLeft = `${
378					offset.left - left + (link.offsetWidth - icon.scrollWidth) / 2
379				}px`;
380			}
381
382			/**
383			 * Return whether the overlay is visible.
384			 */
385			isVisible() {
386				return this.el.style.getPropertyValue('display') !== 'none';
387			}
388
389			/**
390			 * Request that the overlay be hidden after a short delay.
391			 */
392			requestHide() {
393				if (this.hideTimeout !== null) {
394					return;
395				}
396				this.hideTimeout = setTimeout(() => {
397					hide(this.el);
398					this.clear();
399				}, 300);
400			}
401
402			/**
403			 * Cancel a request to hide the overlay.
404			 */
405			cancelHide() {
406				if (this.hideTimeout !== null) {
407					clearTimeout(this.hideTimeout);
408					this.hideTimeout = null;
409				}
410			}
411		}
412
413		// Overlay used for displaying comment like info.
414		const overlay = new Overlay();
415
416		// The most recent comment for which the user has requested to see
417		// who liked it.
418		var relevantComment;
419
420		// Precache after this timeout.
421		var precacheTimeout = null;
422
423		/**
424		 * Fetch the like data for a particular comment.
425		 */
426		function fetchLikeData(link, commentId) {
427			commentLikeCache[commentId] = null;
428
429			const container = link && link.parentElement && link.parentElement.parentElement;
430			const star = container.querySelector('a.comment-like-link');
431			star &&
432				handleLinkAction(star, 'view_comment_likes', commentId, data => {
433					// Populate the cache.
434					commentLikeCache[commentId] = data;
435
436					// Only show the overlay if the user is interested.
437					if (overlay.isVisible() && relevantComment === commentId) {
438						overlay.showLikes(link, data);
439					}
440				});
441		}
442
443		function readCookie(c) {
444			const nameEQ = c + '=';
445			const cookieStrings = document.cookie.split(';');
446
447			for (let i = 0; i < cookieStrings.length; i++) {
448				let cookieString = cookieStrings[i];
449				while (cookieString.charAt(0) === ' ') {
450					cookieString = cookieString.substring(1, cookieString.length);
451				}
452				if (cookieString.indexOf(nameEQ) === 0) {
453					const chunk = cookieString.substring(nameEQ.length, cookieString.length);
454					const pairs = chunk.split('&');
455					const cookieData = {};
456					for (let num = pairs.length - 1; num >= 0; num--) {
457						const pair = pairs[num].split('=');
458						cookieData[pair[0]] = decodeURIComponent(pair[1]);
459					}
460					return cookieData;
461				}
462			}
463			return null;
464		}
465
466		function getServiceData() {
467			const data = readCookie('wpc_wpc');
468			if (data === null || typeof data.access_token === 'undefined' || !data.access_token) {
469				return false;
470			}
471			return data;
472		}
473
474		function readMessage(msg) {
475			const event = msg.data;
476
477			if (typeof event.event === 'undefined') {
478				return;
479			}
480
481			if (event.event === 'login' && event.success) {
482				extWinCheck = setInterval(function () {
483					if (!extWin || extWin.closed) {
484						clearInterval(extWinCheck);
485						if (getServiceData()) {
486							// Load page in an iframe to get the current comment nonce
487							const nonceIframe = document.createElement('iframe');
488							nonceIframe.id = 'wp-login-comment-nonce-iframe';
489							nonceIframe.style.display = 'none';
490							nonceIframe.src = commentLikeEvent + '';
491							document.body.appendChild(nonceIframe);
492
493							const commentLikeId = (commentLikeEvent + '')
494								.split('like_comment=')[1]
495								.split('&_wpnonce=')[0];
496							let c;
497
498							// Set a 5 second timeout to redirect to the comment page without doing the Like as a fallback
499							const commentLikeTimeout = setTimeout(() => {
500								window.location = commentLikeEvent;
501							}, 5000);
502
503							// Check for a new nonced redirect and use that if available before timing out
504							const commentLikeCheck = setInterval(() => {
505								const iframe = document.querySelector('#wp-login-comment-nonce-iframe');
506								if (iframe) {
507									c = iframe.querySelector(`#comment-like-${commentLikeId} .comment-like-link`);
508								}
509								if (c && typeof c.href !== 'undefined') {
510									clearTimeout(commentLikeTimeout);
511									clearInterval(commentLikeCheck);
512									window.location = c.href;
513								}
514							}, 100);
515						}
516					}
517				}, 100);
518
519				if (extWin) {
520					if (!extWin.closed) {
521						extWin.close();
522					}
523					extWin = false;
524				}
525
526				stopPolling();
527			}
528		}
529
530		if (typeof window.postMessage !== 'undefined') {
531			window.addEventListener('message', e => {
532				let message = e && e.data;
533				if (typeof message === 'string') {
534					try {
535						message = JSON.parse(message);
536					} catch (err) {
537						return;
538					}
539				}
540
541				const type = message && message.type;
542				if (type === 'loginMessage') {
543					readMessage(message);
544				}
545			});
546		}
547
548		document.body.addEventListener('click', e => {
549			let target = e.target;
550
551			// Don't do anything when clicking on the "X people" link.
552			if (target.matches('p.comment-likes a.view-likers')) {
553				e.preventDefault();
554				return;
555			}
556
557			// Retrieve the surrounding paragraph to the star, if it hasn't been liked.
558			const notLikedPar = target.closest('p.comment-not-liked');
559
560			// Return if not clicking on star or surrounding paragraph.
561			if (!target.matches('a.comment-like-link') && !notLikedPar) {
562				return;
563			}
564
565			// When a comment hasn't been liked, make the text clickable, too.
566			if (notLikedPar) {
567				target = notLikedPar.querySelector('a.comment-like-link');
568				if (!target) {
569					return;
570				}
571			}
572
573			if (target.classList.contains('needs-login')) {
574				e.preventDefault();
575				commentLikeEvent = target;
576				if (extWin) {
577					if (!extWin.closed) {
578						extWin.close();
579					}
580					extWin = false;
581				}
582
583				stopPolling();
584
585				const url = 'https://wordpress.com/public.api/connect/?action=request&service=wordpress';
586				extWin = window.open(
587					url,
588					'likeconn',
589					'status=0,toolbar=0,location=1,menubar=0,directories=0,resizable=1,scrollbars=1,height=560,width=500'
590				);
591
592				startPolling();
593
594				return false;
595			}
596
597			// Record that the user likes or does not like this comment.
598			const commentId = getCommentId(target);
599			target.classList.add('loading');
600
601			let commentEl = document.querySelector(`p#comment-like-${commentId}`);
602			// Determine whether to like or unlike based on whether the comment is
603			// currently liked.
604			const action =
605				commentEl && commentEl.dataset.liked === 'comment-liked'
606					? 'unlike_comment'
607					: 'like_comment';
608			handleLinkAction(target, action, commentId, data => {
609				// Invalidate the like cache for this comment.
610				delete commentLikeCache[commentId];
611
612				const countEl = document.querySelector(`#comment-like-count-${data.context}`);
613				if (countEl) {
614					countEl.innerHTML = data.display;
615				}
616
617				commentEl = document.querySelector(`p#comment-like-${data.context}`);
618				if (action === 'like_comment') {
619					commentEl.classList.remove('comment-not-liked');
620					commentEl.classList.add('comment-liked');
621					commentEl.dataset.liked = 'comment-liked';
622				} else {
623					commentEl.classList.remove('comment-liked');
624					commentEl.classList.add('comment-not-liked');
625					commentEl.dataset.liked = 'comment-not-liked';
626				}
627
628				// Prefetch new data for this comment (if there are likers left).
629				const parent = target.closest('.comment-likes');
630				const link = parent && parent.querySelector('a.view-likers');
631				if (link) {
632					fetchLikeData(link, commentId);
633				}
634
635				target.classList.remove('loading');
636			});
637			e.preventDefault();
638			e.stopPropagation();
639		});
640
641		document.body.addEventListener(
642			'mouseenter',
643			function (e) {
644				if (!e.target.matches('p.comment-likes a.view-likers')) {
645					return;
646				}
647				// Show the user a list of who has liked this comment.
648
649				const link = e.target;
650				if (Number(link.dataset.likeCount || 0) === 0) {
651					// No one has liked this comment.
652					return;
653				}
654
655				// Don't hide the overlay.
656				overlay.cancelHide();
657
658				// Get the comment ID.
659				const container = link.parentElement && link.parentElement.parentElement;
660				const star = container && container.querySelector('a.comment-like-link');
661				const commentId = star && getCommentId(star);
662				relevantComment = commentId;
663
664				// Check if the list of likes for this comment is already in
665				// the cache.
666				if (commentId in commentLikeCache) {
667					const entry = commentLikeCache[commentId];
668					// Only display the likes if the ajax request is
669					// actually done.
670					if (entry !== null) {
671						overlay.showLikes(link, entry);
672					} else {
673						// Make sure the overlay is visible (in case
674						// the user moved the mouse away while loading
675						// but then came back before it finished
676						// loading).
677						overlay.showLoadingMessage(link);
678					}
679					return;
680				}
681
682				// Position the "Loading..." overlay.
683				overlay.showLoadingMessage(link);
684
685				// Fetch the data.
686				fetchLikeData(link, commentId);
687			},
688			true
689		);
690
691		document.body.addEventListener(
692			'mouseleave',
693			e => {
694				if (!e.target.matches('p.comment-likes a.view-likers')) {
695					return;
696				}
697				// User has moved cursor away - hide the overlay.
698				overlay.requestHide();
699			},
700			true
701		);
702
703		document.body.addEventListener(
704			'mouseenter',
705			e => {
706				if (!e.target.matches('.comment') || !e.target.querySelector('a.comment-like-link')) {
707					return;
708				}
709				// User is moving over a comment - precache the comment like data.
710				if (precacheTimeout !== null) {
711					clearTimeout(precacheTimeout);
712					precacheTimeout = null;
713				}
714
715				const star = e.target.querySelector('a.comment-like-link');
716				const parent = star.closest('.comment-likes');
717				const link = parent && parent.querySelector('a.view-likers');
718				if (!link || Number(link.dataset.likeCount || 0) === 0) {
719					// No likes.
720					return;
721				}
722				const commentId = getCommentId(star);
723				if (commentId in commentLikeCache) {
724					// Already in cache.
725					return;
726				}
727
728				precacheTimeout = setTimeout(() => {
729					precacheTimeout = null;
730					if (commentId in commentLikeCache) {
731						// Was cached in the interim.
732						return;
733					}
734					fetchLikeData(link, commentId);
735				}, 1000);
736			},
737			true
738		);
739	}
740
741	if (document.readyState !== 'loading') {
742		init();
743	} else {
744		document.addEventListener('DOMContentLoaded', init);
745	}
746})();
747;
748!function(e){var o={};function n(t){if(o[t])return o[t].exports;var r=o[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=o,n.d=function(e,o,t){n.o(e,o)||Object.defineProperty(e,o,{enumerable:!0,get:t})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,o){if(1&o&&(e=n(e)),8&o)return e;if(4&o&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(n.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&o&&"string"!=typeof e)for(var r in e)n.d(t,r,function(o){return e[o]}.bind(null,r));return t},n.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(o,"a",o),o},n.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},n.p="",n(n.s=273)}({273:function(e,o){!function(){"use strict";let e,o;function n(e){return new Promise((o,n)=>{const t=document.createElement("script");t.onload=()=>o(),t.onerror=e=>n(e),t.src=e,document.body.appendChild(t)})}function t(){if(e)return e;const o=window.wpcom_coblocks_js;return e=n(o.coblocks_lightbox_js),e}function r(){if(o)return o;window.wpcomJQueryUsageLoggerDisabled=!0;const e=window.wpcom_coblocks_js,t=window.jQuery?Promise.resolve():n(e.jquery_core_js).then(()=>n(e.jquery_migrate_js)),r=t.then(()=>window.imagesLoaded?Promise.resolve():n(e.imagesloaded_js)),c=t.then(()=>window.Masonry?Promise.resolve():n(e.masonry_js)),u=Promise.all([t,r,c]).then(()=>n(e.coblocks_masonry_js));return o=u,o}function c(){document.querySelector(".wp-block-coblocks-gallery-masonry")&&r(),document.querySelector(".has-lightbox")&&t(),document.body.classList.contains("block-editor-page")&&(r(),t())}"loading"!==document.readyState?c():document.addEventListener("DOMContentLoaded",c)}()}});;
749/**
750 * File skip-link-focus-fix.js.
751 *
752 * Helps with accessibility for keyboard only users.
753 *
754 * Learn more: https://git.io/vWdr2
755 */
756(function() {
757	var isIe = /(trident|msie)/i.test( navigator.userAgent );
758
759	if ( isIe && document.getElementById && window.addEventListener ) {
760		window.addEventListener( 'hashchange', function() {
761			var id = location.hash.substring( 1 ),
762				element;
763
764			if ( ! ( /^[A-z0-9_-]+$/.test( id ) ) ) {
765				return;
766			}
767
768			element = document.getElementById( id );
769
770			if ( element ) {
771				if ( ! ( /^(?:a|select|input|button|textarea)$/i.test( element.tagName ) ) ) {
772					element.tabIndex = -1;
773				}
774
775				element.focus();
776			}
777		}, false );
778	}
779})();
780;
781/*
782 * jQuery FlexSlider v2.2.2
783 * http://www.woothemes.com/flexslider/
784 *
785 * Copyright 2012 WooThemes
786 * Free to use under the GPLv2 license.
787 * http://www.gnu.org/licenses/gpl-2.0.html
788 *
789 * Contributing author: Tyler Smith (@mbmufffin)
790 */
791
792;
793(function ($) {
794
795  //FlexSlider: Object Instance
796  $.flexslider = function(el, options) {
797    var slider = $(el);
798
799    // making variables public
800    slider.vars = $.extend({}, $.flexslider.defaults, options);
801
802    var namespace = slider.vars.namespace,
803        msGesture = window.navigator && window.navigator.msPointerEnabled && window.MSGesture,
804        touch = (( "ontouchstart" in window ) || msGesture || window.DocumentTouch && document instanceof DocumentTouch) && slider.vars.touch,
805        // depricating this idea, as devices are being released with both of these events
806        //eventType = (touch) ? "touchend" : "click",
807        eventType = "click touchend MSPointerUp",
808        watchedEvent = "",
809        watchedEventClearTimer,
810        vertical = slider.vars.direction === "vertical",
811        reverse = slider.vars.reverse,
812        carousel = (slider.vars.itemWidth > 0),
813        fade = slider.vars.animation === "fade",
814        asNav = slider.vars.asNavFor !== "",
815        methods = {},
816        focused = true;
817
818    // Store a reference to the slider object
819    $.data(el, "flexslider", slider);
820
821    // Private slider methods
822    methods = {
823      init: function() {
824        slider.animating = false;
825        // Get current slide and make sure it is a number
826        slider.currentSlide = parseInt( ( slider.vars.startAt ? slider.vars.startAt : 0), 10 );
827        if ( isNaN( slider.currentSlide ) ) slider.currentSlide = 0;
828        slider.animatingTo = slider.currentSlide;
829        slider.atEnd = (slider.currentSlide === 0 || slider.currentSlide === slider.last);
830        slider.containerSelector = slider.vars.selector.substr(0,slider.vars.selector.search(' '));
831        slider.slides = $(slider.vars.selector, slider);
832        slider.container = $(slider.containerSelector, slider);
833        slider.count = slider.slides.length;
834        // SYNC:
835        slider.syncExists = $(slider.vars.sync).length > 0;
836        // SLIDE:
837        if (slider.vars.animation === "slide") slider.vars.animation = "swing";
838        slider.prop = (vertical) ? "top" : "marginLeft";
839        slider.args = {};
840        // SLIDESHOW:
841        slider.manualPause = false;
842        slider.stopped = false;
843        //PAUSE WHEN INVISIBLE
844        slider.started = false;
845        slider.startTimeout = null;
846        // TOUCH/USECSS:
847        slider.transitions = !slider.vars.video && !fade && slider.vars.useCSS && (function() {
848          var obj = document.createElement('div'),
849              props = ['perspectiveProperty', 'WebkitPerspective', 'MozPerspective', 'OPerspective', 'msPerspective'];
850          for (var i in props) {
851            if ( obj.style[ props[i] ] !== undefined ) {
852              slider.pfx = props[i].replace('Perspective','').toLowerCase();
853              slider.prop = "-" + slider.pfx + "-transform";
854              return true;
855            }
856          }
857          return false;
858        }());
859        // CONTROLSCONTAINER:
860        if (slider.vars.controlsContainer !== "") slider.controlsContainer = $(slider.vars.controlsContainer).length > 0 && $(slider.vars.controlsContainer);
861        // MANUAL:
862        if (slider.vars.manualControls !== "") slider.manualControls = $(slider.vars.manualControls).length > 0 && $(slider.vars.manualControls);
863
864        // RANDOMIZE:
865        if (slider.vars.randomize) {
866          slider.slides.sort(function() { return (Math.round(Math.random())-0.5); });
867          slider.container.empty().append(slider.slides);
868        }
869
870        slider.doMath();
871
872        // INIT
873        slider.setup("init");
874
875        // CONTROLNAV:
876        if (slider.vars.controlNav) methods.controlNav.setup();
877
878        // DIRECTIONNAV:
879        if (slider.vars.directionNav) methods.directionNav.setup();
880
881        // KEYBOARD:
882        if (slider.vars.keyboard && ($(slider.containerSelector).length === 1 || slider.vars.multipleKeyboard)) {
883          $(document).bind('keyup', function(event) {
884            var keycode = event.keyCode;
885            if (!slider.animating && (keycode === 39 || keycode === 37)) {
886              var target = (keycode === 39) ? slider.getTarget('next') :
887                           (keycode === 37) ? slider.getTarget('prev') : false;
888              slider.flexAnimate(target, slider.vars.pauseOnAction);
889            }
890          });
891        }
892        // MOUSEWHEEL:
893        if (slider.vars.mousewheel) {
894          slider.bind('mousewheel', function(event, delta, deltaX, deltaY) {
895            event.preventDefault();
896            var target = (delta < 0) ? slider.getTarget('next') : slider.getTarget('prev');
897            slider.flexAnimate(target, slider.vars.pauseOnAction);
898          });
899        }
900
901        // PAUSEPLAY
902        if (slider.vars.pausePlay) methods.pausePlay.setup();
903
904        //PAUSE WHEN INVISIBLE
905        if (slider.vars.slideshow && slider.vars.pauseInvisible) methods.pauseInvisible.init();
906
907        // SLIDSESHOW
908        if (slider.vars.slideshow) {
909          if (slider.vars.pauseOnHover) {
910            slider.hover(function() {
911              if (!slider.manualPlay && !slider.manualPause) slider.pause();
912            }, function() {
913              if (!slider.manualPause && !slider.manualPlay && !slider.stopped) slider.play();
914            });
915          }
916          // initialize animation
917          //If we're visible, or we don't use PageVisibility API
918          if(!slider.vars.pauseInvisible || !methods.pauseInvisible.isHidden()) {
919            (slider.vars.initDelay > 0) ? slider.startTimeout = setTimeout(slider.play, slider.vars.initDelay) : slider.play();
920          }
921        }
922
923        // ASNAV:
924        if (asNav) methods.asNav.setup();
925
926        // TOUCH
927        if (touch && slider.vars.touch) methods.touch();
928
929        // FADE&&SMOOTHHEIGHT || SLIDE:
930        if (!fade || (fade && slider.vars.smoothHeight)) $(window).bind("resize orientationchange focus", methods.resize);
931
932        slider.find("img").attr("draggable", "false");
933
934        // API: start() Callback
935        setTimeout(function(){
936          slider.vars.start(slider);
937        }, 200);
938      },
939      asNav: {
940        setup: function() {
941          slider.asNav = true;
942          slider.animatingTo = Math.floor(slider.currentSlide/slider.move);
943          slider.currentItem = slider.currentSlide;
944          slider.slides.removeClass(namespace + "active-slide").eq(slider.currentItem).addClass(namespace + "active-slide");
945          if(!msGesture){
946              slider.slides.on(eventType, function(e){
947                e.preventDefault();
948                var $slide = $(this),
949                    target = $slide.index();
950                var posFromLeft = $slide.offset().left - $(slider).scrollLeft(); // Find position of slide relative to left of slider container
951                if( posFromLeft <= 0 && $slide.hasClass( namespace + 'active-slide' ) ) {
952                  slider.flexAnimate(slider.getTarget("prev"), true);
953                } else if (!$(slider.vars.asNavFor).data('flexslider').animating && !$slide.hasClass(namespace + "active-slide")) {
954                  slider.direction = (slider.currentItem < target) ? "next" : "prev";
955                  slider.flexAnimate(target, slider.vars.pauseOnAction, false, true, true);
956                }
957              });
958          }else{
959              el._slider = slider;
960              slider.slides.each(function (){
961                  var that = this;
962                  that._gesture = new MSGesture();
963                  that._gesture.target = that;
964                  that.addEventListener("MSPointerDown", function (e){
965                      e.preventDefault();
966                      if(e.currentTarget._gesture)
967                          e.currentTarget._gesture.addPointer(e.pointerId);
968                  }, false);
969                  that.addEventListener("MSGestureTap", function (e){
970                      e.preventDefault();
971                      var $slide = $(this),
972                          target = $slide.index();
973                      if (!$(slider.vars.asNavFor).data('flexslider').animating && !$slide.hasClass('active')) {
974                          slider.direction = (slider.currentItem < target) ? "next" : "prev";
975                          slider.flexAnimate(target, slider.vars.pauseOnAction, false, true, true);
976                      }
977                  });
978              });
979          }
980        }
981      },
982      controlNav: {
983        setup: function() {
984          if (!slider.manualControls) {
985            methods.controlNav.setupPaging();
986          } else { // MANUALCONTROLS:
987            methods.controlNav.setupManual();
988          }
989        },
990        setupPaging: function() {
991          var type = (slider.vars.controlNav === "thumbnails") ? 'control-thumbs' : 'control-paging',
992              j = 1,
993              item,
994              slide;
995
996          slider.controlNavScaffold = $('<ol class="'+ namespace + 'control-nav ' + namespace + type + '"></ol>');
997
998          if (slider.pagingCount > 1) {
999            for (var i = 0; i < slider.pagingCount; i++) {
1000              slide = slider.slides.eq(i);
1001              item = (slider.vars.controlNav === "thumbnails") ? '<img src="' + slide.attr( 'data-thumb' ) + '"/>' : '<a>' + j + '</a>';
1002              if ( 'thumbnails' === slider.vars.controlNav && true === slider.vars.thumbCaptions ) {
1003                var captn = slide.attr( 'data-thumbcaption' );
1004                if ( '' != captn && undefined != captn ) item += '<span class="' + namespace + 'caption">' + captn + '</span>';
1005              }
1006              slider.controlNavScaffold.append('<li>' + item + '</li>');
1007              j++;
1008            }
1009          }
1010
1011          // CONTROLSCONTAINER:
1012          (slider.controlsContainer) ? $(slider.controlsContainer).append(slider.controlNavScaffold) : slider.append(slider.controlNavScaffold);
1013          methods.controlNav.set();
1014
1015          methods.controlNav.active();
1016
1017          slider.controlNavScaffold.delegate('a, img', eventType, function(event) {
1018            event.preventDefault();
1019
1020            if (watchedEvent === "" || watchedEvent === event.type) {
1021              var $this = $(this),
1022                  target = slider.controlNav.index($this);
1023
1024              if (!$this.hasClass(namespace + 'active')) {
1025                slider.direction = (target > slider.currentSlide) ? "next" : "prev";
1026                slider.flexAnimate(target, slider.vars.pauseOnAction);
1027              }
1028            }
1029
1030            // setup flags to prevent event duplication
1031            if (watchedEvent === "") {
1032              watchedEvent = event.type;
1033            }
1034            methods.setToClearWatchedEvent();
1035
1036          });
1037        },
1038        setupManual: function() {
1039          slider.controlNav = slider.manualControls;
1040          methods.controlNav.active();
1041
1042          slider.controlNav.bind(eventType, function(event) {
1043            event.preventDefault();
1044
1045            if (watchedEvent === "" || watchedEvent === event.type) {
1046              var $this = $(this),
1047                  target = slider.controlNav.index($this);
1048
1049              if (!$this.hasClass(namespace + 'active')) {
1050                (target > slider.currentSlide) ? slider.direction = "next" : slider.direction = "prev";
1051                slider.flexAnimate(target, slider.vars.pauseOnAction);
1052              }
1053            }
1054
1055            // setup flags to prevent event duplication
1056            if (watchedEvent === "") {
1057              watchedEvent = event.type;
1058            }
1059            methods.setToClearWatchedEvent();
1060          });
1061        },
1062        set: function() {
1063          var selector = (slider.vars.controlNav === "thumbnails") ? 'img' : 'a';
1064          slider.controlNav = $('.' + namespace + 'control-nav li ' + selector, (slider.controlsContainer) ? slider.controlsContainer : slider);
1065        },
1066        active: function() {
1067          slider.controlNav.removeClass(namespace + "active").eq(slider.animatingTo).addClass(namespace + "active");
1068        },
1069        update: function(action, pos) {
1070          if (slider.pagingCount > 1 && action === "add") {
1071            slider.controlNavScaffold.append($('<li><a>' + slider.count + '</a></li>'));
1072          } else if (slider.pagingCount === 1) {
1073            slider.controlNavScaffold.find('li').remove();
1074          } else {
1075            slider.controlNav.eq(pos).closest('li').remove();
1076          }
1077          methods.controlNav.set();
1078          (slider.pagingCount > 1 && slider.pagingCount !== slider.controlNav.length) ? slider.update(pos, action) : methods.controlNav.active();
1079        }
1080      },
1081      directionNav: {
1082        setup: function() {
1083          var directionNavScaffold = $('<ul class="' + namespace + 'direction-nav"><li><a class="' + namespace + 'prev" href="#">
vendor: 9,047 bytes, lines 1083-1286
1083' + slider.vars.prevText + '</a></li><li><a class="' + namespace + 'next" href="#">' + slider.vars.nextText + '</a></li></ul>');
1084
1085          // CONTROLSCONTAINER:
1086          if (slider.controlsContainer) {
1087            $(slider.controlsContainer).append(directionNavScaffold);
1088            slider.directionNav = $('.' + namespace + 'direction-nav li a', slider.controlsContainer);
1089          } else {
1090            slider.append(directionNavScaffold);
1091            slider.directionNav = $('.' + namespace + 'direction-nav li a', slider);
1092          }
1093
1094          methods.directionNav.update();
1095
1096          slider.directionNav.bind(eventType, function(event) {
1097            event.preventDefault();
1098            var target;
1099
1100            if (watchedEvent === "" || watchedEvent === event.type) {
1101              target = ($(this).hasClass(namespace + 'next')) ? slider.getTarget('next') : slider.getTarget('prev');
1102              slider.flexAnimate(target, slider.vars.pauseOnAction);
1103            }
1104
1105            // setup flags to prevent event duplication
1106            if (watchedEvent === "") {
1107              watchedEvent = event.type;
1108            }
1109            methods.setToClearWatchedEvent();
1110          });
1111        },
1112        update: function() {
1113          var disabledClass = namespace + 'disabled';
1114          if (slider.pagingCount === 1) {
1115            slider.directionNav.addClass(disabledClass).attr('tabindex', '-1');
1116          } else if (!slider.vars.animationLoop) {
1117            if (slider.animatingTo === 0) {
1118              slider.directionNav.removeClass(disabledClass).filter('.' + namespace + "prev").addClass(disabledClass).attr('tabindex', '-1');
1119            } else if (slider.animatingTo === slider.last) {
1120              slider.directionNav.removeClass(disabledClass).filter('.' + namespace + "next").addClass(disabledClass).attr('tabindex', '-1');
1121            } else {
1122              slider.directionNav.removeClass(disabledClass).removeAttr('tabindex');
1123            }
1124          } else {
1125            slider.directionNav.removeClass(disabledClass).removeAttr('tabindex');
1126          }
1127        }
1128      },
1129      pausePlay: {
1130        setup: function() {
1131          var pausePlayScaffold = $('<div class="' + namespace + 'pauseplay"><a></a></div>');
1132
1133          // CONTROLSCONTAINER:
1134          if (slider.controlsContainer) {
1135            slider.controlsContainer.append(pausePlayScaffold);
1136            slider.pausePlay = $('.' + namespace + 'pauseplay a', slider.controlsContainer);
1137          } else {
1138            slider.append(pausePlayScaffold);
1139            slider.pausePlay = $('.' + namespace + 'pauseplay a', slider);
1140          }
1141
1142          methods.pausePlay.update((slider.vars.slideshow) ? namespace + 'pause' : namespace + 'play');
1143
1144          slider.pausePlay.bind(eventType, function(event) {
1145            event.preventDefault();
1146
1147            if (watchedEvent === "" || watchedEvent === event.type) {
1148              if ($(this).hasClass(namespace + 'pause')) {
1149                slider.manualPause = true;
1150                slider.manualPlay = false;
1151                slider.pause();
1152              } else {
1153                slider.manualPause = false;
1154                slider.manualPlay = true;
1155                slider.play();
1156              }
1157            }
1158
1159            // setup flags to prevent event duplication
1160            if (watchedEvent === "") {
1161              watchedEvent = event.type;
1162            }
1163            methods.setToClearWatchedEvent();
1164          });
1165        },
1166        update: function(state) {
1167          (state === "play") ? slider.pausePlay.removeClass(namespace + 'pause').addClass(namespace + 'play').html(slider.vars.playText) : slider.pausePlay.removeClass(namespace + 'play').addClass(namespace + 'pause').html(slider.vars.pauseText);
1168        }
1169      },
1170      touch: function() {
1171        var startX,
1172          startY,
1173          offset,
1174          cwidth,
1175          dx,
1176          startT,
1177          scrolling = false,
1178          localX = 0,
1179          localY = 0,
1180          accDx = 0;
1181
1182        if(!msGesture){
1183            el.addEventListener('touchstart', onTouchStart, false);
1184
1185            function onTouchStart(e) {
1186              if (slider.animating) {
1187                e.preventDefault();
1188              } else if ( ( window.navigator.msPointerEnabled ) || e.touches.length === 1 ) {
1189                slider.pause();
1190                // CAROUSEL:
1191                cwidth = (vertical) ? slider.h : slider. w;
1192                startT = Number(new Date());
1193                // CAROUSEL:
1194
1195                // Local vars for X and Y points.
1196                localX = e.touches[0].pageX;
1197                localY = e.touches[0].pageY;
1198
1199                offset = (carousel && reverse && slider.animatingTo === slider.last) ? 0 :
1200                         (carousel && reverse) ? slider.limit - (((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo) :
1201                         (carousel && slider.currentSlide === slider.last) ? slider.limit :
1202                         (carousel) ? ((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.currentSlide :
1203                         (reverse) ? (slider.last - slider.currentSlide + slider.cloneOffset) * cwidth : (slider.currentSlide + slider.cloneOffset) * cwidth;
1204                startX = (vertical) ? localY : localX;
1205                startY = (vertical) ? localX : localY;
1206
1207                el.addEventListener('touchmove', onTouchMove, false);
1208                el.addEventListener('touchend', onTouchEnd, false);
1209              }
1210            }
1211
1212            function onTouchMove(e) {
1213              // Local vars for X and Y points.
1214
1215              localX = e.touches[0].pageX;
1216              localY = e.touches[0].pageY;
1217
1218              dx = (vertical) ? startX - localY : startX - localX;
1219              scrolling = (vertical) ? (Math.abs(dx) < Math.abs(localX - startY)) : (Math.abs(dx) < Math.abs(localY - startY));
1220
1221              var fxms = 500;
1222
1223              if ( ! scrolling || Number( new Date() ) - startT > fxms ) {
1224                e.preventDefault();
1225                if (!fade && slider.transitions) {
1226                  if (!slider.vars.animationLoop) {
1227                    dx = dx/((slider.currentSlide === 0 && dx < 0 || slider.currentSlide === slider.last && dx > 0) ? (Math.abs(dx)/cwidth+2) : 1);
1228                  }
1229                  slider.setProps(offset + dx, "setTouch");
1230                }
1231              }
1232            }
1233
1234            function onTouchEnd(e) {
1235              // finish the touch by undoing the touch session
1236              el.removeEventListener('touchmove', onTouchMove, false);
1237
1238              if (slider.animatingTo === slider.currentSlide && !scrolling && !(dx === null)) {
1239                var updateDx = (reverse) ? -dx : dx,
1240                    target = (updateDx > 0) ? slider.getTarget('next') : slider.getTarget('prev');
1241
1242                if (slider.canAdvance(target) && (Number(new Date()) - startT < 550 && Math.abs(updateDx) > 50 || Math.abs(updateDx) > cwidth/2)) {
1243                  slider.flexAnimate(target, slider.vars.pauseOnAction);
1244                } else {
1245                  if (!fade) slider.flexAnimate(slider.currentSlide, slider.vars.pauseOnAction, true);
1246                }
1247              }
1248              el.removeEventListener('touchend', onTouchEnd, false);
1249
1250              startX = null;
1251              startY = null;
1252              dx = null;
1253              offset = null;
1254            }
1255        }else{
1256            el.style.msTouchAction = "none";
1257            el._gesture = new MSGesture();
1258            el._gesture.target = el;
1259            el.addEventListener("MSPointerDown", onMSPointerDown, false);
1260            el._slider = slider;
1261            el.addEventListener("MSGestureChange", onMSGestureChange, false);
1262            el.addEventListener("MSGestureEnd", onMSGestureEnd, false);
1263
1264            function onMSPointerDown(e){
1265                e.stopPropagation();
1266                if (slider.animating) {
1267                    e.preventDefault();
1268                }else{
1269                    slider.pause();
1270                    el._gesture.addPointer(e.pointerId);
1271                    accDx = 0;
1272                    cwidth = (vertical) ? slider.h : slider. w;
1273                    startT = Number(new Date());
1274                    // CAROUSEL:
1275
1276                    offset = (carousel && reverse && slider.animatingTo === slider.last) ? 0 :
1277                        (carousel && reverse) ? slider.limit - (((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo) :
1278                            (carousel && slider.currentSlide === slider.last) ? slider.limit :
1279                                (carousel) ? ((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.currentSlide :
1280                                    (reverse) ? (slider.last - slider.currentSlide + slider.cloneOffset) * cwidth : (slider.currentSlide + slider.cloneOffset) * cwidth;
1281                }
1282            }
1283
1284            function onMSGestureChange(e) {
1285                e.stopPropagation();
1286                var slider = e.target._slider;
1287                if(!slider){
1288                    return;
1289                }
1290                var transX = -e.translationX,
1291                    transY = -e.translationY;
1292
1293                //Accumulate translations.
1294                accDx = accDx + ((vertical) ? transY : transX);
1295                dx = accDx;
1296                scrolling = (vertical) ? (Math.abs(accDx) < Math.abs(-transX)) : (Math.abs(accDx) < Math.abs(-transY));
1297
1298                if(e.detail === e.MSGESTURE_FLAG_INERTIA){
1299                    setImmediate(function (){
1300                        el._gesture.stop();
1301                    });
1302
1303                    return;
1304                }
1305
1306                if (!scrolling || Number(new Date()) - startT > 500) {
1307                    e.preventDefault();
1308                    if (!fade && slider.transitions) {
1309                        if (!slider.vars.animationLoop) {
1310                            dx = accDx / ((slider.currentSlide === 0 && accDx < 0 || slider.currentSlide === slider.last && accDx > 0) ? (Math.abs(accDx) / cwidth + 2) : 1);
1311                        }
1312                        slider.setProps(offset + dx, "setTouch");
1313                    }
1314                }
1315            }
1316
1317            function onMSGestureEnd(e) {
1318                e.stopPropagation();
1319                var slider = e.target._slider;
1320                if(!slider){
1321                    return;
1322                }
1323                if (slider.animatingTo === slider.currentSlide && !scrolling && !(dx === null)) {
1324                    var updateDx = (reverse) ? -dx : dx,
1325                        target = (updateDx > 0) ? slider.getTarget('next') : slider.getTarget('prev');
1326
1327                    if (slider.canAdvance(target) && (Number(new Date()) - startT < 550 && Math.abs(updateDx) > 50 || Math.abs(updateDx) > cwidth/2)) {
1328                        slider.flexAnimate(target, slider.vars.pauseOnAction);
1329                    } else {
1330                        if (!fade) slider.flexAnimate(slider.currentSlide, slider.vars.pauseOnAction, true);
1331                    }
1332                }
1333
1334                startX = null;
1335                startY = null;
1336                dx = null;
1337                offset = null;
1338                accDx = 0;
1339            }
1340        }
1341      },
1342      resize: function() {
1343        if (!slider.animating && slider.is(':visible')) {
1344          if (!carousel) slider.doMath();
1345
1346          if (fade) {
1347            // SMOOTH HEIGHT:
1348            methods.smoothHeight();
1349          } else if (carousel) { //CAROUSEL:
1350            slider.slides.width(slider.computedW);
1351            slider.update(slider.pagingCount);
1352            slider.setProps();
1353          }
1354          else if (vertical) { //VERTICAL:
1355            slider.viewport.height(slider.h);
1356            slider.setProps(slider.h, "setTotal");
1357          } else {
1358            // SMOOTH HEIGHT:
1359            if (slider.vars.smoothHeight) methods.smoothHeight();
1360            slider.newSlides.width(slider.computedW);
1361            slider.setProps(slider.computedW, "setTotal");
1362          }
1363        }
1364      },
1365      smoothHeight: function(dur) {
1366        if (!vertical || fade) {
1367          var $obj = (fade) ? slider : slider.viewport;
1368          (dur) ? $obj.animate({"height": slider.slides.eq(slider.animatingTo).height()}, dur) : $obj.height(slider.slides.eq(slider.animatingTo).height());
1369        }
1370      },
1371      sync: function(action) {
1372        var $obj = $(slider.vars.sync).data("flexslider"),
1373            target = slider.animatingTo;
1374
1375        switch (action) {
1376          case "animate": $obj.flexAnimate(target, slider.vars.pauseOnAction, false, true); break;
1377          case "play": if (!$obj.playing && !$obj.asNav) { $obj.play(); } break;
1378          case "pause": $obj.pause(); break;
1379        }
1380      },
1381      uniqueID: function($clone) {
1382        $clone.find( '[id]' ).each(function() {
1383          var $this = $(this);
1384          $this.attr( 'id', $this.attr( 'id' ) + '_clone' );
1385        });
1386        return $clone;
1387      },
1388      pauseInvisible: {
1389        visProp: null,
1390        init: function() {
1391          var prefixes = ['webkit','moz','ms','o'];
1392
1393          if ('hidden' in document) return 'hidden';
1394          for (var i = 0; i < prefixes.length; i++) {
1395            if ((prefixes[i] + 'Hidden') in document)
1396            methods.pauseInvisible.visProp = prefixes[i] + 'Hidden';
1397          }
1398          if (methods.pauseInvisible.visProp) {
1399            var evtname = methods.pauseInvisible.visProp.replace(/[H|h]idden/,'') + 'visibilitychange';
1400            document.addEventListener(evtname, function() {
1401              if (methods.pauseInvisible.isHidden()) {
1402                if(slider.startTimeout) clearTimeout(slider.startTimeout); //If clock is ticking, stop timer and prevent from starting while invisible
1403                else slider.pause(); //Or just pause
1404              }
1405              else {
1406                if(slider.started) slider.play(); //Initiated before, just play
1407                else (slider.vars.initDelay > 0) ? setTimeout(slider.play, slider.vars.initDelay) : slider.play(); //Didn't init before: simply init or wait for it
1408              }
1409            });
1410          }
1411        },
1412        isHidden: function() {
1413          return document[methods.pauseInvisible.visProp] || false;
1414        }
1415      },
1416      setToClearWatchedEvent: function() {
1417        clearTimeout(watchedEventClearTimer);
1418        watchedEventClearTimer = setTimeout(function() {
1419          watchedEvent = "";
1420        }, 3000);
1421      }
1422    };
1423
1424    // public methods
1425    slider.flexAnimate = function(target, pause, override, withSync, fromNav) {
1426      if (!slider.vars.animationLoop && target !== slider.currentSlide) {
1427        slider.direction = (target > slider.currentSlide) ? "next" : "prev";
1428      }
1429
1430      if (asNav && slider.pagingCount === 1) slider.direction = (slider.currentItem < target) ? "next" : "prev";
1431
vendor: 5,334 bytes, lines 1432-1544
1432      if (!slider.animating && (slider.canAdvance(target, fromNav) || override) && slider.is(":visible")) {
1433        if (asNav && withSync) {
1434          var master = $(slider.vars.asNavFor).data('flexslider');
1435          slider.atEnd = target === 0 || target === slider.count - 1;
1436          master.flexAnimate(target, true, false, true, fromNav);
1437          slider.direction = (slider.currentItem < target) ? "next" : "prev";
1438          master.direction = slider.direction;
1439
1440          if (Math.ceil((target + 1)/slider.visible) - 1 !== slider.currentSlide && target !== 0) {
1441            slider.currentItem = target;
1442            slider.slides.removeClass(namespace + "active-slide").eq(target).addClass(namespace + "active-slide");
1443            target = Math.floor(target/slider.visible);
1444          } else {
1445            slider.currentItem = target;
1446            slider.slides.removeClass(namespace + "active-slide").eq(target).addClass(namespace + "active-slide");
1447            return false;
1448          }
1449        }
1450
1451        slider.animating = true;
1452        slider.animatingTo = target;
1453
1454        // SLIDESHOW:
1455        if (pause) slider.pause();
1456
1457        // API: before() animation Callback
1458        slider.vars.before(slider);
1459
1460        // SYNC:
1461        if (slider.syncExists && !fromNav) methods.sync("animate");
1462
1463        // CONTROLNAV
1464        if (slider.vars.controlNav) methods.controlNav.active();
1465
1466        // !CAROUSEL:
1467        // CANDIDATE: slide active class (for add/remove slide)
1468        if (!carousel) slider.slides.removeClass(namespace + 'active-slide').eq(target).addClass(namespace + 'active-slide');
1469
1470        // INFINITE LOOP:
1471        // CANDIDATE: atEnd
1472        slider.atEnd = target === 0 || target === slider.last;
1473
1474        // DIRECTIONNAV:
1475        if (slider.vars.directionNav) methods.directionNav.update();
1476
1477        if (target === slider.last) {
1478          // API: end() of cycle Callback
1479          slider.vars.end(slider);
1480          // SLIDESHOW && !INFINITE LOOP:
1481          if (!slider.vars.animationLoop) slider.pause();
1482        }
1483
1484        // SLIDE:
1485        if (!fade) {
1486          var dimension = (vertical) ? slider.slides.filter(':first').height() : slider.computedW,
1487              margin, slideString, calcNext;
1488
1489          // INFINITE LOOP / REVERSE:
1490          if (carousel) {
1491            //margin = (slider.vars.itemWidth > slider.w) ? slider.vars.itemMargin * 2 : slider.vars.itemMargin;
1492            margin = slider.vars.itemMargin;
1493            calcNext = ((slider.itemW + margin) * slider.move) * slider.animatingTo;
1494            slideString = (calcNext > slider.limit && slider.visible !== 1) ? slider.limit : calcNext;
1495          } else if (slider.currentSlide === 0 && target === slider.count - 1 && slider.vars.animationLoop && slider.direction !== "next") {
1496            slideString = (reverse) ? (slider.count + slider.cloneOffset) * dimension : 0;
1497          } else if (slider.currentSlide === slider.last && target === 0 && slider.vars.animationLoop && slider.direction !== "prev") {
1498            slideString = (reverse) ? 0 : (slider.count + 1) * dimension;
1499          } else {
1500            slideString = (reverse) ? ((slider.count - 1) - target + slider.cloneOffset) * dimension : (target + slider.cloneOffset) * dimension;
1501          }
1502          slider.setProps(slideString, "", slider.vars.animationSpeed);
1503          if (slider.transitions) {
1504            if (!slider.vars.animationLoop || !slider.atEnd) {
1505              slider.animating = false;
1506              slider.currentSlide = slider.animatingTo;
1507            }
1508            slider.container.unbind("webkitTransitionEnd transitionend");
1509            slider.container.bind("webkitTransitionEnd transitionend", function() {
1510              slider.wrapup(dimension);
1511            });
1512          } else {
1513            slider.container.animate(slider.args, slider.vars.animationSpeed, slider.vars.easing, function(){
1514              slider.wrapup(dimension);
1515            });
1516          }
1517        } else { // FADE:
1518          if (!touch) {
1519            //slider.slides.eq(slider.currentSlide).fadeOut(slider.vars.animationSpeed, slider.vars.easing);
1520            //slider.slides.eq(target).fadeIn(slider.vars.animationSpeed, slider.vars.easing, slider.wrapup);
1521
1522            slider.slides.eq(slider.currentSlide).css({"zIndex": 1}).animate({"opacity": 0}, slider.vars.animationSpeed, slider.vars.easing);
1523            slider.slides.eq(target).css({"zIndex": 2}).animate({"opacity": 1}, slider.vars.animationSpeed, slider.vars.easing, slider.wrapup);
1524
1525          } else {
1526            slider.slides.eq(slider.currentSlide).css({ "opacity": 0, "zIndex": 1 });
1527            slider.slides.eq(target).css({ "opacity": 1, "zIndex": 2 });
1528            slider.wrapup(dimension);
1529          }
1530        }
1531        // SMOOTH HEIGHT:
1532        if (slider.vars.smoothHeight) methods.smoothHeight(slider.vars.animationSpeed);
1533      }
1534    };
1535    slider.wrapup = function(dimension) {
1536      // SLIDE:
1537      if (!fade && !carousel) {
1538        if (slider.currentSlide === 0 && slider.animatingTo === slider.last && slider.vars.animationLoop) {
1539          slider.setProps(dimension, "jumpEnd");
1540        } else if (slider.currentSlide === slider.last && slider.animatingTo === 0 && slider.vars.animationLoop) {
1541          slider.setProps(dimension, "jumpStart");
1542        }
1543      }
1544      slider.animating = false;
1545      slider.currentSlide = slider.animatingTo;
1546      // API: after() animation Callback
1547      slider.vars.after(slider);
1548    };
1549
1550    // SLIDESHOW:
1551    slider.animateSlides = function() {
1552      if (!slider.animating && focused ) slider.flexAnimate(slider.getTarget("next"));
1553    };
1554    // SLIDESHOW:
1555    slider.pause = function() {
1556      clearInterval(slider.animatedSlides);
1557      slider.animatedSlides = null;
1558      slider.playing = false;
1559      // PAUSEPLAY:
1560      if (slider.vars.pausePlay) methods.pausePlay.update("play");
1561      // SYNC:
1562      if (slider.syncExists) methods.sync("pause");
1563    };
1564    // SLIDESHOW:
1565    slider.play = function() {
1566      if (slider.playing) clearInterval(slider.animatedSlides);
1567      slider.animatedSlides = slider.animatedSlides || setInterval(slider.animateSlides, slider.vars.slideshowSpeed);
1568      slider.started = slider.playing = true;
1569      // PAUSEPLAY:
1570      if (slider.vars.pausePlay) methods.pausePlay.update("pause");
1571      // SYNC:
1572      if (slider.syncExists) methods.sync("play");
1573    };
1574    // STOP:
1575    slider.stop = function () {
1576      slider.pause();
1577      slider.stopped = true;
1578    };
1579    slider.canAdvance = function(target, fromNav) {
1580      // ASNAV:
1581      var last = (asNav) ? slider.pagingCount - 1 : slider.last;
1582      return (fromNav) ? true :
1583             (asNav && slider.currentItem === slider.count - 1 && target === 0 && slider.direction === "prev") ? true :
1584             (asNav && slider.currentItem === 0 && target === slider.pagingCount - 1 && slider.direction !== "next") ? false :
1585             (target === slider.currentSlide && !asNav) ? false :
1586             (slider.vars.animationLoop) ? true :
1587             (slider.atEnd && slider.currentSlide === 0 && target === last && slider.direction !== "next") ? false :
1588             (slider.atEnd && slider.currentSlide === last && target === 0 && slider.direction === "next") ? false :
1589             true;
1590    };
1591    slider.getTarget = function(dir) {
1592      slider.direction = dir;
1593      if (dir === "next") {
1594        return (slider.currentSlide === slider.last) ? 0 : slider.currentSlide + 1;
1595      } else {
1596        return (slider.currentSlide === 0) ? slider.last : slider.currentSlide - 1;
1597      }
1598    };
1599
1600    // SLIDE:
1601    slider.setProps = function(pos, special, dur) {
1602      var target = (function() {
1603        var posCheck = (pos) ? pos : ((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo,
1604            posCalc = (function() {
1605              if (carousel) {
1606                return (special === "setTouch") ? pos :
1607                       (reverse && slider.animatingTo === slider.last) ? 0 :
1608                       (reverse) ? slider.limit - (((slider.itemW + slider.vars.itemMargin) * slider.move) * slider.animatingTo) :
1609                       (slider.animatingTo === slider.last) ? slider.limit : posCheck;
1610              } else {
1611                switch (special) {
1612                  case "setTotal": return (reverse) ? ((slider.count - 1) - slider.currentSlide + slider.cloneOffset) * pos : (slider.currentSlide + slider.cloneOffset) * pos;
1613                  case "setTouch": return (reverse) ? pos : pos;
1614                  case "jumpEnd": return (reverse) ? pos : slider.count * pos;
1615                  case "jumpStart": return (reverse) ? slider.count * pos : pos;
1616                  default: return pos;
1617                }
1618              }
1619            }());
1620
1621            return (posCalc * -1) + "px";
1622          }());
1623
1624      if (slider.transitions) {
1625        target = (vertical) ? "translate3d(0," + target + ",0)" : "translate3d(" + target + ",0,0)";
1626        dur = (dur !== undefined) ? (dur/1000) + "s" : "0s";
1627        slider.container.css("-" + slider.pfx + "-transition-duration", dur);
1628         slider.container.css("transition-duration", dur);
1629      }
1630
1631      slider.args[slider.prop] = target;
1632      if (slider.transitions || dur === undefined) slider.container.css(slider.args);
1633
1634      slider.container.css('transform',target);
1635    };
1636
1637    slider.setup = function(type) {
1638      // SLIDE:
1639      if (!fade) {
1640        var sliderOffset, arr;
1641
1642        if (type === "init") {
1643          slider.viewport = $('<div class="' + namespace + 'viewport"></div>').css({"overflow": "hidden", "position": "relative"}).appendTo(slider).append(slider.container);
1644          // INFINITE LOOP:
1645          slider.cloneCount = 0;
1646          slider.cloneOffset = 0;
1647          // REVERSE:
1648          if (reverse) {
1649            arr = $.makeArray(slider.slides).reverse();
1650            slider.slides = $(arr);
1651            slider.container.empty().append(slider.slides);
1652          }
1653        }
1654        // INFINITE LOOP && !CAROUSEL:
1655        if (slider.vars.animationLoop && !carousel) {
1656          slider.cloneCount = 2;
1657          slider.cloneOffset = 1;
1658          // clear out old clones
1659          if (type !== "init") slider.container.find('.clone').remove();
1660          slider.container.append(slider.slides.first().clone().addClass('clone').attr('aria-hidden', 'true')).prepend(slider.slides.last().clone().addClass('clone').attr('aria-hidden', 'true'));
1661		      methods.uniqueID( slider.slides.first().clone().addClass('clone') ).appendTo( slider.container );
1662		      methods.uniqueID( slider.slides.last().clone().addClass('clone') ).prependTo( slider.container );
1663        }
1664        slider.newSlides = $(slider.vars.selector, slider);
1665
1666        sliderOffset = (reverse) ? slider.count - 1 - slider.currentSlide + slider.cloneOffset : slider.currentSlide + slider.cloneOffset;
1667        // VERTICAL:
1668        if (vertical && !carousel) {
1669          slider.container.height((slider.count + slider.cloneCount) * 200 + "%").css("position", "absolute").width("100%");
1670          setTimeout(function(){
1671            slider.newSlides.css({"display": "block"});
1672            slider.doMath();
1673            slider.viewport.height(slider.h);
1674            slider.setProps(sliderOffset * slider.h, "init");
1675          }, (type === "init") ? 100 : 0);
1676        } else {
1677          slider.container.width((slider.count + slider.cloneCount) * 200 + "%");
1678          slider.setProps(sliderOffset * slider.computedW, "init");
1679          setTimeout(function(){
1680            slider.doMath();
1681            slider.newSlides.css({"width": slider.computedW, "float": "left", "display": "block"});
1682            // SMOOTH HEIGHT:
1683            if (slider.vars.smoothHeight) methods.smoothHeight();
1684          }, (type === "init") ? 100 : 0);
1685        }
1686      } else { // FADE:
1687        slider.slides.css({"width": "100%", "float": "left", "marginRight": "-100%", "position": "relative"});
1688        if (type === "init") {
1689          if (!touch) {
1690            //slider.slides.eq(slider.currentSlide).fadeIn(slider.vars.animationSpeed, slider.vars.easing);
1691            slider.slides.css({ "opacity": 0, "display": "block", "zIndex": 1 }).eq(slider.currentSlide).css({"zIndex": 2}).animate({"opacity": 1},slider.vars.animationSpeed,slider.vars.easing);
1692          } else {
1693            slider.slides.css({ "opacity": 0, "display": "block", "webkitTransition": "opacity " + slider.vars.animationSpeed / 1000 + "s ease", "zIndex": 1 }).eq(slider.currentSlide).css({ "opacity": 1, "zIndex": 2});
1694          }
1695        }
1696        // SMOOTH HEIGHT:
1697        if (slider.vars.smoothHeight) methods.smoothHeight();
1698      }
1699      // !CAROUSEL:
1700      // CANDIDATE: active slide
1701      if (!carousel) slider.slides.removeClass(namespace + "active-slide").eq(slider.currentSlide).addClass(namespace + "active-slide");
1702
1703      //FlexSlider: init() Callback
1704      slider.vars.init(slider);
1705    };
1706
1707    slider.doMath = function() {
1708      var slide = slider.slides.first(),
1709          slideMargin = slider.vars.itemMargin,
1710          minItems = slider.vars.minItems,
1711          maxItems = slider.vars.maxItems;
1712
1713      slider.w = (slider.viewport===undefined) ? slider.width() : slider.viewport.width();
1714      slider.h = slide.height();
1715      slider.boxPadding = slide.outerWidth() - slide.width();
1716
1717      // CAROUSEL:
1718      if (carousel) {
1719        slider.itemT = slider.vars.itemWidth + slideMargin;
1720        slider.minW = (minItems) ? minItems * slider.itemT : slider.w;
1721        slider.maxW = (maxItems) ? (maxItems * slider.itemT) - slideMargin : slider.w;
1722        slider.itemW = (slider.minW > slider.w) ? (slider.w - (slideMargin * (minItems - 1)))/minItems :
1723                       (slider.maxW < slider.w) ? (slider.w - (slideMargin * (maxItems - 1)))/maxItems :
1724                       (slider.vars.itemWidth > slider.w) ? slider.w : slider.vars.itemWidth;
1725
1726        slider.visible = Math.floor(slider.w/(slider.itemW));
1727        slider.move = (slider.vars.move > 0 && slider.vars.move < slider.visible ) ? slider.vars.move : slider.visible;
vendor: 5,363 bytes, lines 1728-1851
1728        slider.pagingCount = Math.ceil(((slider.count - slider.visible)/slider.move) + 1);
1729        slider.last =  slider.pagingCount - 1;
1730        slider.limit = (slider.pagingCount === 1) ? 0 :
1731                       (slider.vars.itemWidth > slider.w) ? (slider.itemW * (slider.count - 1)) + (slideMargin * (slider.count - 1)) : ((slider.itemW + slideMargin) * slider.count) - slider.w - slideMargin;
1732      } else {
1733        slider.itemW = slider.w;
1734        slider.pagingCount = slider.count;
1735        slider.last = slider.count - 1;
1736      }
1737      slider.computedW = slider.itemW - slider.boxPadding;
1738    };
1739
1740    slider.update = function(pos, action) {
1741      slider.doMath();
1742
1743      // update currentSlide and slider.animatingTo if necessary
1744      if (!carousel) {
1745        if (pos < slider.currentSlide) {
1746          slider.currentSlide += 1;
1747        } else if (pos <= slider.currentSlide && pos !== 0) {
1748          slider.currentSlide -= 1;
1749        }
1750        slider.animatingTo = slider.currentSlide;
1751      }
1752
1753      // update controlNav
1754      if (slider.vars.controlNav && !slider.manualControls) {
1755        if ((action === "add" && !carousel) || slider.pagingCount > slider.controlNav.length) {
1756          methods.controlNav.update("add");
1757        } else if ((action === "remove" && !carousel) || slider.pagingCount < slider.controlNav.length) {
1758          if (carousel && slider.currentSlide > slider.last) {
1759            slider.currentSlide -= 1;
1760            slider.animatingTo -= 1;
1761          }
1762          methods.controlNav.update("remove", slider.last);
1763        }
1764      }
1765      // update directionNav
1766      if (slider.vars.directionNav) methods.directionNav.update();
1767
1768    };
1769
1770    slider.addSlide = function(obj, pos) {
1771      var $obj = $(obj);
1772
1773      slider.count += 1;
1774      slider.last = slider.count - 1;
1775
1776      // append new slide
1777      if (vertical && reverse) {
1778        (pos !== undefined) ? slider.slides.eq(slider.count - pos).after($obj) : slider.container.prepend($obj);
1779      } else {
1780        (pos !== undefined) ? slider.slides.eq(pos).before($obj) : slider.container.append($obj);
1781      }
1782
1783      // update currentSlide, animatingTo, controlNav, and directionNav
1784      slider.update(pos, "add");
1785
1786      // update slider.slides
1787      slider.slides = $(slider.vars.selector + ':not(.clone)', slider);
1788      // re-setup the slider to accomdate new slide
1789      slider.setup();
1790
1791      //FlexSlider: added() Callback
1792      slider.vars.added(slider);
1793    };
1794    slider.removeSlide = function(obj) {
1795      var pos = (isNaN(obj)) ? slider.slides.index($(obj)) : obj;
1796
1797      // update count
1798      slider.count -= 1;
1799      slider.last = slider.count - 1;
1800
1801      // remove slide
1802      if (isNaN(obj)) {
1803        $(obj, slider.slides).remove();
1804      } else {
1805        (vertical && reverse) ? slider.slides.eq(slider.last).remove() : slider.slides.eq(obj).remove();
1806      }
1807
1808      // update currentSlide, animatingTo, controlNav, and directionNav
1809      slider.doMath();
1810      slider.update(pos, "remove");
1811
1812      // update slider.slides
1813      slider.slides = $(slider.vars.selector + ':not(.clone)', slider);
1814      // re-setup the slider to accomdate new slide
1815      slider.setup();
1816
1817      // FlexSlider: removed() Callback
1818      slider.vars.removed(slider);
1819    };
1820
1821    //FlexSlider: Initialize
1822    methods.init();
1823  };
1824
1825  // Ensure the slider isn't focussed if the window loses focus.
1826  $( window ).blur( function ( e ) {
1827    focused = false;
1828  }).focus( function ( e ) {
1829    focused = true;
1830  });
1831
1832  //FlexSlider: Default Settings
1833  $.flexslider.defaults = {
1834    namespace: "flex-",             //{NEW} String: Prefix string attached to the class of every element generated by the plugin
1835    selector: ".slides > li",       //{NEW} Selector: Must match a simple pattern. '{container} > {slide}' -- Ignore pattern at your own peril
1836    animation: "fade",              //String: Select your animation type, "fade" or "slide"
1837    easing: "swing",                //{NEW} String: Determines the easing method used in jQuery transitions. jQuery easing plugin is supported!
1838    direction: "horizontal",        //String: Select the sliding direction, "horizontal" or "vertical"
1839    reverse: false,                 //{NEW} Boolean: Reverse the animation direction
1840    animationLoop: true,            //Boolean: Should the animation loop? If false, directionNav will received "disable" classes at either end
1841    smoothHeight: false,            //{NEW} Boolean: Allow height of the slider to animate smoothly in horizontal mode
1842    startAt: 0,                     //Integer: The slide that the slider should start on. Array notation (0 = first slide)
1843    slideshow: true,                //Boolean: Animate slider automatically
1844    slideshowSpeed: 7000,           //Integer: Set the speed of the slideshow cycling, in milliseconds
1845    animationSpeed: 600,            //Integer: Set the speed of animations, in milliseconds
1846    initDelay: 0,                   //{NEW} Integer: Set an initialization delay, in milliseconds
1847    randomize: false,               //Boolean: Randomize slide order
1848    thumbCaptions: false,           //Boolean: Whether or not to put captions on thumbnails when using the "thumbnails" controlNav.
1849
1850    // Usability features
1851    pauseOnAction: true,            //Boolean: Pause the slideshow when interacting with control elements, highly recommended.
1852    pauseOnHover: false,            //Boolean: Pause the slideshow when hovering over slider, then resume when no longer hovering
1853    pauseInvisible: true,   		//{NEW} Boolean: Pause the slideshow when tab is invisible, resume when visible. Provides better UX, lower CPU usage.
1854    useCSS: true,                   //{NEW} Boolean: Slider will use CSS3 transitions if available
1855    touch: true,                    //{NEW} Boolean: Allow touch swipe navigation of the slider on touch-enabled devices
1856    video: false,                   //{NEW} Boolean: If using video in the slider, will prevent CSS3 3D Transforms to avoid graphical glitches
1857
1858    // Primary Controls
1859    controlNav: true,               //Boolean: Create navigation for paging control of each clide? Note: Leave true for manualControls usage
1860    directionNav: true,             //Boolean: Create navigation for previous/next navigation? (true/false)
1861    prevText: "Previous",           //String: Set the text for the "previous" directionNav item
1862    nextText: "Next",               //String: Set the text for the "next" directionNav item
1863
1864    // Secondary Navigation
1865    keyboard: true,                 //Boolean: Allow slider navigating via keyboard left/right keys
1866    multipleKeyboard: false,        //{NEW} Boolean: Allow keyboard navigation to affect multiple sliders. Default behavior cuts out keyboard navigation with more than one slider present.
1867    mousewheel: false,              //{UPDATED} Boolean: Requires jquery.mousewheel.js (https://github.com/brandonaaron/jquery-mousewheel) - Allows slider navigating via mousewheel
1868    pausePlay: false,               //Boolean: Create pause/play dynamic element
1869    pauseText: "Pause",             //String: Set the text for the "pause" pausePlay item
1870    playText: "Play",               //String: Set the text for the "play" pausePlay item
1871
1872    // Special properties
1873    controlsContainer: "",          //{UPDATED} jQuery Object/Selector: Declare which container the navigation elements should be appended too. Default container is the FlexSlider element. Example use would be $(".flexslider-container"). Property is ignored if given element is not found.
1874    manualControls: "",             //{UPDATED} jQuery Object/Selector: Declare custom control navigation. Examples would be $(".flex-control-nav li") or "#tabs-nav li img", etc. The number of elements in your controlNav should match the number of slides/tabs.
1875    sync: "",                       //{NEW} Selector: Mirror the actions performed on this slider with another slider. Use with care.
1876    asNavFor: "",                   //{NEW} Selector: Internal property exposed for turning the slider into a thumbnail navigation for another slider
1877
1878    // Carousel Options
1879    itemWidth: 0,                   //{NEW} Integer: Box-model width of individual carousel items, including horizontal borders and padding.
1880    itemMargin: 0,                  //{NEW} Integer: Margin between carousel items.
1881    minItems: 1,                    //{NEW} Integer: Minimum number of carousel items that should be visible. Items will resize fluidly when below this.
1882    maxItems: 0,                    //{NEW} Integer: Maxmimum number of carousel items that should be visible. Items will resize fluidly when above this limit.
1883    move: 0,                        //{NEW} Integer: Number of carousel items that should move on animation. If 0, slider will move all visible items.
1884    allowOneSlide: true,           //{NEW} Boolean: Whether or not to allow a slider comprised of a single slide
1885
1886    // Callback API
1887    start: function(){},            //Callback: function(slider) - Fires when the slider loads the first slide
1888    before: function(){},           //Callback: function(slider) - Fires asynchronously with each slider animation
1889    after: function(){},            //Callback: function(slider) - Fires after each slider animation completes
1890    end: function(){},              //Callback: function(slider) - Fires when the slider reaches the last slide (asynchronous)
1891    added: function(){},            //{NEW} Callback: function(slider) - Fires after a slide is added
1892    removed: function(){},           //{NEW} Callback: function(slider) - Fires after a slide is removed
1893    init: function() {}             //{NEW}
1893 Callback: function(slider) - Fires after the slider is initially setup
1894  };
1895
1896  //FlexSlider: Plugin Function
1897  $.fn.flexslider = function(options) {
1898    if (options === undefined) options = {};
1899
1900    if (typeof options === "object") {
1901      return this.each(function() {
1902        var $this = $(this),
1903            selector = (options.selector) ? options.selector : ".slides > li",
1904            $slides = $this.find(selector);
1905
1906      if ( ( $slides.length === 1 && options.allowOneSlide === true ) || $slides.length === 0 ) {
1907          $slides.fadeIn(400);
1908          if (options.start) options.start($this);
1909        } else if ($this.data('flexslider') === undefined) {
1910          new $.flexslider(this, options);
1911        }
1912      });
1913    } else {
1914      // Helper strings to quickly perform functions on the slider
1915      var $slider = $(this).data('flexslider');
1916      switch (options) {
1917        case "play": $slider.play(); break;
1918        case "pause": $slider.pause(); break;
1919        case "stop": $slider.stop(); break;
1920        case "next": $slider.flexAnimate($slider.getTarget("next"), true); break;
1921        case "prev":
1922        case "previous": $slider.flexAnimate($slider.getTarget("prev"), true); break;
1923        default: if (typeof options === "number") $slider.flexAnimate(options, true);
1924      }
1925    }
1926  };
1927})(jQuery);
1928;
1929/*! This file is auto-generated */
1930/*!
1931 * imagesLoaded PACKAGED v5.0.0
1932 * JavaScript is all like "You images are done yet or what?"
1933 * MIT License
1934 */
1935!function(t,e){"object"==typeof module&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,(function(){function t(){}let e=t.prototype;return e.on=function(t,e){if(!t||!e)return this;let i=this._events=this._events||{},s=i[t]=i[t]||[];return s.includes(e)||s.push(e),this},e.once=function(t,e){if(!t||!e)return this;this.on(t,e);let i=this._onceEvents=this._onceEvents||{};return(i[t]=i[t]||{})[e]=!0,this},e.off=function(t,e){let i=this._events&&this._events[t];if(!i||!i.length)return this;let s=i.indexOf(e);return-1!=s&&i.splice(s,1),this},e.emitEvent=function(t,e){let i=this._events&&this._events[t];if(!i||!i.length)return this;i=i.slice(0),e=e||[];let s=this._onceEvents&&this._onceEvents[t];for(let n of i){s&&s[n]&&(this.off(t,n),delete s[n]),n.apply(this,e)}return this},e.allOff=function(){return delete this._events,delete this._onceEvents,this},t})),
1936/*!
1937 * imagesLoaded v5.0.0
1938 * JavaScript is all like "You images are done yet or what?"
1939 * MIT License
1940 */
1941function(t,e){"object"==typeof module&&module.exports?module.exports=e(t,require("ev-emitter")):t.imagesLoaded=e(t,t.EvEmitter)}("undefined"!=typeof window?window:this,(function(t,e){let i=t.jQuery,s=t.console;
vendor: 4,185 bytes, lines 1941-1942
1941function n(t,e,o){if(!(this instanceof n))return new n(t,e,o);let r=t;var h;("string"==typeof t&&(r=document.querySelectorAll(t)),r)?(this.elements=(h=r,Array.isArray(h)?h:"object"==typeof h&&"number"==typeof h.length?[...h]:[h]),this.options={},"function"==typeof e?o=e:Object.assign(this.options,e),o&&this.on("always",o),this.getImages(),i&&(this.jqDeferred=new i.Deferred),setTimeout(this.check.bind(this))):s.error(`Bad element for imagesLoaded ${r||t}`)}n.prototype=Object.create(e.prototype),n.prototype.getImages=function(){this.images=[],this.elements.forEach(this.addElementImages,this)};const o=[1,9,11];n.prototype.addElementImages=function(t){"IMG"===t.nodeName&&this.addImage(t),!0===this.options.background&&this.addElementBackgroundImages(t);let{nodeType:e}=t;if(!e||!o.includes(e))return;let i=t.querySelectorAll("img");for(let t of i)this.addImage(t);if("string"==typeof this.options.background){let e=t.querySelectorAll(this.options.background);for(let t of e)this.addElementBackgroundImages(t)}};const r=/url\((['"])?(.*?)\1\)/gi;function h(t){this.img=t}function d(t,e){this.url=t,this.element=e,this.img=new Image}return n.prototype.addElementBackgroundImages=function(t){let e=getComputedStyle(t);if(!e)return;let i=r.exec(e.backgroundImage);for(;null!==i;){let s=i&&i[2];s&&this.addBackground(s,t),i=r.exec(e.backgroundImage)}},n.prototype.addImage=function(t){let e=new h(t);this.images.push(e)},n.prototype.addBackground=function(t,e){let i=new d(t,e);this.images.push(i)},n.prototype.check=function(){if(this.progressedCount=0,this.hasAnyBroken=!1,!this.images.length)return void this.complete();let t=(t,e,i)=>{setTimeout((()=>{this.progress(t,e,i)}))};this.images.forEach((function(e){e.once("progress",t),e.check()}))},n.prototype.progress=function(t,e,i){this.progressedCount++,this.hasAnyBroken=this.hasAnyBroken||!t.isLoaded,this.emitEvent("progress",[this,t,e]),this.jqDeferred&&this.jqDeferred.notify&&this.jqDeferred.notify(this,t),this.progressedCount===this.images.length&&this.complete(),this.options.debug&&s&&s.log(`progress: ${i}`,t,e)},n.prototype.complete=function(){let t=this.hasAnyBroken?"fail":"done";if(this.isComplete=!0,this.emitEvent(t,[this]),this.emitEvent("always",[this]),this.jqDeferred){let t=this.hasAnyBroken?"reject":"resolve";this.jqDeferred[t](this)}},h.prototype=Object.create(e.prototype),h.prototype.check=function(){this.getIsImageComplete()?this.confirm(0!==this.img.naturalWidth,"naturalWidth"):(this.proxyImage=new Image,this.img.crossOrigin&&(this.proxyImage.crossOrigin=this.img.crossOrigin),this.proxyImage.addEventListener("load",this),this.proxyImage.addEventListener("error",this),this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.proxyImage.src=this.img.currentSrc||this.img.src)},h.prototype.getIsImageComplete=function(){return this.img.complete&&this.img.naturalWidth},h.prototype.confirm=function(t,e){this.isLoaded=t;let{parentNode:i}=this.img,s="PICTURE"===i.nodeName?i:this.img;this.emitEvent("progress",[this,s,e])},h.prototype.handleEvent=function(t){let e="on"+t.type;this[e]&&this[e](t)},h.prototype.onload=function(){this.confirm(!0,"onload"),this.unbindEvents()},h.prototype.onerror=function(){this.confirm(!1,"onerror"),this.unbindEvents()},h.prototype.unbindEvents=function(){this.proxyImage.removeEventListener("load",this),this.proxyImage.removeEventListener("error",this),this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},d.prototype=Object.create(h.prototype),d.prototype.check=function(){this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.img.src=this.url,this.getIsImageComplete()&&(this.confirm(0!==this.img.naturalWidth,"naturalWidth"),this.unbindEvents())},d.prototype.unbindEvents=function(){this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},d.prototype.confirm=function(t,e){this.isLoaded=t,this.emitEvent("progress",[this,this.element,e])},n.makeJQueryPlugin=function(e){(e=e||t.jQuery)&&(i=e,i.fn.imagesLoaded=function(t,e){return new n(this,t,e).jqDeferred.promise(i(this))})},n.makeJQueryPlugin(),n}));;
1942/*! This file is auto-generated */
vendor: 24,103 bytes, lines 1943-1951
1943/*!
1944 * Masonry PACKAGED v4.2.2
1945 * Cascading grid layout library
1946 * https://masonry.desandro.com
1947 * MIT License
1948 * by David DeSandro
1949 */
1950
1951!function(t,e){"function"==typeof define&&define.amd?define("jquery-bridget/jquery-bridget",["jquery"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("jquery")):t.jQueryBridget=e(t,t.jQuery)}(window,function(t,e){"use strict";function i(i,r,a){function h(t,e,n){var o,r="$()."+i+'("'+e+'")';return t.each(function(t,h){var u=a.data(h,i);if(!u)return void s(i+" not initialized. Cannot call methods, i.e. "+r);var d=u[e];if(!d||"_"==e.charAt(0))return void s(r+" is not a valid method");var l=d.apply(u,n);o=void 0===o?l:o}),void 0!==o?o:t}function u(t,e){t.each(function(t,n){var o=a.data(n,i);o?(o.option(e),o._init()):(o=new r(n,e),a.data(n,i,o))})}a=a||e||t.jQuery,a&&(r.prototype.option||(r.prototype.option=function(t){a.isPlainObject(t)&&(this.options=a.extend(!0,this.options,t))}),a.fn[i]=function(t){if("string"==typeof t){var e=o.call(arguments,1);return h(this,t,e)}return u(this,t),this},n(a))}function n(t){!t||t&&t.bridget||(t.bridget=i)}var o=Array.prototype.slice,r=t.console,s="undefined"==typeof r?function(){}:function(t){r.error(t)};return n(e||t.jQuery),i}),function(t,e){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",e):"object"==typeof module&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,function(){function t(){}var e=t.prototype;return e.on=function(t,e){if(t&&e){var i=this._events=this._events||{},n=i[t]=i[t]||[];return-1==n.indexOf(e)&&n.push(e),this}},e.once=function(t,e){if(t&&e){this.on(t,e);var i=this._onceEvents=this._onceEvents||{},n=i[t]=i[t]||{};return n[e]=!0,this}},e.off=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var n=i.indexOf(e);return-1!=n&&i.splice(n,1),this}},e.emitEvent=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){i=i.slice(0),e=e||[];for(var n=this._onceEvents&&this._onceEvents[t],o=0;o<i.length;o++){var r=i[o],s=n&&n[r];s&&(this.off(t,r),delete n[r]),r.apply(this,e)}return this}},e.allOff=function(){delete this._events,delete this._onceEvents},t}),function(t,e){"function"==typeof define&&define.amd?define("get-size/get-size",e):"object"==typeof module&&module.exports?module.exports=e():t.getSize=e()}(window,function(){"use strict";function t(t){var e=parseFloat(t),i=-1==t.indexOf("%")&&!isNaN(e);return i&&e}function e(){}function i(){for(var t={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},e=0;u>e;e++){var i=h[e];t[i]=0}return t}function n(t){var e=getComputedStyle(t);return e||a("Style returned "+e+". Are you running this code in a hidden iframe on Firefox? See https://bit.ly/getsizebug1"),e}function o(){if(!d){d=!0;var e=document.createElement("div");e.style.width="200px",e.style.padding="1px 2px 3px 4px",e.style.borderStyle="solid",e.style.borderWidth="1px 2px 3px 4px",e.style.boxSizing="border-box";var i=document.body||document.documentElement;i.appendChild(e);var o=n(e);s=200==Math.round(t(o.width)),r.isBoxSizeOuter=s,i.removeChild(e)}}function r(e){if(o(),"string"==typeof e&&(e=document.querySelector(e)),e&&"object"==typeof e&&e.nodeType){var r=n(e);if("none"==r.display)return i();var a={};a.width=e.offsetWidth,a.height=e.offsetHeight;for(var d=a.isBorderBox="border-box"==r.boxSizing,l=0;u>l;l++){var c=h[l],f=r[c],m=parseFloat(f);a[c]=isNaN(m)?0:m}var p=a.paddingLeft+a.paddingRight,g=a.paddingTop+a.paddingBottom,y=a.marginLeft+a.marginRight,v=a.marginTop+a.marginBottom,_=a.borderLeftWidth+a.borderRightWidth,z=a.borderTopWidth+a.borderBottomWidth,E=d&&s,b=t(r.width);b!==!1&&(a.width=b+(E?0:p+_));var x=t(r.height);return x!==!1&&(a.height=x+(E?0:g+z)),a.innerWidth=a.width-(p+_),a.innerHeight=a.height-(g+z),a.outerWidth=a.width+y,a.outerHeight=a.height+v,a}}var s,a="undefined"==typeof console?e:function(t){console.error(t)},h=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"],u=h.length,d=!1;return r}),function(t,e){"use strict";"function"==typeof define&&define.amd?define("desandro-matches-selector/matches-selector",e):"object"==typeof module&&module.exports?module.exports=e():t.matchesSelector=e()}(window,function(){"use strict";var t=function(){var t=window.Element.prototype;if(t.matches)return"matches";if(t.matchesSelector)return"matchesSelector";for(var e=["webkit","moz","ms","o"],i=0;i<e.length;i++){var n=e[i],o=n+"MatchesSelector";if(t[o])return o}}();return function(e,i){return e[t](i)}}),function(t,e){"function"==typeof define&&define.amd?define("fizzy-ui-utils/utils",["desandro-matches-selector/matches-selector"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("desandro-matches-selector")):t.fizzyUIUtils=e(t,t.matchesSelector)}(window,function(t,e){var i={};i.extend=function(t,e){for(var i in e)t[i]=e[i];return t},i.modulo=function(t,e){return(t%e+e)%e};var n=Array.prototype.slice;i.makeArray=function(t){if(Array.isArray(t))return t;if(null===t||void 0===t)return[];var e="object"==typeof t&&"number"==typeof t.length;return e?n.call(t):[t]},i.removeFrom=function(t,e){var i=t.indexOf(e);-1!=i&&t.splice(i,1)},i.getParent=function(t,i){for(;t.parentNode&&t!=document.body;)if(t=t.parentNode,e(t,i))return t},i.getQueryElement=function(t){return"string"==typeof t?document.querySelector(t):t},i.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},i.filterFindElements=function(t,n){t=i.makeArray(t);var o=[];return t.forEach(function(t){if(t instanceof HTMLElement){if(!n)return void o.push(t);e(t,n)&&o.push(t);for(var i=t.querySelectorAll(n),r=0;r<i.length;r++)o.push(i[r])}}),o},i.debounceMethod=function(t,e,i){i=i||100;var n=t.prototype[e],o=e+"Timeout";t.prototype[e]=function(){var t=this[o];clearTimeout(t);var e=arguments,r=this;this[o]=setTimeout(function(){n.apply(r,e),delete r[o]},i)}},i.docReady=function(t){var e=document.readyState;"complete"==e||"interactive"==e?setTimeout(t):document.addEventListener("DOMContentLoaded",t)},i.toDashed=function(t){return t.replace(/(.)([A-Z])/g,function(t,e,i){return e+"-"+i}).toLowerCase()};var o=t.console;return i.htmlInit=function(e,n){i.docReady(function(){var r=i.toDashed(n),s="data-"+r,a=document.querySelectorAll("["+s+"]"),h=document.querySelectorAll(".js-"+r),u=i.makeArray(a).concat(i.makeArray(h)),d=s+"-options",l=t.jQuery;u.forEach(function(t){var i,r=t.getAttribute(s)||t.getAttribute(d);try{i=r&&JSON.parse(r)}catch(a){return void(o&&o.error("Error parsing "+s+" on "+t.className+": "+a))}var h=new e(t,i);l&&l.data(t,n,h)})})},i}),function(t,e){"function"==typeof define&&define.amd?define("outlayer/item",["ev-emitter/ev-emitter","get-size/get-size"],e):"object"==typeof module&&module.exports?module.exports=e(require("ev-emitter"),require("get-size")):(t.Outlayer={},t.Outlayer.Item=e(t.EvEmitter,t.getSize))}(window,function(t,e){"use strict";function i(t){for(var e in t)return!1;return e=null,!0}function n(t,e){t&&(this.element=t,this.layout=e,this.position={x:0,y:0},this._create())}function o(t){return t.replace(/([A-Z])/g,function(t){return"-"+t.toLowerCase()})}var r=document.documentElement.style,s="string"==typeof r.transition?"transition":"WebkitTransition",a="string"==typeof r.transform?"transform":"WebkitTransform",h={WebkitTransition:"webkitTransitionEnd",transition:"transitionend"}[s],u={transform:a,transition:s,transitionDuration:s+"Duration",transitionProperty:s+"Property",transitionDelay:s+"Delay"},d=n.prototype=Object.create(t.prototype);d.constructor=n,d._create=function(){this._transn={ingProperties:{},clean:{},onEnd:{}},this.css({position:"absolute"})},d.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},d.getSize=function(){this.size=e(this.element)},d.css=function(t){var e=this.element.style;for(var i in t){var n=u[i]||i;e[n]=t[i]}},d.getPosition=function(){var t=getComputedStyle(this.element),e=this.layout._getOption("originLeft"),i=this.layout._getOption("originTop"),n=t[e?"left":"right"],o=t[i?"top":"bottom"],r=parseFloat(n),s=parseFloat(o),a=this.layout.size;-1!=n.indexOf("%")&&(r=r/100*a.width),-1!=o.indexOf("%")&&(s=s/100*a.height),r=isNaN(r)?0:r,s=isNaN(s)?0:s,r-=e?a.paddingLeft:a.paddingRight,s-=i?a.paddingTop:a.paddingBottom,this.position.x=r,this.position.y=s},d.layoutPosition=function(){var t=this.layout.size,e={},i=this.layout._getOption("originLeft"),n=this.layout._getOption("originTop"),o=i?"paddingLeft":"paddingRight",r=i?"left":"right",s=i?"right":"left",a=this.position.x+t[o];e[r]=this.getXValue(a),e[s]="";var h=n?"paddingTop":"paddingBottom",u=n?"top":"bottom",d=n?"bottom":"top",l=this.position.y+t[h];e[u]=this.getYValue(l),e[d]="",this.css(e),this.emitEvent("layout",[this])},d.getXValue=function(t){var e=this.layout._getOption("horizontal");return this.layout.options.percentPosition&&!e?t/this.layout.size.width*100+"%":t+"px"},d.getYValue=function(t){var e=this.layout._getOption("horizontal");return this.layout.options.percentPosition&&e?t/this.layout.size.height*100+"%":t+"px"},d._transitionTo=function(t,e){this.getPosition();var i=this.position.x,n=this.position.y,o=t==this.position.x&&e==this.position.y;if(this.setPosition(t,e),o&&!this.isTransitioning)return void this.layoutPosition();var r=t-i,s=e-n,a={};a.transform=this.getTranslate(r,s),this.transition({to:a,onTransitionEnd:{transform:this.layoutPosition},isCleaning:!0})},d.getTranslate=function(t,e){var i=this.layout._getOption("originLeft"),n=this.layout._getOption("originTop");return t=i?t:-t,e=n?e:-e,"translate3d("+t+"px, "+e+"px, 0)"},d.goTo=function(t,e){this.setPosition(t,e),this.layoutPosition()},d.moveTo=d._transitionTo,d.setPosition=function(t,e){this.position.x=parseFloat(t),this.position.y=parseFloat(e)},d._nonTransition=function(t){this.css(t.to),t.isCleaning&&this._removeStyles(t.to);for(var e in t.onTransitionEnd)t.onTransitionEnd[e].call(this)},d.transition=function(t){if(!parseFloat(this.layout.options.transitionDuration))return void this._nonTransition(t);var e=this._transn;for(var i in t.onTransitionEnd)e.onEnd[i]=t.onTransitionEnd[i];for(i in t.to)e.ingProperties[i]=!0,t.isCleaning&&(e.clean[i]=!0);if(t.from){this.css(t.from);var n=this.element.offsetHeight;n=null}this.enableTransition(t.to),this.css(t.to),this.isTransitioning=!0};var l="opacity,"+o(a);d.enableTransition=function(){if(!this.isTransitioning){var t=this.layout.options.transitionDuration;t="number"==typeof t?t+"ms":t,this.css({transitionProperty:l,transitionDuration:t,transitionDelay:this.staggerDelay||0}),this.element.addEventListener(h,this,!1)}},d.onwebkitTransitionEnd=function(t){this.ontransitionend(t)},d.onotransitionend=function(t){this.ontransitionend(t)};var c={"-webkit-transform":"transform"};d.ontransitionend=function(t){if(t.target===this.element){var e=this._transn,n=c[t.propertyName]||t.propertyName;if(delete e.ingProperties[n],i(e.ingProperties)&&this.disableTransition(),n in e.clean&&(this.element.style[t.propertyName]="",delete e.clean[n]),n in e.onEnd){var o=e.onEnd[n];o.call(this),delete e.onEnd[n]}this.emitEvent("transitionEnd",[this])}},d.disableTransition=function(){this.removeTransitionStyles(),this.element.removeEventListener(h,this,!1),this.isTransitioning=!1},d._removeStyles=function(t){var e={};for(var i in t)e[i]="";this.css(e)};var f={transitionProperty:"",transitionDuration:"",transitionDelay:""};return d.removeTransitionStyles=function(){this.css(f)},d.stagger=function(t){t=isNaN(t)?0:t,this.staggerDelay=t+"ms"},d.removeElem=function(){this.element.parentNode.removeChild(this.element),this.css({display:""}),this.emitEvent("remove",[this])},d.remove=function(){return s&&parseFloat(this.layout.options.transitionDuration)?(this.once("transitionEnd",function(){this.removeElem()}),void this.hide()):void this.removeElem()},d.reveal=function(){delete this.isHidden,this.css({display:""});var t=this.layout.options,e={},i=this.getHideRevealTransitionEndProperty("visibleStyle");e[i]=this.onRevealTransitionEnd,this.transition({from:t.hiddenStyle,to:t.visibleStyle,isCleaning:!0,onTransitionEnd:e})},d.onRevealTransitionEnd=function(){this.isHidden||this.emitEvent("reveal")},d.getHideRevealTransitionEndProperty=function(t){var e=this.layout.options[t];if(e.opacity)return"opacity";for(var i in e)return i},d.hide=function(){this.isHidden=!0,this.css({display:""});var t=this.layout.options,e={},i=this.getHideRevealTransitionEndProperty("hiddenStyle");e[i]=this.onHideTransitionEnd,this.transition({from:t.visibleStyle,to:t.hiddenStyle,isCleaning:!0,onTransitionEnd:e})},d.onHideTransitionEnd=function(){this.isHidden&&(this.css({display:"none"}),this.emitEvent("hide"))},d.destroy=function(){this.css({position:"",left:"",right:"",top:"",bottom:"",transition:"",transform:""})},n}),function(t,e){"use strict";"function"==typeof define&&define.amd?define("outlayer/outlayer",["ev-emitter/ev-emitter","get-size/get-size","fizzy-ui-utils/utils","./item"],function(i,n,o,r){return e(t,i,n,o,r)}):"object"==typeof module&&module.exports?module.exports=e(t,require("ev-emitter"),require("get-size"),require("fizzy-ui-utils"),require("./item")):t.Outlayer=e(t,t.EvEmitter,t.getSize,t.fizzyUIUtils,t.Outlayer.Item)}(window,function(t,e,i,n,o){"use strict";function r(t,e){var i=n.getQueryElement(t);if(!i)return void(h&&h.error("Bad element for "+this.constructor.namespace+": "+(i||t)));this.element=i,u&&(this.$element=u(this.element)),this.options=n.extend({},this.constructor.defaults),this.option(e);var o=++l;this.element.outlayerGUID=o,c[o]=this,this._create();var r=this._getOption("initLayout");r&&this.layout()}function s(t){function e(){t.apply(this,arguments)}return e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e}function a(t){if("number"==typeof t)return t;var e=t.match(/(^\d*\.?\d*)(\w*)/),i=e&&e[1],n=e&&e[2];if(!i.length)return 0;i=parseFloat(i);var o=m[n]||1;return i*o}var h=t.console,u=t.jQuery,d=function(){},l=0,c={};r.namespace="outlayer",r.Item=o,r.defaults={containerStyle:{position:"relative"},initLayout:!0,originLeft:!0,originTop:!0,resize:!0,resizeContainer:!0,transitionDuration:"0.4s",hiddenStyle:{opacity:0,transform:"scale(0.001)"},visibleStyle:{opacity:1,transform:"scale(1)"}};var f=r.prototype;n.extend(f,e.prototype),f.option=function(t){n.extend(this.options,t)},f._getOption=function(t){var e=this.constructor.compatOptions[t];return e&&void 0!==this.options[e]?this.options[e]:this.options[t]},r.compatOptions={initLayout:"isInitLayout",horizontal:"isHorizontal",layoutInstant:"isLayoutInstant",originLeft:"isOriginLeft",originTop:"isOriginTop",resize:"isResizeBound",resizeContainer:"isResizingContainer"},f._create=function(){this.reloadItems(),this.stamps=[],this.stamp(this.options.stamp),n.extend(this.element.style,this.options.containerStyle);var t=this._getOption("resize");t&&this.bindResize()},f.reloadItems=function(){this.items=this._itemize(this.element.children)},f._itemize=function(t){for(var e=this._filterFindItemElements(t),i=this.constructor.Item,n=[],o=0;o<e.length;o++){var r=e[o],s=new i(r,this);n.push(s)}return n},f._filterFindItemElements=function(t){return n.filterFindElements(t,this.options.itemSelector)},f.getItemElements=function(){return this.items.map(function(t){return t.element})},f.layout=function(){this._resetLayout(),this._manageStamps();var t=this._getOption("layoutInstant"),e=void 0!==t?t:!this._isLayoutInited;this.layoutItems(this.items,e),this._isLayoutInited=!0},f._init=f.layout,f._resetLayout=function(){this.getSize()},f.getSize=function(){this.size=i(this.element)},f._getMeasurement=function(t,e){var n,o=this.options[t];o?("string"==typeof o?n=this.element.querySelector(o):o instanceof HTMLElement&&(n=o),this[t]=n?i(n)[e]:o):this[t]=0},f.layoutItems=function(t,e){t=this._getItemsForLayout(t),this._layoutItems(t,e),this._postLayout()},f._getItemsForLayout=function(t){return t.filter(function(t){return!t.isIgnored})},f._layoutItems=function(t,e){if(this._emitCompleteOnItems("layout",t),t&&t.length){var i=[];t.forEach(function(t){var n=this._getItemLayoutPosition(t);n.item=t,n.isInstant=e||t.isLayoutInstant,i.push(n)},this),this._processLayoutQueue(i)}},f._getItemLayoutPosition=function(){return{x:0,y:0}},f._processLayoutQueue=function(t){this.updateStagger(),t.forEach(function(t,e){this._positionItem(t.item,t.x,t.y,t.isInstant,e)},this)},f.updateStagger=function(){var t=this.options.stagger;return null===t||void 0===t?void(this.stagger=0):(this.stagger=a(t),this.stagger)},f._positionItem=function(t,e,i,n,o){n?t.goTo(e,i):(t.stagger(o*this.stagger),t.moveTo(e,i))},f._postLayout=function(){this.resizeContainer()},f.resizeContainer=function(){var t=this._getOption("resizeContainer");if(t){var e=this._getContainerSize();e&&(this._setContainerMeasure(e.width,!0),this._setContainerMeasure(e.height,!1))}},f._getContainerSize=d,f._setContainerMeasure=function(t,e){if(void 0!==t){var i=this.size;i.isBorderBox&&(t+=e?i.paddingLeft+i.paddingRight+i.borderLeftWidth+i.borderRightWidth:i.paddingBottom+i.paddingTop+i.borderTopWidth+i.borderBottomWidth),t=Math.max(t,0),this.element.style[e?"width":"height"]=t+"px"}},f._emitCompleteOnItems=function(t,e){function i(){o.dispatchEvent(t+"Complete",null,[e])}function n(){s++,s==r&&i()}var o=this,r=e.length;if(!e||!r)return void i();var s=0;e.forEach(function(e){e.once(t,n)})},f.dispatchEvent=function(t,e,i){var n=e?[e].concat(i):i;if(this.emitEvent(t,n),u)if(this.$element=this.$element||u(this.element),e){var o=u.Event(e);o.type=t,this.$element.trigger(o,i)}else this.$element.trigger(t,i)},f.ignore=function(t){var e=this.getItem(t);e&&(e.isIgnored=!0)},f.unignore=function(t){var e=this.getItem(t);e&&delete e.isIgnored},f.stamp=function(t){t=this._find(t),t&&(this.stamps=this.stamps.concat(t),t.forEach(this.ignore,this))},f.unstamp=function(t){t=this._find(t),t&&t.forEach(function(t){n.removeFrom(this.stamps,t),this.unignore(t)},this)},f._find=function(t){return t?("string"==typeof t&&(t=this.element.querySelectorAll(t)),t=n.makeArray(t)):void 0},f._manageStamps=function(){this.stamps&&this.stamps.length&&(this._getBoundingRect(),this.stamps.forEach(this._manageStamp,this))},f._getBoundingRect=function(){var t=this.element.getBoundingClientRect(),e=this.size;this._boundingRect={left:t.left+e.paddingLeft+e.borderLeftWidth,top:t.top+e.paddingTop+e.borderTopWidth,right:t.right-(e.paddingRight+e.borderRightWidth),bottom:t.bottom-(e.paddingBottom+e.borderBottomWidth)}},f._manageStamp=d,f._getElementOffset=function(t){var e=t.getBoundingClientRect(),n=this._boundingRect,o=i(t),r={left:e.left-n.left-o.marginLeft,top:e.top-n.top-o.marginTop,right:n.right-e.right-o.marginRight,bottom:n.bottom-e.bottom-o.marginBottom};return r},f.handleEvent=n.handleEvent,f.bindResize=function(){t.addEventListener("resize",this),this.isResizeBound=!0},f.unbindResize=function(){t.removeEventListener("resize",this),this.isResizeBound=!1},f.onresize=function(){this.resize()},n.debounceMethod(r,"onresize",100),f.resize=function(){this.isResizeBound&&this.needsResizeLayout()&&this.layout()},f.needsResizeLayout=function(){var t=i(this.element),e=this.size&&t;return e&&t.innerWidth!==this.size.innerWidth},f.addItems=function(t){var e=this._itemize(t);return e.length&&(this.items=this.items.concat(e)),e},f.appended=function(t){var e=this.addItems(t);e.length&&(this.layoutItems(e,!0),this.reveal(e))},f.prepended=function(t){var e=this._itemize(t);if(e.length){var i=this.items.slice(0);this.items=e.concat(i),this._resetLayout(),this._manageStamps(),this.layoutItems(e,!0),this.reveal(e),this.layoutItems(i)}},f.reveal=function(t){if(this._emitCompleteOnItems("reveal",t),t&&t.length){var e=this.updateStagger();t.forEach(function(t,i){t.stagger(i*e),t.reveal()})}},f.hide=function(t){if(this._emitCompleteOnItems("hide",t),t&&t.length){var e=this.updateStagger();t.forEach(function(t,i){t.stagger(i*e),t.hide()})}},f.revealItemElements=function(t){var e=this.getItems(t);this.reveal(e)},f.hideItemElements=function(t){var e=this.getItems(t);this.hide(e)},f.getItem=function(t){for(var e=0;e<this.items.length;e++){var i=this.items[e];if(i.element==t)return i}},f.getItems=function(t){t=n.makeArray(t);var e=[];return t.forEach(function(t){var i=this.getItem(t);i&&e.push(i)},this),e},f.remove=function(t){var e=this.getItems(t);this._emitCompleteOnItems("remove",e),e&&e.length&&e.forEach(function(t){t.remove(),n.removeFrom(this.items,t)},this)},f.destroy=function(){var t=this.element.style;t.height="",t.position="",t.width="",this.items.forEach(function(t){t.destroy()}),this.unbindResize();var e=this.element.outlayerGUID;delete c[e],delete this.element.outlayerGUID,u&&u.removeData(this.element,this.constructor.namespace)},r.data=function(t){t=n.getQueryElement(t);var e=t&&t.outlayerGUID;return e&&c[e]},r.create=function(t,e){var i=s(r);return i.defaults=n.extend({},r.defaults),n.extend(i.defaults,e),i.compatOptions=n.extend({},r.compatOptions),i.namespace=t,i.data=r.data,i.Item=s(o),n.htmlInit(i,t),u&&u.bridget&&u.bridget(t,i),i};var m={ms:1,s:1e3};return r.Item=o,r}),function(t,e){"function"==typeof define&&define.amd?define(["outlayer/outlayer","get-size/get-size"],e):"object"==typeof module&&module.exports?module.exports=e(require("outlayer"),require("get-size")):t.Masonry=e(t.Outlayer,t.getSize)}(window,function(t,e){var i=t.create("masonry");i.compatOptions.fitWidth="isFitWidth";var n=i.prototype;return n._resetLayout=function(){this.getSize(),this._getMeasurement("columnWidth","outerWidth"),this._getMeasurement("gutter","outerWidth"),this.measureColumns(),this.colYs=[];for(var t=0;t<this.cols;t++)this.colYs.push(0);this.maxY=0,this.horizontalColIndex=0},n.measureColumns=function(){if(this.getContainerWidth(),!this.columnWidth){var t=this.items[0],i=t&&t.element;this.columnWidth=i&&e(i).outerWidth||this.containerWidth}var n=this.columnWidth+=this.gutter,o=this.containerWidth+this.gutter,r=o/n,s=n-o%n,a=s&&1>s?"round":"floor";r=Math[a](r),this.cols=Math.max(r,1)},n.getContainerWidth=function(){var t=this._getOption("fitWidth"),i=t?this.element.parentNode:this.element,n=e(i);this.containerWidth=n&&n.innerWidth},n._getItemLayoutPosition=function(t){t.getSize();var e=t.size.outerWidth%this.columnWidth,i=e&&1>e?"round":"ceil",n=Math[i](t.size.outerWidth/this.columnWidth);n=Math.min(n,this.cols);for(var o=this.options.horizontalOrder?"_getHorizontalColPosition":"_getTopColPosition",r=this[o](n,t),s={x:this.columnWidth*r.col,y:r.y},a=r.y+t.size.outerHeight,h=n+r.col,u=r.col;h>u;u++)this.colYs[u]=a;return s},n._getTopColPosition=function(t){var e=this._getTopColGroup(t),i=Math.min.apply(Math,e);return{col:e.indexOf(i),y:i}},n._getTopColGroup=function(t){if(2>t)return this.colYs;for(var e=[],i=this.cols+1-t,n=0;i>n;n++)e[n]=this._getColGroupY(n,t);return e},n._getColGroupY=function(t,e){if(2>e)return this.colYs[t];var i=this.colYs.slice(t,t+e);return Math.max.apply(Math,i)},n._getHorizontalColPosition=function(t,e){var i=this.horizontalColIndex%this.cols,n=t>1&&i+t>this.cols;i=n?0:i;var o=e.size.outerWidth&&e.size.outerHeight;return this.horizontalColIndex=o?i+t:this.horizontalColIndex,{col:i,y:this._getColGroupY(i,t)}},n._manageStamp=function(t){var i=e(t),n=this._getElementOffset(t),o=this._getOption("originLeft"),r=o?n.left:n.right,s=r+i.outerWidth,a=Math.floor(r/this.columnWidth);a=Math.max(0,a);var h=Math.floor(s/this.columnWidth);h-=s%this.columnWidth?0:1,h=Math.min(this.cols-1,h);for(var u=this._getOption("originTop"),d=(u?n.top:n.bottom)+i.outerHeight,l=a;h>=l;l++)this.colYs[l]=Math.max(d,this.colYs[l])},n._getContainerSize=function(){this.maxY=Math.max.apply(Math,this.colYs);var t={height:this.maxY};return this._getOption("fitWidth")&&(t.width=this._getContainerFitWidth()),t},n._getContainerFitWidth=function(){for(var t=0,e=this.cols;--e&&0===this.colYs[e];)t++;return(this.cols-t)*this.columnWidth-this.gutter},n.needsResizeLayout=function(){var t=this.containerWidth;return this.getContainerWidth(),t!=this.containerWidth},i});
1951;
1952/**
1953 * Theme functions file
1954 *
1955 *
1956 */
1957
1958( function( $ ) {
1959
1960	$( document ).ready( function( $ ) {
1961		/**
1962		 * Initial Masonry setup
1963		 */
1964
1965		// posts block for Masonry
1966		var $blocks = $( '#posts' );
1967
1968		// Helper: safely refresh Masonry layout
1969		function refreshMasonry() {
1970			if ( !$blocks.length || !$blocks.data( 'masonry' ) ) return;
1971			$blocks.masonry( 'reloadItems' ).masonry( 'layout' );
1972		}
1973
1974		// Determine text direction
1975		var ltr = true;
1976		if ( $('html' ).attr( 'dir' ) == 'rtl') {
1977			ltr = false;
1978		}
1979
1980		// fire up Masonry!
1981		$blocks.imagesLoaded( function() {
1982			$blocks.masonry( {
1983				columnWidth: 1,
1984				itemSelector: '.post-container',
1985				transitionDuration: 0,
1986				isOriginLeft: ltr,
1987			} ).masonry( 'layout' );
1988
1989			var masonryChild = $blocks.find( '.post-container' );
1990
1991			// Animating JS based off Huntt theme
1992			masonryChild.each( function( i ) {
1993				// Show content
1994				setTimeout( function() {
1995					masonryChild.eq( i ).addClass( 'post-loaded fade-in' );
1996				}, 100 * ( i + 1 ) );
1997			} );
1998
1999			$( '#spinner' ).fadeOut( 250, function() {
2000				$( this ).remove();
2001			} );
2002		} );
2003
2004		// Re-run Masonry when the page is shown again (e.g. back button / bfcache)
2005		$( window ).on( 'pageshow', function( e ) {
2006			refreshMasonry();
2007		} );
2008
2009		// Re-layout Masonry on resize or screen orientation changes
2010		$( window ).on( 'resize', refreshMasonry );
2011
2012		if ( window.screen?.orientation ) {
2013			screen.orientation.addEventListener( 'change', refreshMasonry );
2014		}
2015
2016		// Flexslider for Gallery posts
2017		$( ".flexslider" ).flexslider( {
2018			animation: "slide",
2019			controlNav: false,
2020			prevText: "Previous",
2021			nextText: "Next",
2022			smoothHeight: false,
2023			startAt : 1, // make sure order reflects order in gallery format
2024		} );
2025
2026		/**
2027		 * Masonry update after Infinte Scroll
2028		 * JS based off Huntt theme
2029		 */
2030
2031		$( document.body ).on( 'post-load', function() {
2032
2033			// make sure we're only grabbing new posts
2034			var newEl = $blocks.children().not( '.post-loaded, span.infinite-loader' ).addClass( 'post-loaded' );
2035
2036			// (defined higher up as refreshMasonry)
2037
2038			// check if images loaded in these new posts
2039			newEl.imagesLoaded( function () {
2040
2041				console.log( newEl );
2042
2043				// if images loaded, add new posts and update masonry layout
2044				$blocks.masonry( 'appended', newEl, true ).masonry('reloadItems').masonry( 'layout' );
2045
2046				// reinitialize flexslider for new posts, and re-run masonry when complete
2047				$( ".flexslider" ).flexslider( {
2048					animation: "slide",
2049					controlNav: false,
2050					prevText: "Previous",
2051					nextText: "Next",
2052					smoothHeight: false,
2053					startAt : 1,
2054					start: refreshMasonry, // reload masonry layout on finish, just in case flexslider was slow
2055				} );
2056
2057
2058				newEl.delay( 500 ).each( function( i ) {
2059					// then have a small delay between displaying each post
2060					setTimeout( function() {
2061						newEl.eq( i ).addClass( 'fade-in' );
2062					}, 200 * ( i + 1 ) );
2063				} );
2064
2065			} );
2066
2067			// reloading masonry layout again, after delay
2068			// fixes edge case issue with Facebook embed reloading and messing up layout
2069			setTimeout( refreshMasonry, 3000 );
2070		} );
2071
2072
2073		/**
2074		 * Enables menu toggle for small screens
2075		 */
2076
2077		( function() {
2078			var nav = $( '.navigation' ), button, menu;
2079			if ( ! nav ) {
2080				return;
2081			}
2082
2083			button = nav.find( '.nav-toggle' );
2084			if ( ! button ) {
2085				return;
2086			}
2087
2088			// Hide button if menu is missing or empty.
2089			menu = nav.find( '.main-navigation' );
2090			if ( ! menu || ! menu.children().length ) {
2091				button.hide();
2092				return;
2093			}
2094
2095			button.on( 'click.baskerville', function() {
2096				nav.toggleClass( 'toggled-on' );
2097				$( this ).toggleClass( "active" );
2098				$( ".main-navigation" ).slideToggle();
2099			} );
2100
2101			// Fix sub-menus for touch devices.
2102			if ( 'ontouchstart' in window ) {
2103				menu.find( '.has-children > a, .page_item_has_children a' ).on( 'touchstart.baskerville', function( e ) {
2104					var el = $( this ).parent( 'li' );
2105
2106					if ( ! el.hasClass( 'focus' ) ) {
2107						e.preventDefault();
2108						el.toggleClass( 'focus' );
2109						el.siblings( '.focus' ).removeClass( 'focus' );
2110					}
2111				} );
2112			}
2113
2114			// Better focus for hidden submenu items for accessibility.
2115			menu.find( 'a' ).on( 'focus.baskerville blur.baskerville', function() {
2116				$( this ).parents( '.menu-item, .page_item' ).toggleClass( 'focus' );
2117			} );
2118
2119		} )();
2120
2121
2122		// Makes "skip to content" link work correctly in IE9 and Chrome for better
2123		// accessibility.
2124
2125		// @link http://www.nczonline.net/blog/2013/01/15/fixing-skip-to-content-links/
2126
2127		$( window ).on( 'hashchange.baskerville', function() {
2128			var hash = location.hash.substring( 1 ), element;
2129			if ( ! hash ) {
2130				return;
2131			}
2132			element = document.getElementById( hash );
2133			if ( element ) {
2134				if ( ! /^(?:a|select|input|button|textarea)$/i.test( element.tagName ) ) {
2135					element.tabIndex = -1;
2136				}
2137				element.focus();
2138				// Repositions the window on jump-to-anchor to account for header height.
2139				window.scrollBy( 0, -80 );
2140			}
2141		} );
2142
2143
2144		// Toggle search form
2145
2146		var toggleSwitch = $( ".search-toggle" ),
2147			slideContainer = $( '.header-search-block' ),
2148			slideContainerOpen = false,
2149			lastFocus = document.activeElement,
2150			escapeKey = 27;
2151
2152		toggleSwitch.on( "click", function() {
2153			$( this ).toggleClass( "active" );
2154			$( ".header-search-block" ).slideToggle();
2155			$( ".header-search-block .search-field" ).focus();
2156			return false;
2157		} );
2158
2159		// Smooth scroll to header
2160		$( '.tothetop' ).click( function() {
2161			$( 'html, body' ).animate( {
2162				scrollTop: 0
2163			}, 500 );
2164			$( this ).unbind( "mouseenter mouseleave" );
2165			return false;
2166		} );
2167
2168
2169		// Add 'focus' style to search bar and comment inputs
2170		$('.wrapper .search-form input, .footer .search-form input').focus( function() {
2171			$( this ).closest( 'form' ).addClass( 'focus' );
2172		} ).blur( function() {
2173			$( this ).closest( 'form' ).removeClass( 'focus' );
2174		} );
2175
2176		$('.comment-form-author input, .comment-form-email input, .comment-form-url input').focus( function() {
2177			$( this ).parent().addClass( 'focus' );
2178		} ).blur( function() {
2179			$( this ).parent().removeClass( 'focus' );
2180		} );
2181
2182
2183		// Detect CSS3 Transform support in browsers
2184		var supports = ( function() {
2185			var div = document.createElement( 'div' ),
2186				vendors = 'Khtml Ms O Moz Webkit'.split( ' ' ),
2187				len = vendors.length;
2188
2189			return function( prop ) {
2190				if ( prop in div.style ) {
2191					return true;
2192				}
2193
2194				prop = prop.replace( /^[a-z]/, function( val ) {
2195					return val.toUpperCase();
2196				} );
2197
2198				while ( len-- ) {
2199					if ( vendors[len] + prop in div.style ) {
2200						return true;
2201					}
2202				}
2203				return false;
2204			};
2205		} ) ();
2206
2207		if ( supports( 'transform' ) ) {
2208			// Add a css-transform class to the html element
2209			document.documentElement.className += ' css-transform';
2210		}
2211
2212
2213		// To add placeholder text to header search in IE9
2214		// based on https://gist.github.com/samgro/823300
2215		if ( navigator.appVersion.indexOf( "MSIE 9." ) !=-1 ) {
2216			$( '[placeholder]' ).focus( function() {
2217				var input = $( this );
2218				if ( input.hasClass( 'placeholder' ) ) {
2219					input.val( '' );
2220					input.removeClass( 'placeholder' );
2221				}
2222			} ).blur( function() {
2223				var input = $( this );
2224				if ( input.val() === '' ) {
2225					input.addClass( 'placeholder' );
2226					input.val( input.attr( 'placeholder' ) );
2227				}
2228			} ).blur().parents( 'form' ).submit( function() {
2229				$( this ).find( '[placeholder]' ).each( function() {
2230					var input = $( this );
2231					if ( input.hasClass( 'placeholder' ) ) {
2232						input.val( '' );
2233					}
2234				} );
2235			} );
2236
2237			// Clear input on refresh so that the placeholder class gets added back
2238			$( window ).unload( function() {
2239				$( '[placeholder]' ).val( '' );
2240			} );
2241		}
2242	} );
2243} )( jQuery );
2244;
2245!function(){"use strict";var e,t={noop:function(){},texturize:function(e){return(e=(e=(e=(e+="").replace(/'/g,"&#8217;").replace(/&#039;/g,"&#8217;")).replace(/"/g,"&#8221;").replace(/&#034;/g,"&#8221;").replace(/&quot;/g,"&#8221;").replace(/[\u201D]/g,"&#8221;")).replace(/([\w]+)=&#[\d]+;(.+?)&#[\d]+;/g,'$1="$2"')).trim()},applyReplacements:function(e,t){if(e)return t?e.replace(/{(\d+)}/g,function(e,r){return void 0!==t[r]?t[r]:e}):e},getBackgroundImage:function(e){var t=document.createElement("canvas"),r=t.getContext&&t.getContext("2d");if(e){r.filter="blur(20px) ",r.drawImage(e,0,0);var o=t.toDataURL("image/png");return t=null,o}}},r=function(){function e(e,t){return Element.prototype.matches?e.matches(t):Element.prototype.msMatchesSelector?e.msMatchesSelector(t):void 0}function r(e,t,r,o){if(!e)return o();e.jpCarouselCancelFade&&e.jpCarouselCancelFade(),e.classList.remove("jp-carousel-fade"),e.style.removeProperty("display"),e.style.opacity=t,e.style.pointerEvents="none",e.offsetWidth,e.classList.add("jp-carousel-fade"),e.style.opacity=r;var a=1e3*parseFloat(getComputedStyle(e).transitionDuration)||0,n=setTimeout(function(){e.jpCarouselCancelFade=null,e.style.removeProperty("pointer-events"),o()},a+50);e.jpCarouselCancelFade=function(){clearTimeout(n),e.jpCarouselCancelFade=null}}return{closest:function(t,r){if(t.closest)return t.closest(r);var o=t;do{if(e(o,r))return o;o=o.parentElement||o.parentNode}while(null!==o&&1===o.nodeType);return null},matches:e,hide:function(e){e&&(e.style.display="none")},show:function(e){e&&(e.style.display="block")},fadeIn:function(e,o){r(e,0,1,o=o||t.noop)},fadeOut:function(e,o){o=o||t.noop,r(e,1,0,function(){e&&(e.style.display="none"),o()})},scrollToElement:function(e,t,r){if(!e||!t)return r?r():void 0;var o=t.querySelector(".jp-carousel-info-extra");o&&(o.style.minHeight=window.innerHeight-64+"px");var a=!0,n=Date.now(),i=t.scrollTop,l=Math.max(0,e.offsetTop-Math.max(0,window.innerHeight-function(e){var t=e.querySelector(".jp-carousel-info-footer"),r=e.querySelector(".jp-carousel-info-extra"),o=e.querySelector(".jp-carousel-info-content-wrapper");if(t&&r&&o){var a=window.getComputedStyle(r),n=parseInt(a.paddingTop,10)+parseInt(a.paddingBottom,10);return n=isNaN(n)?0:n,o.offsetHeight+t.offsetHeight+n}return 0}(t)))-t.scrollTop;function s(){a=!1}
2245l=Math.min(l,t.scrollHeight-window.innerHeight),t.addEventListener("wheel",s),function e(){var c,u=Date.now(),d=(c=(u-n)/300)<.5?2*c*c:1-Math.pow(-2*c+2,2)/2,m=(d=d>1?1:d)*l;if(t.scrollTop=i+m,u<=n+300&&a)return requestAnimationFrame(e);r&&r(),o&&(o.style.minHeight=""),a=!1,t.removeEventListener("wheel",s)}()},getJSONAttribute:function(e,t){if(e&&e.hasAttribute(t))try{return JSON.parse(e.getAttribute(t))}catch{return}},convertToPlainText:function(e){var t=document.createElement("div");return t.textContent=e,t.innerHTML},stripHTML:function(e){var t=document.createElement("div");return t.innerHTML=e.replace(/<[^>]*>?/gm,""),t.textContent},emitEvent:function(e,t,r){var o;try{o=new CustomEvent(t,{bubbles:!0,cancelable:!0,detail:r||null})}catch{(o=document.createEvent("CustomEvent")).initCustomEvent(t,!0,!0,r||null)}e.dispatchEvent(o)},isTouch:function(){return"ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch},prefersReducedMotion:function(){return!!window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}}}();function o(){var o,a,n,i,l={},s={},c="",u=!1,d="div.gallery, div.tiled-gallery, ul.wp-block-gallery, ul.blocks-gallery-grid, figure.wp-block-gallery.has-nested-images, div.wp-block-jetpack-tiled-gallery, a.single-image-gallery",m=".gallery-item, .tiled-gallery-item, .blocks-gallery-item,  .tiled-gallery__item",p=m+", .wp-block-image",g={},h="undefined"!=typeof wpcom&&wpcom.carousel&&wpcom.carousel.stat?wpcom.carousel.stat:t.noop,f="undefined"!=typeof wpcom&&wpcom.carousel&&wpcom.carousel.pageview?wpcom.carousel.pageview:t.noop;function v(t){if(!u)switch(t.which){case 38:t.preventDefault(),g.overlay.scrollTop-=100;break;case 40:t.preventDefault(),g.overlay.scrollTop+=100;break;case 39:t.preventDefault(),e.slideNext();break;case 37:case 8:t.preventDefault(),e.slidePrev();break;case 27:t.preventDefault(),k()}}function y(){u=!0}function w(){u=!1}function S(e){e.role="button",e.tabIndex=0,e.ariaLabel=jetpackCarouselStrings.image_label}function j(){g.overlay||(g.overlay=document.querySelector(".jp-carousel-overlay"),g.container=g.overlay.querySelector(".jp-carousel-wrap"),g.gallery=g.container.querySelector(".jp-carousel"),g.info=g.overlay.querySelector(".jp-carousel-info"),g.caption=g.info.querySelector(".jp-carousel-caption"),g.commentField=g.overlay.querySelector("#jp-carousel-comment-form-comment-field"),g.emailField=g.overlay.querySelector("#jp-carousel-comment-form-email-field"),g.authorField=g.overlay.querySelector("#jp-carousel-comment-form-author-field"),g.urlField=g.overlay.querySelector("#jp-carousel-comment-form-url-field"),window.innerWidth<=760&&Math.round(window.innerWidth/760*110)<40&&r.isTouch(),[g.commentField,g.emailField,g.authorField,g.urlField].forEach(function(e){e&&(e.addEventListener("focus",y),e.addEventListener("blur",w))}),g.overlay.addEventListener("click",function(e){var t,o,a=e.target,n=!!r.closest(a,".jp-carousel-close-hint"),i=!!window.matchMedia("(max-device-width: 760px)").matches;a===g.overlay?i||k():n?k():a.classList.contains("jp-carousel-image-download")?h("download_original_click"):a.classList.contains("jp-carousel-comment-login")?(t=g.currentSlide,o=t?t.attrs.attachmentId:"0",window.location.href=jetpackCarouselStrings.login_url+"%23jp-carousel-"+o):r.closest(a,"#jp-carousel-comment-form-container")?function(e){var t=e.target,o=r.getJSONAttribute(g.container,"data-carousel-extra")||{},a=g.currentSlide.attrs.attachmentId,n=document.querySelector("#jp-carousel-comment-form-submit-and-info-wrapper"),i=document.querySelector("#jp-carousel-comment-form-spinner"),s=document.querySelector("#jp-carousel-comment-form-button-submit"),c=document.querySelector("#jp-carousel-comment-form");if(g.commentField&&g.commentField.getAttribute("id")===t.getAttribute("id"))y(),r.show(n);else if(r.matches(t,'input[type="submit"]')){e.preventDefault(),e.stopPropagation(),r.show(i),c.classList.add("jp-carousel-is-disabled");var u={action:"post_attachment_comment",nonce:jetpackCarouselStrings.nonce,blog_id:o.blog_id,id:a,comment:g.commentField.value};if(!u.comment.length)return void b(jetpackCarouselStrings.no_comment_text,!1);if(1!==Number(jetpackCarouselStrings.is_logged_in)&&(u.email=g.emailField.value,u.author=g.authorField.value,u.url=g.urlField.value,1===Number(jetpackCarouselStrings.require_name_email))){if(!u.email.length||!u.email.match("@"))return void b(jetpackCarouselStrings.no_comment_email,!1);if(!u.author.length)return void b(jetpackCarouselStrings.no_comment_author,!1)}var d=new XMLHttpRequest;d.open("POST",jetpackCarouselStrings.ajaxurl,!0),d.setRequestHeader("X-Requested-With","XMLHttpRequest"),d.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8"),d.onreadystatechange=function(){if(this.readyState===XMLHttpRequest.DONE&&this.status>=200&&this.status<300){var e;try{e=JSON.parse(this.response)}catch{return void b(jetpackCarouselStrings.comment_post_error,!1)}if("approved"===e.comment_status){b(jetpackCarouselStrings.comment_approved,!0);var t=function(e){for(var t=0;t<g.slides.length;t++)if(g.slides[t].attrs.attachmentId===e)return g.slides[t];return null}(a);t&&(t.attrs.commentsCount=(parseInt(t.attrs.commentsCount,10)||0)+1)}else"unapproved"===e.comment_status?b(jetpackCarouselStrings.comment_unapproved,!0):b(jetpackCarouselStrings.comment_post_error,!1);W(),delete l[a],_(a,void 0,!0),s.value=jetpackCarouselStrings.post_comment,r.hide(i),c.classList.remove("jp-carousel-is-disabled")}else b(jetpackCarouselStrings.comment_post_error,!1)};var m=[];for(var p in u)if(p){var h=encodeURIComponent(p)+"="+encodeURIComponent(u[p]);m.push(h.replace(/%20/g,"+"))}var f=m.join("&");d.send(f)}}(e):(r.closest(a,".jp-carousel-photo-icons-container")||a.classList.contains("jp-carousel-photo-title"))&&function(e){e.preventDefault();var t=e.target,o=g.info.querySelector(".jp-carousel-info-extra"),a=g.info.querySelector(".jp-carousel-image-meta"),n=g.info.querySelector(".jp-carousel-comments-wrapper"),i=g.info.querySelector(".jp-carousel-icon-info"),s=g.info.querySelector(".jp-carousel-icon-comments");function c(){s&&s.classList.remove("jp-carousel-selected"),i.classList.toggle("jp-carousel-selected"),n&&n.classList.remove("jp-carousel-show"),a&&(a.classList.toggle("jp-carousel-show"),a.classList.contains("jp-carousel-show")?o.classList.add("jp-carousel-show"):o.classList.remove("jp-carousel-show"))}function u(){if(i&&i.classList.remove("jp-carousel-selected"),s.classList.toggle("jp-carousel-selected"),a&&a.classList.remove("jp-carousel-show"),n)if(n.classList.toggle("jp-carousel-show"),n.classList.contains("jp-carousel-show")){o.classList.add("jp-carousel-show");var e=g.currentSlide;if(e){var t=l[e.attrs.attachmentId];t?t.hasMore&&T(e.attrs.attachmentId,t.nextOffset):_(e.attrs.attachmentId)}}else o.classList.remove("jp-carousel-show")}(r.closest(t,".jp-carousel-icon-info")||t.classList.contains("jp-carousel-photo-title"))&&(a&&a.classList.contains("jp-carousel-show")?r.scrollToElement(g.overlay,g.overlay,c):(c(),r.scrollToElement(g.info,g.overlay))),r.closest(t,".jp-carousel-icon-comments")&&(n&&n.classList.contains("jp-carousel-show")?r.scrollToElement(g.overlay,g.overlay,u):(u(),r.scrollToElement(g.info,g.overlay)))}(e)}),window.addEventListener("keydown",v),g.overlay.addEventListener("jp_carousel.afterOpen",function(){w(),g.slides.length<=1||(g.slides.length<=5?r.show(g.info.querySelector(".jp-swiper-pagination")):r.show(g.info.querySelector(".jp-carousel-pagination")))}),g.overlay.addEventListener("jp_carousel.beforeClose",function(){y(),document.documentElement.style.removeProperty("height"),e&&e.enable(),r.hide(g.info.querySelector(".jp-swiper-pagination")),r.hide(g.info.querySelector(".jp-carousel-pagination"))}),g.overlay.addEventListener("jp_carousel.afterClose",function(){window.history.pushState?history.pushState("",document.title,window.location.pathname+window.location.search):window.location.href="",c="",g.isOpen=!1}),g.overlay.addEventListener("touchstart",function(e){e.touches.length>1&&e.preventDefault()}))}function b(e,t){var o=g.overlay.querySelector("#jp-carousel-comment-post-results"),a="jp-carousel-comment-post-"+(t?"success":"error");o.innerHTML='<span class="'+a+'">'+e+"</span>",r.hide(g.overlay.querySelector("#jp-carousel-comment-form-spinner")),g.overlay.querySelector("#jp-carousel-comment-form").classList.remove("jp-carousel-is-disabled"),r.show(o)}function L(){var e=document.querySelectorAll("a img[data-attachment-id]");Array.prototype.forEach.call(e,function(e){var t=e.parentElement,o=t.parentElement;if(!o.classList.contains("gallery-icon")&&!r.closest(o,m)&&t.hasAttribute("href")){var a=!1;t.getAttribute("href").split("?")[0]===e.getAttribute("data-orig-file").split("?")[0]&&1===Number(jetpackCarouselStrings.single_image_gallery_media_file)&&(a=!0),t.getAttribute("href")===e.getAttribute("data-permalink")&&(a=!0),a&&(S(e),t.classList.add("single-image-gallery"),t.setAttribute("data-carousel-extra",JSON.stringify({blog_id:Number(jetpackCarouselStrings.blog_id)})))}})}function x(t,r){g.isOpen?(C(r),e.slideTo(r+1)):z(t,{startIndex:r})}function C(e){(!e||e<0||e>g.slides.length)&&(e=0),g.currentSlide=g.slides[e];var a,n,i=g.currentSlide,s=i.attrs.attachmentId;M(g.slides[e]),function(e){var t=[],r=g.slides.length;if(r>1){var o=e>0?e-1:r-1;t.push(o);var a=e<r-1?e+1:0;t.push(a)}t.forEach(function(e){var t=g.slides[e];t&&(M(t),1!==Number(jetpackCarouselStrings.display_background_image)||t.backgroundImage||F(t))})}(e),1!==Number(jetpackCarouselStrings.display_background_image)||g.slides[e].backgroundImage||F(g.slides[e]),r.hide(g.caption),function(e){var t,o,a,n,i,l,s;if(n=g.overlay.querySelector(".jp-carousel-photo-caption"),i=g.overlay.querySelector(".jp-carousel-caption"),l=g.overlay.querySelector(".jp-carousel-photo-title"),s=g.overlay.querySelector(".jp-carousel-photo-description"),r.hide(n),r.hide(i),r.hide(l),r.hide(s),t=A(e.caption)||"",o=A(e.title)||"",a=A(e.desc)||"",(t||o||a)&&(t&&(n.innerHTML=t,i.innerHTML=t,r.show(n),r.show(i)),r.stripHTML(t)===r.stripHTML(o)&&(o=""),r.stripHTML(t)===r.stripHTML(a)&&(a=""),r.stripHTML(o)===r.stripHTML(a)&&(a=""),a&&(s.innerHTML=a,r.show(s),o||t||(n.textContent=r.stripHTML(a),r.show(n))),o)){var c=r.stripHTML(o);l.textContent=c,t||(n.textContent=c,i.textContent=c,r.show(n)),r.show(l)}}
2245({caption:i.attrs.caption,title:i.attrs.title,desc:i.attrs.desc}),function(e){if(!e||1!==Number(jetpackCarouselStrings.display_exif))return!1;var t=g.info.querySelector(".jp-carousel-image-meta");if(!t)return!1;var r="";for(var o in e){var a=e[o],n=jetpackCarouselStrings.meta_data||[];if(0!==parseFloat(a)&&a.length&&-1!==n.indexOf(o)){switch(o){case"focal_length":a+="mm";break;case"shutter_speed":a=E(a);break;case"aperture":a="f/"+a}r+="<li><h5>"+jetpackCarouselStrings[o]+"</h5>"+a+"</li>"}}var i=t.querySelector("ul.jp-carousel-image-exif");if(""!==r){if(!i){(i=document.createElement("ul")).className="jp-carousel-image-exif";var l=t.querySelector(".jp-carousel-title-and-caption");l&&l.nextSibling?t.insertBefore(i,l.nextSibling):t.insertBefore(i,t.firstChild)}i.innerHTML=r,i.style.removeProperty("display")}else i&&i.parentNode.removeChild(i)}(g.slides[e].attrs.imageMeta),function(e){if(!e)return!1;var r,o=[e.attrs.origWidth,e.attrs.origHeight],a=document.createElement("a");a.href=e.attrs.src.replace(/\?.+$/,""),r=null!==a.hostname.match(/^i[\d]{1}\.wp\.com$/i)?a.href:e.attrs.origFile.replace(/\?.+$/,"");var n=g.info.querySelector(".jp-carousel-download-text"),i=g.info.querySelector(".jp-carousel-image-download");n.innerHTML=t.applyReplacements(jetpackCarouselStrings.download_original,o),i.setAttribute("href",r),i.style.removeProperty("display")}(i),1===Number(jetpackCarouselStrings.display_comments)&&(a=g.slides[e].attrs.commentsOpened,n=g.info.querySelector("#jp-carousel-comment-form-container"),1===parseInt(a,10)?r.fadeIn(n):r.fadeOut(n),function(e){var t=e.attrs.attachmentId,a=g.info.querySelector(".jp-carousel-comments"),n=l[t];if(clearInterval(o),r.hide(g.info.querySelector("#jp-carousel-comments-loading")),n)return a.innerHTML=n.html,H(n.count),r.show(a),void(n.hasMore&&I()&&T(t,n.nextOffset));a.innerHTML="",r.hide(a),H(parseInt(e.attrs.commentsCount,10)||0),I()&&_(t)}(i),r.hide(g.info.querySelector("#jp-carousel-comment-post-results")));var u=g.info.querySelector(".jp-carousel-pagination");if(u&&g.slides.length>5){var d=e+1;u.innerHTML="<span>"+d+" / "+g.slides.length+"</span>"}jetpackCarouselStrings.stats&&g.isOpen&&((new Image).src=document.location.protocol+"//pixel.wp.com/g.gif?"+jetpackCarouselStrings.stats+"&post="+encodeURIComponent(s)+"&rand="+Math.random()),g.isOpen&&f(s),c="#jp-carousel-"+s,window.location.hash=c}function k(){document.body.style.overflow=a,document.documentElement.style.overflow=n,W(),y(),r.emitEvent(g.overlay,"jp_carousel.beforeClose"),window.scrollTo(window.scrollX||window.pageXOffset||0,i||0),g.isOpen=!1,e.destroy(),g.slides=[],l={},s={},g.currentSlide=void 0,g.gallery.innerHTML="",r.fadeOut(g.overlay,function(){r.emitEvent(g.overlay,"jp_carousel.afterClose")})}function q(e){if("object"!=typeof e&&(e={}),void 0===e.origFile)return"";if(void 0===e.origWidth||void 0===e.maxWidth)return e.origFile;if(!e.largeFile)return e.origFile;var t=document.createElement("a");t.href=e.largeFile;var r=/^i[0-2]\.wp\.com$/i.test(t.hostname),o=function(e,t,r){var o,a=r?e.replace(/.*=([\d]+%2C[\d]+).*$/,"$1"):e.replace(/.*-([\d]+x[\d]+)\..+$/,"$1");return"9999"===(o=a!==e?r?a.split("%2C"):a.split("x"):[t,0])[0]&&(o[0]="0"),"9999"===o[1]&&(o[1]="0"),o}(e.largeFile,e.origWidth,r),a=parseInt(o[0],10),n=parseInt(o[1],10);e.origMaxWidth=e.maxWidth,e.origMaxHeight=e.maxHeight,void 0!==window.devicePixelRatio&&window.devicePixelRatio>1&&(e.maxWidth=e.maxWidth*window.devicePixelRatio,e.maxHeight=e.maxHeight*window.devicePixelRatio);var i=e.zoomHeadroom||1;if(i>1&&(e.maxWidth=e.maxWidth*i,e.maxHeight=e.maxHeight*i),a>=e.maxWidth||n>=e.maxHeight)return e.largeFile;if(r){if(-1===e.largeFile.lastIndexOf("?"))return e.largeFile;var l=function(e){var t;try{t=new URL(e)}catch(t){return e}var r=["quality","ssl","filter","brightness","contrast","colorize","smooth"],o=Array.from(t.searchParams.entries());return t.search="",o.forEach(([e,o])=>{r.includes(e)&&t.searchParams.append(e,o)}),t}(e.largeFile);return(e.origWidth>e.maxWidth||e.origHeight>e.maxHeight)&&(e.origMaxWidth=e.maxWidth,e.origMaxHeight=e.maxHeight,l.searchParams.set("fit",e.origMaxWidth+","+e.origMaxHeight)),l.toString()}return e.origFile}function E(e){return e>=1?Math.round(10*e)/10+"s":"1/"+Math.round(1/e)+"s"}
2245function A(e){return!e.match(" ")&&e.match("_")?"":e}function I(){var e=g.info.querySelector(".jp-carousel-comments-wrapper");return!!e&&e.classList.contains("jp-carousel-show")}function H(e){var t=g.info.querySelector(".jp-carousel-icon-comments .jp-carousel-has-comments-indicator");t&&(e>0?(t.innerText=e,t.classList.add("jp-carousel-show")):t.classList.remove("jp-carousel-show"))}function T(e,t){clearInterval(o),o=setInterval(function(){g.container.scrollTop+150>window.innerHeight&&(clearInterval(o),_(e,t))},300)}function _(e,t,a){var n=void 0===t;if(clearInterval(o),e&&g.currentSlide&&g.currentSlide.attrs.attachmentId===e&&(!s[e]||a)){(!t||t<1)&&(t=0);var i=g.info.querySelector(".jp-carousel-comments"),c=g.info.querySelector("#jp-carousel-comments-loading");r.show(c),n&&(r.hide(i),i.innerHTML="");var u=new XMLHttpRequest;s[e]=u;var d=function(){return s[e]===u},m=jetpackCarouselStrings.ajaxurl+"?action=get_attachment_comments&nonce="+jetpackCarouselStrings.nonce+"&id="+e+"&offset="+t;u.open("GET",m),u.setRequestHeader("X-Requested-With","XMLHttpRequest");var p=function(){r.fadeIn(i),r.fadeOut(c)};u.onload=function(){if(d()&&(delete s[e],g.currentSlide&&g.currentSlide.attrs.attachmentId===e)){var o,a=u.status>=200&&u.status<300;try{o=JSON.parse(u.responseText)}catch{}if(a&&o&&Array.isArray(o)){n&&(i.innerHTML="");for(var m=0;m<o.length;m++){var h=o[m];if(!i.querySelector("#jp-carousel-comment-"+h.id)){var f=document.createElement("div");f.classList.add("jp-carousel-comment"),f.setAttribute("id","jp-carousel-comment-"+h.id),f.innerHTML='<div class="comment-gravatar">'+h.gravatar_markup+'</div><div class="comment-content"><div class="comment-author">'+h.author_markup+'</div><div class="comment-date">'+h.date_gmt+"</div>"+h.content+"</div>",i.appendChild(f)}}var v=o.length>=10,y=t+10;v&&T(e,y);var w=i.querySelectorAll(".jp-carousel-comment").length,S=Math.max(parseInt(g.currentSlide.attrs.commentsCount,10)||0,w);o.length>0&&(r.show(i),H(S)),l[e]={html:i.innerHTML,count:S,hasMore:v,nextOffset:y},r.hide(c)}else p()}},u.onerror=function(){d()&&(delete s[e],g.currentSlide&&g.currentSlide.attrs.attachmentId===e&&p())},u.send()}}function M(e){var t=e.attrs,r=e.el.querySelector("img");if(!r.hasAttribute("data-loaded"))if(r.setAttribute("itemprop","image"),r.setAttribute("data-loaded",1),t.previewImage&&t.previewImage!==t.src){r.src=t.previewImage,r.style.filter="blur(8px)";var o=new window.Image;o.addEventListener("load",function(){r.hasAttribute("data-zoom-loaded")||(r.src=t.src),r.style.filter=""},{once:!0}),o.addEventListener("error",function(){r.style.filter=""},{once:!0}),o.src=t.src}else r.src=t.src}function F(e){var t=e.attrs.originalElement;if(t)if(t.complete&&0!==t.naturalHeight)O(e,t);else{var r=function(){t.removeEventListener("error",o),O(e,t)},o=function(){t.removeEventListener("load",r)};t.addEventListener("load",r,{once:!0}),t.addEventListener("error",o,{once:!0})}}function O(e,r){var o=t.getBackgroundImage(r);o&&(e.backgroundImage=o,e.el.style.backgroundImage="url("+o+")",e.el.style.backgroundSize="cover",e.el.style.backgroundPosition="center")}function W(){g.commentField&&(g.commentField.value="")}function N(e,o){g.slides=[];var a={width:window.innerWidth,height:window.innerHeight-64};0!==o&&null!==e[o].getAttribute("data-gallery-src")&&((new Image).src=e[o].getAttribute("data-gallery-src")),Array.prototype.forEach.call(e,function(e,o){var n=r.closest(e,"a"),i=e.getAttribute("data-orig-file")||e.getAttribute("src-orig"),l=e.getAttribute("data-attachment-id")||e.getAttribute("data-id")||"0",s=document.querySelector('img[data-attachment-id="'+l+'"] + figcaption');s=s?s.innerHTML:e.getAttribute("data-image-caption");var c={originalElement:e,attachmentId:l,commentsOpened:e.getAttribute("data-comments-opened")||"0",commentsCount:e.getAttribute("data-comments-count")||"0",imageMeta:r.getJSONAttribute(e,"data-image-meta")||{},title:e.getAttribute("data-image-title")||"",desc:e.getAttribute("data-image-description")||"",largeFile:e.getAttribute("data-large-file")||"",origFile:i||"",thumbSize:{width:e.naturalWidth,height:e.naturalHeight},caption:s||"",permalink:n&&n.getAttribute("href"),src:i||e.getAttribute("src")||""},u=r.closest(e,".tiled-gallery-item"),d=u&&u.querySelector(".tiled-gallery-caption"),m=d&&d.innerHTML;m&&(c.caption=m);var p=function(e){var t=e.getAttribute("data-orig-size")||"";if(t){var r=t.split(",");return{width:parseInt(r[0],10),height:parseInt(r[1],10)}}return{width:e.getAttribute("data-original-width")||e.getAttribute("width")||void 0,height:e.getAttribute("data-original-height")||e.getAttribute("height")||void 0}}(e);if(c.origWidth=p.width||c.thumbSize.width,c.origHeight=p.height||c.thumbSize.height,"undefined"!=typeof wpcom&&wpcom.carousel&&wpcom.carousel.generateImgSrc)c.src=wpcom.carousel.generateImgSrc(e,a);else{var h=function(e){return{origFile:c.src,origWidth:c.origWidth,origHeight:c.origHeight,maxWidth:a.width,maxHeight:a.height,largeFile:c.largeFile,zoomHeadroom:e}};c.zoomSrc=q(h(2)),c.src=q(h(1))}if(e.setAttribute("data-gallery-src",c.src),"0"!==c.attachmentId){c.title=t.texturize(c.title),c.desc=t.texturize(c.desc),c.caption=t.texturize(c.caption);var f=new Image,v=document.createElement("div");v.classList.add("swiper-slide"),v.setAttribute("itemprop","associatedMedia"),v.setAttribute("itemscope",""),v.setAttribute("itemtype","https://schema.org/ImageObject");var y=document.createElement("div");y.classList.add("swiper-zoom-container"),g.gallery.appendChild(v),v.appendChild(y),y.appendChild(f),v.setAttribute("data-attachment-id",c.attachmentId),v.setAttribute("data-permalink",c.permalink),v.setAttribute("data-orig-file",c.origFile),c.previewImage=e.currentSrc||e.getAttribute("src")||"";var w={el:v,attrs:c,index:o};g.slides.push(w)}})}function z(e,t){if(!window.JetpackSwiper){var o=document.querySelector("#jp-carousel-loading-overlay");r.show(o);var a=document.createElement("script");return a.id="jetpack-carousel-swiper-js",a.src=window.jetpackSwiperLibraryPath.url,a.async=!0,a.onload=function(){r.hide(o),R(e,t)},a.onerror=function(){r.hide(o)},void document.head.appendChild(a)}R(e,t)}function R(t,o){var c,u={imgSelector:".gallery-item [data-attachment-id], .tiled-gallery-item [data-attachment-id], img[data-attachment-id], img[data-id]",startIndex:0},d=r.getJSONAttribute(t,"data-carousel-extra");if(!d)return;const m=t.querySelectorAll(u.imgSelector);if(m.length&&(j(),!g.isOpen)){for(var p in g.isOpen=!0,a=getComputedStyle(document.body).overflow,document.body.style.overflow="hidden",n=getComputedStyle(document.documentElement).overflow,document.documentElement.style.overflow="hidden",i=window.scrollY||window.pageYOffset||0,g.container.setAttribute("data-carousel-extra",JSON.stringify(d)),h(["open","view_image"]),o||{})u[p]=o[p];-1===u.startIndex&&(u.startIndex=0),r.emitEvent(g.overlay,"jp_carousel.beforeOpen"),g.gallery.innerHTML="",l={},s={},g.overlay.style.opacity=1,g.overlay.style.display="block",N(m,u.startIndex),(e=new window.JetpackSwiper(".jp-carousel-swiper-container",{centeredSlides:!0,speed:r.prefersReducedMotion()?0:250,zoom:!0,loop:g.slides.length>1,enabled:g.slides.length>1,pagination:{el:".jp-swiper-pagination",clickable:!0},navigation:{nextEl:".jp-swiper-button-next",prevEl:".jp-swiper-button-prev"},initialSlide:u.startIndex,on:{init:function(){C(u.startIndex)}},preventClicks:!1,preventClicksPropagation:!1,preventInteractionOnTransition:!r.isTouch(),threshold:5})).on("slideChange",function(e){g.isOpen&&(C(e.realIndex),g.overlay.classList.remove("jp-carousel-hide-control
2245s"))}),e.on("zoomChange",function(e,t){t>1&&(function(e){if(e&&e.attrs.zoomSrc&&e.attrs.zoomSrc!==e.attrs.src){var t=e.el.querySelector("img");t&&!t.hasAttribute("data-zoom-loaded")&&(t.setAttribute("data-zoom-loaded",1),t.src=e.attrs.zoomSrc)}}(g.currentSlide),g.overlay.classList.add("jp-carousel-hide-controls")),1===t&&g.overlay.classList.remove("jp-carousel-hide-controls")}),e.on("doubleTap",function(e){if(clearTimeout(c),1===e.zoom.scale)var t=setTimeout(function(){g.overlay.classList.remove("jp-carousel-hide-controls"),clearTimeout(t)},150)}),e.on("tap",function(){e.zoom.scale>1&&(c=setTimeout(function(){g.overlay.classList.toggle("jp-carousel-hide-controls")},150))}),r.fadeIn(g.overlay,function(){r.emitEvent(g.overlay,"jp_carousel.afterOpen")})}}function P(e){if("click"!==e.type){if("keydown"===e.type){const t=document.activeElement.parentElement,r=t&&t.classList.contains("tiled-gallery__item");" "!==e.key&&"Enter"!==e.key||!r||$(e)}}else $(e)}function D(e){return(e||"").split("?")[0].replace(/\/$/,"")}function J(e){"A"===e.tagName&&(e=e.querySelector("img")||e);var t=e.parentElement,o=t?t.parentElement:null,a=null;if(o&&o.classList.contains("wp-block-image")?a=t.getAttribute("href"):t&&t.classList.contains("wp-block-image")&&t.querySelector(":scope > a")&&(a=t.querySelector(":scope > a").getAttribute("href")),a){var n=D(a),i=D(e.getAttribute("data-orig-file")),l=D(e.getAttribute("data-permalink"));if(n!==i&&n!==l)return!1}return!(t&&t.classList.contains("gallery-caption")||r.matches(t,"figcaption"))}function $(e){if(window.CSS&&window.CSS.supports&&window.CSS.supports("display","grid")){var t,o=e.target,a=r.closest(o,d);if(a){if(!(t=a)||!t.getAttribute("data-carousel-extra"))return;if(!J(o))return;document.documentElement.style.height="auto",e.preventDefault(),e.stopPropagation();var n=r.closest(o,p),i=Array.prototype.indexOf.call(a.querySelectorAll(p),n);z(a,{startIndex:i})}}}document.body.addEventListener("click",P),document.body.addEventListener("keydown",P),document.querySelectorAll(m+"img").forEach(function(e){J(e)&&S(e)}),1===Number(jetpackCarouselStrings.single_image_gallery)&&(L(),document.body.addEventListener("is.post-load",function(){L()})),window.addEventListener("hashchange",function(){var e=/jp-carousel-(\d+)/;if(window.location.hash&&e.test(window.location.hash)){if(window.location.hash!==c||!g.isOpen)if(window.location.hash&&g.gallery&&!g.isOpen&&history.back)history.back();else{c=window.location.hash;for(var t=window.location.hash.match(e),r=parseInt(t[1],10),o=document.querySelectorAll(d),a=0;a<o.length;a++){for(var n,i=o[a],l=i.querySelectorAll("img"),s=0;s<l.length;s++)if(parseInt(l[s].getAttribute("data-attachment-id"),10)===r||parseInt(l[s].getAttribute("data-id"),10)===r){n=s;break}if(void 0!==n){x(i,n);break}}}}else g.isOpen&&k()}),window.location.hash&&r.emitEvent(window,"hashchange")}"loading"!==document.readyState?o():document.addEventListener("DOMContentLoaded",o)}();;
2246( function () {
2247	'use strict';
2248
2249	if ( typeof window.wpcom === 'undefined' ) {
2250		window.wpcom = {};
2251	}
2252
2253	if ( window.wpcom.carousel ) {
2254		return;
2255	}
2256
2257	var prebuilt_widths = jetpackCarouselStrings.widths;
2258	var pageviews_stats_args = jetpackCarouselStrings.stats_query_args;
2259
2260	var findFirstLargeEnoughWidth = function ( original_w, original_h, dest_w, dest_h ) {
2261		var inverse_ratio = original_h / original_w;
2262
2263		for ( var i = 0; i < prebuilt_widths.length; ++i ) {
2264			if ( prebuilt_widths[ i ] >= dest_w || prebuilt_widths[ i ] * inverse_ratio >= dest_h ) {
2265				return prebuilt_widths[ i ];
2266			}
2267		}
2268
2269		return original_w;
2270	};
2271
2272	var removeResizeFromImageURL = function ( url ) {
2273		return removeArgFromURL( url, 'resize' );
2274	};
2275
2276	var removeArgFromURL = function ( url, arg ) {
2277		var re = new RegExp( '[\\?&]' + arg + '(=[^?&]+)?' );
2278		if ( url.match( re ) ) {
2279			return url.replace( re, '' );
2280		}
2281		return url;
2282	};
2283
2284	var addWidthToImageURL = function ( url, width ) {
2285		width = parseInt( width, 10 );
2286		// Give devices with a higher devicePixelRatio higher-res images (Retina display = 2, Android phones = 1.5, etc)
2287		if ( 'undefined' !== typeof window.devicePixelRatio && window.devicePixelRatio > 1 ) {
2288			width = Math.round( width * window.devicePixelRatio );
2289		}
2290		url = addArgToURL( url, 'w', width );
2291		url = addArgToURL( url, 'h', '' );
2292		return url;
2293	};
2294
2295	var addArgToURL = function ( url, arg, value ) {
2296		var re = new RegExp( arg + '=[^?&]+' );
2297		if ( url.match( re ) ) {
2298			return url.replace( re, arg + '=' + value );
2299		} else {
2300			var divider = url.indexOf( '?' ) !== -1 ? '&' : '?';
2301			return url + divider + arg + '=' + value;
2302		}
2303	};
2304
2305	var stat = function ( names ) {
2306		if ( typeof names !== 'string' ) {
2307			names = names.join( ',' );
2308		}
2309
2310		new Image().src = window.location.protocol +
2311			'//pixel.wp.com/g.gif?v=wpcom-no-pv' +
2312			'&x_carousel=' + names +
2313			'&baba=' + Math.random();
2314	};
2315
2316	var lastTrackedPostId = null;
2317
2318	var pageview = function ( post_id ) {
2319		// Prevent duplicate tracking of the same post during slide transitions
2320		if ( post_id === lastTrackedPostId ) {
2321			return;
2322		}
2323
2324		lastTrackedPostId = post_id;
2325
2326		new Image().src = window.location.protocol +
2327			'//pixel.wp.com/g.gif?host=' + encodeURIComponent( window.location.host ) +
2328			'&ref=' + encodeURIComponent( document.referrer ) +
2329			'&rand=' + Math.random() +
2330			'&' + pageviews_stats_args +
2331			'&post=' + encodeURIComponent( post_id );
2332	};
2333
2334	var generateImgSrc = function ( srcItem, max ) {
2335		var origSize = srcItem.getAttribute( 'data-orig-size' ) || '';
2336
2337		var src = srcItem.getAttribute( 'src' ) || srcItem.getAttribute( 'original' ) || srcItem.getAttribute( 'data-original' ) || srcItem.getAttribute( 'data-lazy-src' );
2338		if ( src.indexOf( 'imgpress' ) !== -1 ) {
2339			src = srcItem.getAttribute( 'data-orig-file' );
2340		}
2341		// Square/Circle galleries use a resize param that needs to be removed.
2342		src = removeResizeFromImageURL( src );
2343		src = addWidthToImageURL(
2344			src,
2345			findFirstLargeEnoughWidth( origSize.width, origSize.height, max.width, max.height )
2346		);
2347
2348		return src;
2349	};
2350
2351	window.wpcom.carousel = {
2352		findFirstLargeEnoughWidth: findFirstLargeEnoughWidth,
2353		removeResizeFromImageURL: removeResizeFromImageURL,
2354		addWidthToImageURL: addWidthToImageURL,
2355		stat: stat,
2356		pageview: pageview,
2357		generateImgSrc: generateImgSrc
2358	};
2359
2360} )();
2361;
2362!function(){var e=document.currentScript;function t(t){var n=document.createElement("script"),o=e||document.getElementsByTagName("script")[0];n.setAttribute("async",!0),n.setAttribute("src",t),o.parentNode.insertBefore(n,o)}function n(e,t){return Element.prototype.matches?e.matches(t):Element.prototype.msMatchesSelector?e.msMatchesSelector(t):void 0}function o(e,t){if(e.closest)return e.closest(t);var o=e;do{if(n(o,t))return o;o=o.parentElement||o.parentNode}while(null!==o&&1===o.nodeType);return null}function i(e,t){for(var n=0;n<e.length;n++)t(e[n],n,e)}var r,s=".sharing-hidden .inner",a="data-sharing-more-button-id";function c(e){this.button=e,this.pane=o(e,"div").querySelector(s),this.openedBy=null,this.recentlyOpenedByHover=!1,c.instances.push(this),this.pane.setAttribute(a,c.instances.length-1),this.attachHandlers()}if(c.instances=[],c.hoverOpenDelay=200,c.recentOpenDelay=400,c.hoverCloseDelay=300,c.instantiateOrReuse=function(e){var t=o(e,"div").querySelector(s),n=t&&t.getAttribute(a),i=c.instances[n];return i||new c(e)},c.getButtonInstanceFromPane=function(e){var t=e&&e.getAttribute(a);return c.instances[t]},c.closeAll=function(){for(var e=0;e<c.instances.length;e++)c.instances[e].close()},c.prototype.open=function(){var e,t,n=[0,0];function o(e){var t=e.getBoundingClientRect();return[t.left+(window.scrollX||window.pageXOffset||0),t.top+(window.scrollY||window.pageYOffset||0)]}function i(e,t){return parseInt(getComputedStyle(e).getPropertyValue(t)||0)}for(e=o(this.button),t=this.button.offsetParent||document.documentElement;t&&(t===document.body||t===document.documentElement)&&"static"===getComputedStyle(t).getPropertyValue("position");)t=t.parentNode;t&&t!==this.button&&1===t.nodeType&&(n=[(n=o(t))[0]+i(t,"border-left-width"),n[1]+i(t,"border-top-width")]);var r,s=e[0]-n[0]-i(this.button,"margin-left"),a=e[1]-n[1]-i(this.button,"margin-top");this.pane.style.left=s+"px",this.pane.style.top=a+this.button.offsetHeight+3+"px",(r=this.pane)&&r.style.removeProperty("display")},c.prototype.close=function(){var e;(e=this.pane)&&(e.style.display="none"),this.openedBy=null},c.prototype.toggle=function(){var e;(e=this.pane)&&"none"!==e.style.display?this.close():this.open()}
2362,c.prototype.nonHoverOpen=function(){clearTimeout(this.openTimer),clearTimeout(this.closeTimer),this.recentlyOpenedByHover?(this.recentlyOpenedByHover=!1,clearTimeout(this.hoverOpenTimer),this.open()):this.toggle()},c.prototype.resetCloseTimer=function(){clearTimeout(this.closeTimer),this.closeTimer=setTimeout(this.close.bind(this),c.hoverCloseDelay)},c.prototype.attachHandlers=function(){this.buttonClick=function(e){e.preventDefault(),e.stopPropagation(),this.openedBy="click",this.nonHoverOpen()}.bind(this),this.buttonKeydown=function(e){13!==e.keyCode&&32!==e.keyCode||(e.preventDefault(),e.stopPropagation(),this.openedBy="keydown",this.nonHoverOpen())}.bind(this),this.buttonEnter=function(){this.openedBy||(this.openTimer=setTimeout(function(){this.open(),this.openedBy="hover",this.recentlyOpenedByHover=!0,this.hoverOpenTimer=setTimeout(function(){this.recentlyOpenedByHover=!1}.bind(this),c.recentOpenDelay)}.bind(this),c.hoverOpenDelay)),clearTimeout(this.closeTimer)}.bind(this),this.buttonLeave=function(){"hover"===this.openedBy&&this.resetCloseTimer(),clearTimeout(this.openTimer)}.bind(this),this.paneEnter=function(){clearTimeout(this.closeTimer)}.bind(this),this.paneLeave=function(){"hover"===this.openedBy&&this.resetCloseTimer()}.bind(this),this.documentClick=function(){this.close()}.bind(this),this.button.addEventListener("click",this.buttonClick),this.button.addEventListener("keydown",this.buttonKeydown),document.addEventListener("click",this.documentClick),void 0===document.ontouchstart&&(this.button.addEventListener("mouseenter",this.buttonEnter),this.button.addEventListener("mouseleave",this.buttonLeave),this.pane.addEventListener("mouseenter",this.paneEnter),this.pane.addEventListener("mouseleave",this.paneLeave))},window.sharing_js_options&&window.sharing_js_options.counts){var u={done_urls:[],get_counts:function(){var e,n,o,i,r;if("undefined"!=typeof WPCOM_sharing_counts)for(e in WPCOM_sharing_counts)if(o=WPCOM_sharing_counts[e],void 0===u.done_urls[o]){for(i in n={pinterest:[window.location.protocol+"//api.pinterest.com/v1/urls/count.json?callback=WPCOMSharing.update_pinterest_count&url="+encodeURIComponent(e)]})if(document.querySelector("a[data-shared=sharing-"+i+"-"+o+"]")){for(;r=n[i].pop();)t(r);window.sharing_js_options.is_stats_active&&u.bump_sharing_count_stat(i)}u.done_urls[o]=!0}},update_pinterest_count:function(e){void 0!==e.count&&1*e.count>0&&u.inject_share_count("sharing-pinterest-"+WPCOM_sharing_counts[e.url],e.count)},inject_share_count:function(e,t){i(document.querySelectorAll("a[data-shared="+e+"] > span"),function(e){var n,o=e.querySelector(".share-count");(n=o)&&n.parentNode&&n.parentNode.removeChild(n);var i=document.createElement("span");i.className="share-count",i.textContent=u.format_count(t),e.appendChild(i)})},format_count:function(e){return e<1e3?e:e>=1e3&&e<1e4?String(e).substring(0,1)+"K+":"10K+"},bump_sharing_count_stat:function(e){(new Image).src=document.location.protocol+"//pixel.wp.com/g.gif?v=wpcom-no-pv&x_sharing-count-request="+e+"&r="+Math.random()}};window.WPCOMSharing=u}function d(e,t){e.setAttribute("jetpack-share-click-count",t)}function l(e){var t=e.getAttribute("jetpack-share-click-count");return null===t?0:parseInt(t,10)}function h(e,t){var n,o=new XMLHttpRequest;o.open("POST",e,!0),o.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8"),o.setRequestHeader("x-requested-with","XMLHttpRequest"),o.send((n=t,(encodeURIComponent("email-share-nonce")+"="+encodeURIComponent(n)).replace(/%20/g,"+")))}function p(){m()}function m(){window.WPCOMSharing&&window.WPCOMSharing.get_counts(),i(document.querySelectorAll(".sharedaddy a"),function(e){var t=e.getAttribute("href");t&&-1!==t.indexOf("share=")&&-1===t.indexOf("&nb=1")&&e.setAttribute("href",t+"&nb=1")}),i(document.querySelectorAll(".sharedaddy a.sharing-anchor"),function(e){c.instantiateOrReuse(e)}),void 0!==document.ontouchstart&&document.body.classList.add("jp-sharing-input-touch"),i(document.querySelectorAll(".sharedaddy ul"),function(e){"true"!==e.getAttribute("data-sharing-events-added")&&(e.setAttribute("data-sharing-events-added","true"),i(e.querySelectorAll("a.share-print"),function(e){e.addEventListener("click",function(t){t.preventDefault(),t.stopPropagation();var n=e.getAttribute("href")||"",i=function(){if(-1===n.indexOf("#print")){var e=(new Date).getTime();t=e,o=n,(i=document.createElement("iframe")).setAttribute("style","position:fixed; top:100; left:100; height:1px; width:1px; border:none;"),i.setAttribute("id","printFrame-"+t),i.setAttribute("name",i.getAttribute("id")),i.setAttribute("src",o),i.setAttribute("onload",'frames["printFrame-'+t+'"].focus();frames["printFrame-'+t+'"].print();'),document.body.appendChild(i)}else window.print();var t,o,i}
2362,r=o(e,s);if(r){var a=c.getButtonInstanceFromPane(r);a&&(a.close(),i())}else i()})}),i(e.querySelectorAll("a.share-press-this"),function(e){var t="wp-press-this-"+Math.random().toString(36).slice(2);e.addEventListener("click",function(n){n.preventDefault(),n.stopPropagation();var o="";if(window.getSelection?o=window.getSelection():document.getSelection?o=document.getSelection():document.selection&&(o=document.selection.createRange().text),o){var i=e.getAttribute("href");e.setAttribute("href",i+"&sel="+encodeURI(o))}window.open(e.getAttribute("href"),t,"toolbar=0,resizable=1,scrollbars=1,status=1,width=720,height=570")||(document.location.href=e.getAttribute("href"))})}),i(e.querySelectorAll("a.share-email"),function(t){d(t,0);var n,o,r=t.getAttribute("data-email-share-nonce"),s=t.getAttribute("data-email-share-track-url");r&&s&&(n=s,o=window.location.protocol+"//"+window.location.hostname+"/",0===String(n).indexOf(o))&&t.addEventListener("click",function(){var n;d(n=t,l(n)+1),l(t)>2&&function(e,t){var n=t.parentElement;if(n.classList.contains("sd-content")){i(n.querySelectorAll(".share-email-error"),function(e){e.parentElement.removeChild(e)});var o=document.createElement("div");o.className="share-email-error";var r=document.createElement("h6");r.className="share-email-error-title",r.innerText=e.getAttribute("data-email-share-error-title"),o.appendChild(r);var s=document.createElement("p");s.className="share-email-error-text",s.innerText=e.getAttribute("data-email-share-error-text"),o.appendChild(s),n.appendChild(o)}}(t,e),h(s,r)})}))}),i(document.querySelectorAll("li.share-email, li.share-custom a.sharing-anchor"),function(e){e.classList.add("share-service-visible")})}"loading"!==document.readyState?p():document.addEventListener("DOMContentLoaded",p),document.body.addEventListener("is.post-load",m);var f={};!0!==window.WPCOM_sharing_popups_bound&&(document.body.addEventListener("click",function(e){var t=e.target;if(t&&1===t.nodeType){var n=function(e){if("A"===e.nodeName)return e;var t=e.parentNode;return t&&"A"===t.nodeName?t:null}(t);if(n){var o=function(e){var t=window.WPCOM_sharing_popups;if(!t)return null;for(var n="share-",o=(e.getAttribute("class")||"").split(/\s+/),i=0;i<o.length;i++)if(0===o[i].indexOf(n)){var r=o[i].slice(6);if("string"==typeof t[r])return r}return null}(n);o&&(e.preventDefault(),r&&r.close(),r=window.open(n.getAttribute("href"),function(e){return"string"!=typeof f[e]&&(f[e]="wpcom"+e+"-"+Math.random().toString(36).slice(2)),f[e]}(o),window.WPCOM_sharing_popups[o]))}}}),window.WPCOM_sharing_popups_bound=!0)}();;

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.