/*!
 * Isotope PACKAGED v3.0.6
 *
 * Licensed GPLv3 for open source use
 * or Isotope Commercial License for commercial use
 *
 * https://isotope.metafizzy.co
 * Copyright 2010-2018 Metafizzy
 */

!(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, s, a) {
		function u(t, e, o) {
			var n,
				s = "$()." + i + '("' + e + '")';
			return (
				t.each(function (t, u) {
					var h = a.data(u, i);
					if (!h)
						return void r(
							i + " not initialized. Cannot call methods, i.e. " + s
						);
					var d = h[e];
					if (!d || "_" == e.charAt(0))
						return void r(s + " is not a valid method");
					var l = d.apply(h, o);
					n = void 0 === n ? l : n;
				}),
				void 0 !== n ? n : t
			);
		}
		function h(t, e) {
			t.each(function (t, o) {
				var n = a.data(o, i);
				n ? (n.option(e), n._init()) : ((n = new s(o, e)), a.data(o, i, n));
			});
		}
		(a = a || e || t.jQuery),
			a &&
				(s.prototype.option ||
					(s.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 = n.call(arguments, 1);
						return u(this, t, e);
					}
					return h(this, t), this;
				}),
				o(a));
	}
	function o(t) {
		!t || (t && t.bridget) || (t.bridget = i);
	}
	var n = Array.prototype.slice,
		s = t.console,
		r =
			"undefined" == typeof s
				? function () {}
				: function (t) {
						s.error(t);
				  };
	return o(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 || {}),
						o = (i[t] = i[t] || []);
					return o.indexOf(e) == -1 && o.push(e), this;
				}
			}),
			(e.once = function (t, e) {
				if (t && e) {
					this.on(t, e);
					var i = (this._onceEvents = this._onceEvents || {}),
						o = (i[t] = i[t] || {});
					return (o[e] = !0), this;
				}
			}),
			(e.off = function (t, e) {
				var i = this._events && this._events[t];
				if (i && i.length) {
					var o = i.indexOf(e);
					return o != -1 && i.splice(o, 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 o = this._onceEvents && this._onceEvents[t], n = 0;
						n < i.length;
						n++
					) {
						var s = i[n],
							r = o && o[s];
						r && (this.off(t, s), delete o[s]), s.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 = t.indexOf("%") == -1 && !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;
				e < h;
				e++
			) {
				var i = u[e];
				t[i] = 0;
			}
			return t;
		}
		function o(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 n() {
			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 n = o(e);
				(r = 200 == Math.round(t(n.width))),
					(s.isBoxSizeOuter = r),
					i.removeChild(e);
			}
		}
		function s(e) {
			if (
				(n(),
				"string" == typeof e && (e = document.querySelector(e)),
				e && "object" == typeof e && e.nodeType)
			) {
				var s = o(e);
				if ("none" == s.display) return i();
				var a = {};
				(a.width = e.offsetWidth), (a.height = e.offsetHeight);
				for (
					var d = (a.isBorderBox = "border-box" == s.boxSizing), l = 0;
					l < h;
					l++
				) {
					var f = u[l],
						c = s[f],
						m = parseFloat(c);
					a[f] = isNaN(m) ? 0 : m;
				}
				var p = a.paddingLeft + a.paddingRight,
					y = a.paddingTop + a.paddingBottom,
					g = a.marginLeft + a.marginRight,
					v = a.marginTop + a.marginBottom,
					_ = a.borderLeftWidth + a.borderRightWidth,
					z = a.borderTopWidth + a.borderBottomWidth,
					I = d && r,
					x = t(s.width);
				x !== !1 && (a.width = x + (I ? 0 : p + _));
				var S = t(s.height);
				return (
					S !== !1 && (a.height = S + (I ? 0 : y + z)),
					(a.innerWidth = a.width - (p + _)),
					(a.innerHeight = a.height - (y + z)),
					(a.outerWidth = a.width + g),
					(a.outerHeight = a.height + v),
					a
				);
			}
		}
		var r,
			a =
				"undefined" == typeof console
					? e
					: function (t) {
							console.error(t);
					  },
			u = [
				"paddingLeft",
				"paddingRight",
				"paddingTop",
				"paddingBottom",
				"marginLeft",
				"marginRight",
				"marginTop",
				"marginBottom",
				"borderLeftWidth",
				"borderRightWidth",
				"borderTopWidth",
				"borderBottomWidth",
			],
			h = u.length,
			d = !1;
		return s;
	}),
	(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 o = e[i],
					n = o + "MatchesSelector";
				if (t[n]) return n;
			}
		})();
		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 o = 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 ? o.call(t) : [t];
		}),
			(i.removeFrom = function (t, e) {
				var i = t.indexOf(e);
				i != -1 && 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, o) {
				t = i.makeArray(t);
				var n = [];
				return (
					t.forEach(function (t) {
						if (t instanceof HTMLElement) {
							if (!o) return void n.push(t);
							e(t, o) && n.push(t);
							for (var i = t.querySelectorAll(o), s = 0; s < i.length; s++)
								n.push(i[s]);
						}
					}),
					n
				);
			}),
			(i.debounceMethod = function (t, e, i) {
				i = i || 100;
				var o = t.prototype[e],
					n = e + "Timeout";
				t.prototype[e] = function () {
					var t = this[n];
					clearTimeout(t);
					var e = arguments,
						s = this;
					this[n] = setTimeout(function () {
						o.apply(s, e), delete s[n];
					}, 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 n = t.console;
		return (
			(i.htmlInit = function (e, o) {
				i.docReady(function () {
					var s = i.toDashed(o),
						r = "data-" + s,
						a = document.querySelectorAll("[" + r + "]"),
						u = document.querySelectorAll(".js-" + s),
						h = i.makeArray(a).concat(i.makeArray(u)),
						d = r + "-options",
						l = t.jQuery;
					h.forEach(function (t) {
						var i,
							s = t.getAttribute(r) || t.getAttribute(d);
						try {
							i = s && JSON.parse(s);
						} catch (a) {
							return void (
								n &&
								n.error("Error parsing " + r + " on " + t.className + ": " + a)
							);
						}
						var u = new e(t, i);
						l && l.data(t, o, u);
					});
				});
			}),
			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 o(t, e) {
			t &&
				((this.element = t),
				(this.layout = e),
				(this.position = { x: 0, y: 0 }),
				this._create());
		}
		function n(t) {
			return t.replace(/([A-Z])/g, function (t) {
				return "-" + t.toLowerCase();
			});
		}
		var s = document.documentElement.style,
			r = "string" == typeof s.transition ? "transition" : "WebkitTransition",
			a = "string" == typeof s.transform ? "transform" : "WebkitTransform",
			u = {
				WebkitTransition: "webkitTransitionEnd",
				transition: "transitionend",
			}[r],
			h = {
				transform: a,
				transition: r,
				transitionDuration: r + "Duration",
				transitionProperty: r + "Property",
				transitionDelay: r + "Delay",
			},
			d = (o.prototype = Object.create(t.prototype));
		(d.constructor = o),
			(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 o = h[i] || i;
					e[o] = t[i];
				}
			}),
			(d.getPosition = function () {
				var t = getComputedStyle(this.element),
					e = this.layout._getOption("originLeft"),
					i = this.layout._getOption("originTop"),
					o = t[e ? "left" : "right"],
					n = t[i ? "top" : "bottom"],
					s = parseFloat(o),
					r = parseFloat(n),
					a = this.layout.size;
				o.indexOf("%") != -1 && (s = (s / 100) * a.width),
					n.indexOf("%") != -1 && (r = (r / 100) * a.height),
					(s = isNaN(s) ? 0 : s),
					(r = isNaN(r) ? 0 : r),
					(s -= e ? a.paddingLeft : a.paddingRight),
					(r -= i ? a.paddingTop : a.paddingBottom),
					(this.position.x = s),
					(this.position.y = r);
			}),
			(d.layoutPosition = function () {
				var t = this.layout.size,
					e = {},
					i = this.layout._getOption("originLeft"),
					o = this.layout._getOption("originTop"),
					n = i ? "paddingLeft" : "paddingRight",
					s = i ? "left" : "right",
					r = i ? "right" : "left",
					a = this.position.x + t[n];
				(e[s] = this.getXValue(a)), (e[r] = "");
				var u = o ? "paddingTop" : "paddingBottom",
					h = o ? "top" : "bottom",
					d = o ? "bottom" : "top",
					l = this.position.y + t[u];
				(e[h] = 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,
					o = this.position.y,
					n = t == this.position.x && e == this.position.y;
				if ((this.setPosition(t, e), n && !this.isTransitioning))
					return void this.layoutPosition();
				var s = t - i,
					r = e - o,
					a = {};
				(a.transform = this.getTranslate(s, r)),
					this.transition({
						to: a,
						onTransitionEnd: { transform: this.layoutPosition },
						isCleaning: !0,
					});
			}),
			(d.getTranslate = function (t, e) {
				var i = this.layout._getOption("originLeft"),
					o = this.layout._getOption("originTop");
				return (
					(t = i ? t : -t),
					(e = o ? 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 o = this.element.offsetHeight;
					o = null;
				}
				this.enableTransition(t.to),
					this.css(t.to),
					(this.isTransitioning = !0);
			});
		var l = "opacity," + n(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(u, this, !1);
			}
		}),
			(d.onwebkitTransitionEnd = function (t) {
				this.ontransitionend(t);
			}),
			(d.onotransitionend = function (t) {
				this.ontransitionend(t);
			});
		var f = { "-webkit-transform": "transform" };
		(d.ontransitionend = function (t) {
			if (t.target === this.element) {
				var e = this._transn,
					o = f[t.propertyName] || t.propertyName;
				if (
					(delete e.ingProperties[o],
					i(e.ingProperties) && this.disableTransition(),
					o in e.clean &&
						((this.element.style[t.propertyName] = ""), delete e.clean[o]),
					o in e.onEnd)
				) {
					var n = e.onEnd[o];
					n.call(this), delete e.onEnd[o];
				}
				this.emitEvent("transitionEnd", [this]);
			}
		}),
			(d.disableTransition = function () {
				this.removeTransitionStyles(),
					this.element.removeEventListener(u, this, !1),
					(this.isTransitioning = !1);
			}),
			(d._removeStyles = function (t) {
				var e = {};
				for (var i in t) e[i] = "";
				this.css(e);
			});
		var c = {
			transitionProperty: "",
			transitionDuration: "",
			transitionDelay: "",
		};
		return (
			(d.removeTransitionStyles = function () {
				this.css(c);
			}),
			(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 r && 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: "",
				});
			}),
			o
		);
	}),
	(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, o, n, s) {
					return e(t, i, o, n, s);
			  })
			: "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, o, n) {
		"use strict";
		function s(t, e) {
			var i = o.getQueryElement(t);
			if (!i)
				return void (
					u &&
					u.error(
						"Bad element for " + this.constructor.namespace + ": " + (i || t)
					)
				);
			(this.element = i),
				h && (this.$element = h(this.element)),
				(this.options = o.extend({}, this.constructor.defaults)),
				this.option(e);
			var n = ++l;
			(this.element.outlayerGUID = n), (f[n] = this), this._create();
			var s = this._getOption("initLayout");
			s && this.layout();
		}
		function r(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],
				o = e && e[2];
			if (!i.length) return 0;
			i = parseFloat(i);
			var n = m[o] || 1;
			return i * n;
		}
		var u = t.console,
			h = t.jQuery,
			d = function () {},
			l = 0,
			f = {};
		(s.namespace = "outlayer"),
			(s.Item = n),
			(s.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 c = s.prototype;
		o.extend(c, e.prototype),
			(c.option = function (t) {
				o.extend(this.options, t);
			}),
			(c._getOption = function (t) {
				var e = this.constructor.compatOptions[t];
				return e && void 0 !== this.options[e]
					? this.options[e]
					: this.options[t];
			}),
			(s.compatOptions = {
				initLayout: "isInitLayout",
				horizontal: "isHorizontal",
				layoutInstant: "isLayoutInstant",
				originLeft: "isOriginLeft",
				originTop: "isOriginTop",
				resize: "isResizeBound",
				resizeContainer: "isResizingContainer",
			}),
			(c._create = function () {
				this.reloadItems(),
					(this.stamps = []),
					this.stamp(this.options.stamp),
					o.extend(this.element.style, this.options.containerStyle);
				var t = this._getOption("resize");
				t && this.bindResize();
			}),
			(c.reloadItems = function () {
				this.items = this._itemize(this.element.children);
			}),
			(c._itemize = function (t) {
				for (
					var e = this._filterFindItemElements(t),
						i = this.constructor.Item,
						o = [],
						n = 0;
					n < e.length;
					n++
				) {
					var s = e[n],
						r = new i(s, this);
					o.push(r);
				}
				return o;
			}),
			(c._filterFindItemElements = function (t) {
				return o.filterFindElements(t, this.options.itemSelector);
			}),
			(c.getItemElements = function () {
				return this.items.map(function (t) {
					return t.element;
				});
			}),
			(c.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);
			}),
			(c._init = c.layout),
			(c._resetLayout = function () {
				this.getSize();
			}),
			(c.getSize = function () {
				this.size = i(this.element);
			}),
			(c._getMeasurement = function (t, e) {
				var o,
					n = this.options[t];
				n
					? ("string" == typeof n
							? (o = this.element.querySelector(n))
							: n instanceof HTMLElement && (o = n),
					  (this[t] = o ? i(o)[e] : n))
					: (this[t] = 0);
			}),
			(c.layoutItems = function (t, e) {
				(t = this._getItemsForLayout(t)),
					this._layoutItems(t, e),
					this._postLayout();
			}),
			(c._getItemsForLayout = function (t) {
				return t.filter(function (t) {
					return !t.isIgnored;
				});
			}),
			(c._layoutItems = function (t, e) {
				if ((this._emitCompleteOnItems("layout", t), t && t.length)) {
					var i = [];
					t.forEach(function (t) {
						var o = this._getItemLayoutPosition(t);
						(o.item = t), (o.isInstant = e || t.isLayoutInstant), i.push(o);
					}, this),
						this._processLayoutQueue(i);
				}
			}),
			(c._getItemLayoutPosition = function () {
				return { x: 0, y: 0 };
			}),
			(c._processLayoutQueue = function (t) {
				this.updateStagger(),
					t.forEach(function (t, e) {
						this._positionItem(t.item, t.x, t.y, t.isInstant, e);
					}, this);
			}),
			(c.updateStagger = function () {
				var t = this.options.stagger;
				return null === t || void 0 === t
					? void (this.stagger = 0)
					: ((this.stagger = a(t)), this.stagger);
			}),
			(c._positionItem = function (t, e, i, o, n) {
				o ? t.goTo(e, i) : (t.stagger(n * this.stagger), t.moveTo(e, i));
			}),
			(c._postLayout = function () {
				this.resizeContainer();
			}),
			(c.resizeContainer = function () {
				var t = this._getOption("resizeContainer");
				if (t) {
					var e = this._getContainerSize();
					e &&
						(this._setContainerMeasure(e.width, !0),
						this._setContainerMeasure(e.height, !1));
				}
			}),
			(c._getContainerSize = d),
			(c._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");
				}
			}),
			(c._emitCompleteOnItems = function (t, e) {
				function i() {
					n.dispatchEvent(t + "Complete", null, [e]);
				}
				function o() {
					r++, r == s && i();
				}
				var n = this,
					s = e.length;
				if (!e || !s) return void i();
				var r = 0;
				e.forEach(function (e) {
					e.once(t, o);
				});
			}),
			(c.dispatchEvent = function (t, e, i) {
				var o = e ? [e].concat(i) : i;
				if ((this.emitEvent(t, o), h))
					if (((this.$element = this.$element || h(this.element)), e)) {
						var n = h.Event(e);
						(n.type = t), this.$element.trigger(n, i);
					} else this.$element.trigger(t, i);
			}),
			(c.ignore = function (t) {
				var e = this.getItem(t);
				e && (e.isIgnored = !0);
			}),
			(c.unignore = function (t) {
				var e = this.getItem(t);
				e && delete e.isIgnored;
			}),
			(c.stamp = function (t) {
				(t = this._find(t)),
					t &&
						((this.stamps = this.stamps.concat(t)),
						t.forEach(this.ignore, this));
			}),
			(c.unstamp = function (t) {
				(t = this._find(t)),
					t &&
						t.forEach(function (t) {
							o.removeFrom(this.stamps, t), this.unignore(t);
						}, this);
			}),
			(c._find = function (t) {
				if (t)
					return (
						"string" == typeof t && (t = this.element.querySelectorAll(t)),
						(t = o.makeArray(t))
					);
			}),
			(c._manageStamps = function () {
				this.stamps &&
					this.stamps.length &&
					(this._getBoundingRect(),
					this.stamps.forEach(this._manageStamp, this));
			}),
			(c._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),
				};
			}),
			(c._manageStamp = d),
			(c._getElementOffset = function (t) {
				var e = t.getBoundingClientRect(),
					o = this._boundingRect,
					n = i(t),
					s = {
						left: e.left - o.left - n.marginLeft,
						top: e.top - o.top - n.marginTop,
						right: o.right - e.right - n.marginRight,
						bottom: o.bottom - e.bottom - n.marginBottom,
					};
				return s;
			}),
			(c.handleEvent = o.handleEvent),
			(c.bindResize = function () {
				t.addEventListener("resize", this), (this.isResizeBound = !0);
			}),
			(c.unbindResize = function () {
				t.removeEventListener("resize", this), (this.isResizeBound = !1);
			}),
			(c.onresize = function () {
				this.resize();
			}),
			o.debounceMethod(s, "onresize", 100),
			(c.resize = function () {
				this.isResizeBound && this.needsResizeLayout() && this.layout();
			}),
			(c.needsResizeLayout = function () {
				var t = i(this.element),
					e = this.size && t;
				return e && t.innerWidth !== this.size.innerWidth;
			}),
			(c.addItems = function (t) {
				var e = this._itemize(t);
				return e.length && (this.items = this.items.concat(e)), e;
			}),
			(c.appended = function (t) {
				var e = this.addItems(t);
				e.length && (this.layoutItems(e, !0), this.reveal(e));
			}),
			(c.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);
				}
			}),
			(c.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();
					});
				}
			}),
			(c.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();
					});
				}
			}),
			(c.revealItemElements = function (t) {
				var e = this.getItems(t);
				this.reveal(e);
			}),
			(c.hideItemElements = function (t) {
				var e = this.getItems(t);
				this.hide(e);
			}),
			(c.getItem = function (t) {
				for (var e = 0; e < this.items.length; e++) {
					var i = this.items[e];
					if (i.element == t) return i;
				}
			}),
			(c.getItems = function (t) {
				t = o.makeArray(t);
				var e = [];
				return (
					t.forEach(function (t) {
						var i = this.getItem(t);
						i && e.push(i);
					}, this),
					e
				);
			}),
			(c.remove = function (t) {
				var e = this.getItems(t);
				this._emitCompleteOnItems("remove", e),
					e &&
						e.length &&
						e.forEach(function (t) {
							t.remove(), o.removeFrom(this.items, t);
						}, this);
			}),
			(c.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 f[e],
					delete this.element.outlayerGUID,
					h && h.removeData(this.element, this.constructor.namespace);
			}),
			(s.data = function (t) {
				t = o.getQueryElement(t);
				var e = t && t.outlayerGUID;
				return e && f[e];
			}),
			(s.create = function (t, e) {
				var i = r(s);
				return (
					(i.defaults = o.extend({}, s.defaults)),
					o.extend(i.defaults, e),
					(i.compatOptions = o.extend({}, s.compatOptions)),
					(i.namespace = t),
					(i.data = s.data),
					(i.Item = r(n)),
					o.htmlInit(i, t),
					h && h.bridget && h.bridget(t, i),
					i
				);
			});
		var m = { ms: 1, s: 1e3 };
		return (s.Item = n), s;
	}),
	(function (t, e) {
		"function" == typeof define && define.amd
			? define("isotope-layout/js/item", ["outlayer/outlayer"], e)
			: "object" == typeof module && module.exports
			? (module.exports = e(require("outlayer")))
			: ((t.Isotope = t.Isotope || {}), (t.Isotope.Item = e(t.Outlayer)));
	})(window, function (t) {
		"use strict";
		function e() {
			t.Item.apply(this, arguments);
		}
		var i = (e.prototype = Object.create(t.Item.prototype)),
			o = i._create;
		(i._create = function () {
			(this.id = this.layout.itemGUID++), o.call(this), (this.sortData = {});
		}),
			(i.updateSortData = function () {
				if (!this.isIgnored) {
					(this.sortData.id = this.id),
						(this.sortData["original-order"] = this.id),
						(this.sortData.random = Math.random());
					var t = this.layout.options.getSortData,
						e = this.layout._sorters;
					for (var i in t) {
						var o = e[i];
						this.sortData[i] = o(this.element, this);
					}
				}
			});
		var n = i.destroy;
		return (
			(i.destroy = function () {
				n.apply(this, arguments), this.css({ display: "" });
			}),
			e
		);
	}),
	(function (t, e) {
		"function" == typeof define && define.amd
			? define("isotope-layout/js/layout-mode", [
					"get-size/get-size",
					"outlayer/outlayer",
			  ], e)
			: "object" == typeof module && module.exports
			? (module.exports = e(require("get-size"), require("outlayer")))
			: ((t.Isotope = t.Isotope || {}),
			  (t.Isotope.LayoutMode = e(t.getSize, t.Outlayer)));
	})(window, function (t, e) {
		"use strict";
		function i(t) {
			(this.isotope = t),
				t &&
					((this.options = t.options[this.namespace]),
					(this.element = t.element),
					(this.items = t.filteredItems),
					(this.size = t.size));
		}
		var o = i.prototype,
			n = [
				"_resetLayout",
				"_getItemLayoutPosition",
				"_manageStamp",
				"_getContainerSize",
				"_getElementOffset",
				"needsResizeLayout",
				"_getOption",
			];
		return (
			n.forEach(function (t) {
				o[t] = function () {
					return e.prototype[t].apply(this.isotope, arguments);
				};
			}),
			(o.needsVerticalResizeLayout = function () {
				var e = t(this.isotope.element),
					i = this.isotope.size && e;
				return i && e.innerHeight != this.isotope.size.innerHeight;
			}),
			(o._getMeasurement = function () {
				this.isotope._getMeasurement.apply(this, arguments);
			}),
			(o.getColumnWidth = function () {
				this.getSegmentSize("column", "Width");
			}),
			(o.getRowHeight = function () {
				this.getSegmentSize("row", "Height");
			}),
			(o.getSegmentSize = function (t, e) {
				var i = t + e,
					o = "outer" + e;
				if ((this._getMeasurement(i, o), !this[i])) {
					var n = this.getFirstItemSize();
					this[i] = (n && n[o]) || this.isotope.size["inner" + e];
				}
			}),
			(o.getFirstItemSize = function () {
				var e = this.isotope.filteredItems[0];
				return e && e.element && t(e.element);
			}),
			(o.layout = function () {
				this.isotope.layout.apply(this.isotope, arguments);
			}),
			(o.getSize = function () {
				this.isotope.getSize(), (this.size = this.isotope.size);
			}),
			(i.modes = {}),
			(i.create = function (t, e) {
				function n() {
					i.apply(this, arguments);
				}
				return (
					(n.prototype = Object.create(o)),
					(n.prototype.constructor = n),
					e && (n.options = e),
					(n.prototype.namespace = t),
					(i.modes[t] = n),
					n
				);
			}),
			i
		);
	}),
	(function (t, e) {
		"function" == typeof define && define.amd
			? define("masonry-layout/masonry", [
					"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 o = i.prototype;
		return (
			(o._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);
			}),
			(o.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 o = (this.columnWidth += this.gutter),
					n = this.containerWidth + this.gutter,
					s = n / o,
					r = o - (n % o),
					a = r && r < 1 ? "round" : "floor";
				(s = Math[a](s)), (this.cols = Math.max(s, 1));
			}),
			(o.getContainerWidth = function () {
				var t = this._getOption("fitWidth"),
					i = t ? this.element.parentNode : this.element,
					o = e(i);
				this.containerWidth = o && o.innerWidth;
			}),
			(o._getItemLayoutPosition = function (t) {
				t.getSize();
				var e = t.size.outerWidth % this.columnWidth,
					i = e && e < 1 ? "round" : "ceil",
					o = Math[i](t.size.outerWidth / this.columnWidth);
				o = Math.min(o, this.cols);
				for (
					var n = this.options.horizontalOrder
							? "_getHorizontalColPosition"
							: "_getTopColPosition",
						s = this[n](o, t),
						r = { x: this.columnWidth * s.col, y: s.y },
						a = s.y + t.size.outerHeight,
						u = o + s.col,
						h = s.col;
					h < u;
					h++
				)
					this.colYs[h] = a;
				return r;
			}),
			(o._getTopColPosition = function (t) {
				var e = this._getTopColGroup(t),
					i = Math.min.apply(Math, e);
				return { col: e.indexOf(i), y: i };
			}),
			(o._getTopColGroup = function (t) {
				if (t < 2) return this.colYs;
				for (var e = [], i = this.cols + 1 - t, o = 0; o < i; o++)
					e[o] = this._getColGroupY(o, t);
				return e;
			}),
			(o._getColGroupY = function (t, e) {
				if (e < 2) return this.colYs[t];
				var i = this.colYs.slice(t, t + e);
				return Math.max.apply(Math, i);
			}),
			(o._getHorizontalColPosition = function (t, e) {
				var i = this.horizontalColIndex % this.cols,
					o = t > 1 && i + t > this.cols;
				i = o ? 0 : i;
				var n = e.size.outerWidth && e.size.outerHeight;
				return (
					(this.horizontalColIndex = n ? i + t : this.horizontalColIndex),
					{ col: i, y: this._getColGroupY(i, t) }
				);
			}),
			(o._manageStamp = function (t) {
				var i = e(t),
					o = this._getElementOffset(t),
					n = this._getOption("originLeft"),
					s = n ? o.left : o.right,
					r = s + i.outerWidth,
					a = Math.floor(s / this.columnWidth);
				a = Math.max(0, a);
				var u = Math.floor(r / this.columnWidth);
				(u -= r % this.columnWidth ? 0 : 1), (u = Math.min(this.cols - 1, u));
				for (
					var h = this._getOption("originTop"),
						d = (h ? o.top : o.bottom) + i.outerHeight,
						l = a;
					l <= u;
					l++
				)
					this.colYs[l] = Math.max(d, this.colYs[l]);
			}),
			(o._getContainerSize = function () {
				this.maxY = Math.max.apply(Math, this.colYs);
				var t = { height: this.maxY };
				return (
					this._getOption("fitWidth") &&
						(t.width = this._getContainerFitWidth()),
					t
				);
			}),
			(o._getContainerFitWidth = function () {
				for (var t = 0, e = this.cols; --e && 0 === this.colYs[e]; ) t++;
				return (this.cols - t) * this.columnWidth - this.gutter;
			}),
			(o.needsResizeLayout = function () {
				var t = this.containerWidth;
				return this.getContainerWidth(), t != this.containerWidth;
			}),
			i
		);
	}),
	(function (t, e) {
		"function" == typeof define && define.amd
			? define("isotope-layout/js/layout-modes/masonry", [
					"../layout-mode",
					"masonry-layout/masonry",
			  ], e)
			: "object" == typeof module && module.exports
			? (module.exports = e(
					require("../layout-mode"),
					require("masonry-layout")
			  ))
			: e(t.Isotope.LayoutMode, t.Masonry);
	})(window, function (t, e) {
		"use strict";
		var i = t.create("masonry"),
			o = i.prototype,
			n = { _getElementOffset: !0, layout: !0, _getMeasurement: !0 };
		for (var s in e.prototype) n[s] || (o[s] = e.prototype[s]);
		var r = o.measureColumns;
		o.measureColumns = function () {
			(this.items = this.isotope.filteredItems), r.call(this);
		};
		var a = o._getOption;
		return (
			(o._getOption = function (t) {
				return "fitWidth" == t
					? void 0 !== this.options.isFitWidth
						? this.options.isFitWidth
						: this.options.fitWidth
					: a.apply(this.isotope, arguments);
			}),
			i
		);
	}),
	(function (t, e) {
		"function" == typeof define && define.amd
			? define("isotope-layout/js/layout-modes/fit-rows", ["../layout-mode"], e)
			: "object" == typeof exports
			? (module.exports = e(require("../layout-mode")))
			: e(t.Isotope.LayoutMode);
	})(window, function (t) {
		"use strict";
		var e = t.create("fitRows"),
			i = e.prototype;
		return (
			(i._resetLayout = function () {
				(this.x = 0),
					(this.y = 0),
					(this.maxY = 0),
					this._getMeasurement("gutter", "outerWidth");
			}),
			(i._getItemLayoutPosition = function (t) {
				t.getSize();
				var e = t.size.outerWidth + this.gutter,
					i = this.isotope.size.innerWidth + this.gutter;
				0 !== this.x && e + this.x > i && ((this.x = 0), (this.y = this.maxY));
				var o = { x: this.x, y: this.y };
				return (
					(this.maxY = Math.max(this.maxY, this.y + t.size.outerHeight)),
					(this.x += e),
					o
				);
			}),
			(i._getContainerSize = function () {
				return { height: this.maxY };
			}),
			e
		);
	}),
	(function (t, e) {
		"function" == typeof define && define.amd
			? define("isotope-layout/js/layout-modes/vertical", ["../layout-mode"], e)
			: "object" == typeof module && module.exports
			? (module.exports = e(require("../layout-mode")))
			: e(t.Isotope.LayoutMode);
	})(window, function (t) {
		"use strict";
		var e = t.create("vertical", { horizontalAlignment: 0 }),
			i = e.prototype;
		return (
			(i._resetLayout = function () {
				this.y = 0;
			}),
			(i._getItemLayoutPosition = function (t) {
				t.getSize();
				var e =
						(this.isotope.size.innerWidth - t.size.outerWidth) *
						this.options.horizontalAlignment,
					i = this.y;
				return (this.y += t.size.outerHeight), { x: e, y: i };
			}),
			(i._getContainerSize = function () {
				return { height: this.y };
			}),
			e
		);
	}),
	(function (t, e) {
		"function" == typeof define && define.amd
			? define([
					"outlayer/outlayer",
					"get-size/get-size",
					"desandro-matches-selector/matches-selector",
					"fizzy-ui-utils/utils",
					"isotope-layout/js/item",
					"isotope-layout/js/layout-mode",
					"isotope-layout/js/layout-modes/masonry",
					"isotope-layout/js/layout-modes/fit-rows",
					"isotope-layout/js/layout-modes/vertical",
			  ], function (i, o, n, s, r, a) {
					return e(t, i, o, n, s, r, a);
			  })
			: "object" == typeof module && module.exports
			? (module.exports = e(
					t,
					require("outlayer"),
					require("get-size"),
					require("desandro-matches-selector"),
					require("fizzy-ui-utils"),
					require("isotope-layout/js/item"),
					require("isotope-layout/js/layout-mode"),
					require("isotope-layout/js/layout-modes/masonry"),
					require("isotope-layout/js/layout-modes/fit-rows"),
					require("isotope-layout/js/layout-modes/vertical")
			  ))
			: (t.Isotope = e(
					t,
					t.Outlayer,
					t.getSize,
					t.matchesSelector,
					t.fizzyUIUtils,
					t.Isotope.Item,
					t.Isotope.LayoutMode
			  ));
	})(window, function (t, e, i, o, n, s, r) {
		function a(t, e) {
			return function (i, o) {
				for (var n = 0; n < t.length; n++) {
					var s = t[n],
						r = i.sortData[s],
						a = o.sortData[s];
					if (r > a || r < a) {
						var u = void 0 !== e[s] ? e[s] : e,
							h = u ? 1 : -1;
						return (r > a ? 1 : -1) * h;
					}
				}
				return 0;
			};
		}
		var u = t.jQuery,
			h = String.prototype.trim
				? function (t) {
						return t.trim();
				  }
				: function (t) {
						return t.replace(/^\s+|\s+$/g, "");
				  },
			d = e.create("isotope", {
				layoutMode: "masonry",
				isJQueryFiltering: !0,
				sortAscending: !0,
			});
		(d.Item = s), (d.LayoutMode = r);
		var l = d.prototype;
		(l._create = function () {
			(this.itemGUID = 0),
				(this._sorters = {}),
				this._getSorters(),
				e.prototype._create.call(this),
				(this.modes = {}),
				(this.filteredItems = this.items),
				(this.sortHistory = ["original-order"]);
			for (var t in r.modes) this._initLayoutMode(t);
		}),
			(l.reloadItems = function () {
				(this.itemGUID = 0), e.prototype.reloadItems.call(this);
			}),
			(l._itemize = function () {
				for (
					var t = e.prototype._itemize.apply(this, arguments), i = 0;
					i < t.length;
					i++
				) {
					var o = t[i];
					o.id = this.itemGUID++;
				}
				return this._updateItemsSortData(t), t;
			}),
			(l._initLayoutMode = function (t) {
				var e = r.modes[t],
					i = this.options[t] || {};
				(this.options[t] = e.options ? n.extend(e.options, i) : i),
					(this.modes[t] = new e(this));
			}),
			(l.layout = function () {
				return !this._isLayoutInited && this._getOption("initLayout")
					? void this.arrange()
					: void this._layout();
			}),
			(l._layout = function () {
				var t = this._getIsInstant();
				this._resetLayout(),
					this._manageStamps(),
					this.layoutItems(this.filteredItems, t),
					(this._isLayoutInited = !0);
			}),
			(l.arrange = function (t) {
				this.option(t), this._getIsInstant();
				var e = this._filter(this.items);
				(this.filteredItems = e.matches),
					this._bindArrangeComplete(),
					this._isInstant
						? this._noTransition(this._hideReveal, [e])
						: this._hideReveal(e),
					this._sort(),
					this._layout();
			}),
			(l._init = l.arrange),
			(l._hideReveal = function (t) {
				this.reveal(t.needReveal), this.hide(t.needHide);
			}),
			(l._getIsInstant = function () {
				var t = this._getOption("layoutInstant"),
					e = void 0 !== t ? t : !this._isLayoutInited;
				return (this._isInstant = e), e;
			}),
			(l._bindArrangeComplete = function () {
				function t() {
					e &&
						i &&
						o &&
						n.dispatchEvent("arrangeComplete", null, [n.filteredItems]);
				}
				var e,
					i,
					o,
					n = this;
				this.once("layoutComplete", function () {
					(e = !0), t();
				}),
					this.once("hideComplete", function () {
						(i = !0), t();
					}),
					this.once("revealComplete", function () {
						(o = !0), t();
					});
			}),
			(l._filter = function (t) {
				var e = this.options.filter;
				e = e || "*";
				for (
					var i = [], o = [], n = [], s = this._getFilterTest(e), r = 0;
					r < t.length;
					r++
				) {
					var a = t[r];
					if (!a.isIgnored) {
						var u = s(a);
						u && i.push(a),
							u && a.isHidden ? o.push(a) : u || a.isHidden || n.push(a);
					}
				}
				return { matches: i, needReveal: o, needHide: n };
			}),
			(l._getFilterTest = function (t) {
				return u && this.options.isJQueryFiltering
					? function (e) {
							return u(e.element).is(t);
					  }
					: "function" == typeof t
					? function (e) {
							return t(e.element);
					  }
					: function (e) {
							return o(e.element, t);
					  };
			}),
			(l.updateSortData = function (t) {
				var e;
				t ? ((t = n.makeArray(t)), (e = this.getItems(t))) : (e = this.items),
					this._getSorters(),
					this._updateItemsSortData(e);
			}),
			(l._getSorters = function () {
				var t = this.options.getSortData;
				for (var e in t) {
					var i = t[e];
					this._sorters[e] = f(i);
				}
			}),
			(l._updateItemsSortData = function (t) {
				for (var e = t && t.length, i = 0; e && i < e; i++) {
					var o = t[i];
					o.updateSortData();
				}
			});
		var f = (function () {
			function t(t) {
				if ("string" != typeof t) return t;
				var i = h(t).split(" "),
					o = i[0],
					n = o.match(/^\[(.+)\]$/),
					s = n && n[1],
					r = e(s, o),
					a = d.sortDataParsers[i[1]];
				return (t = a
					? function (t) {
							return t && a(r(t));
					  }
					: function (t) {
							return t && r(t);
					  });
			}
			function e(t, e) {
				return t
					? function (e) {
							return e.getAttribute(t);
					  }
					: function (t) {
							var i = t.querySelector(e);
							return i && i.textContent;
					  };
			}
			return t;
		})();
		(d.sortDataParsers = {
			parseInt: function (t) {
				return parseInt(t, 10);
			},
			parseFloat: function (t) {
				return parseFloat(t);
			},
		}),
			(l._sort = function () {
				if (this.options.sortBy) {
					var t = n.makeArray(this.options.sortBy);
					this._getIsSameSortBy(t) ||
						(this.sortHistory = t.concat(this.sortHistory));
					var e = a(this.sortHistory, this.options.sortAscending);
					this.filteredItems.sort(e);
				}
			}),
			(l._getIsSameSortBy = function (t) {
				for (var e = 0; e < t.length; e++)
					if (t[e] != this.sortHistory[e]) return !1;
				return !0;
			}),
			(l._mode = function () {
				var t = this.options.layoutMode,
					e = this.modes[t];
				if (!e) throw new Error("No layout mode: " + t);
				return (e.options = this.options[t]), e;
			}),
			(l._resetLayout = function () {
				e.prototype._resetLayout.call(this), this._mode()._resetLayout();
			}),
			(l._getItemLayoutPosition = function (t) {
				return this._mode()._getItemLayoutPosition(t);
			}),
			(l._manageStamp = function (t) {
				this._mode()._manageStamp(t);
			}),
			(l._getContainerSize = function () {
				return this._mode()._getContainerSize();
			}),
			(l.needsResizeLayout = function () {
				return this._mode().needsResizeLayout();
			}),
			(l.appended = function (t) {
				var e = this.addItems(t);
				if (e.length) {
					var i = this._filterRevealAdded(e);
					this.filteredItems = this.filteredItems.concat(i);
				}
			}),
			(l.prepended = function (t) {
				var e = this._itemize(t);
				if (e.length) {
					this._resetLayout(), this._manageStamps();
					var i = this._filterRevealAdded(e);
					this.layoutItems(this.filteredItems),
						(this.filteredItems = i.concat(this.filteredItems)),
						(this.items = e.concat(this.items));
				}
			}),
			(l._filterRevealAdded = function (t) {
				var e = this._filter(t);
				return (
					this.hide(e.needHide),
					this.reveal(e.matches),
					this.layoutItems(e.matches, !0),
					e.matches
				);
			}),
			(l.insert = function (t) {
				var e = this.addItems(t);
				if (e.length) {
					var i,
						o,
						n = e.length;
					for (i = 0; i < n; i++)
						(o = e[i]), this.element.appendChild(o.element);
					var s = this._filter(e).matches;
					for (i = 0; i < n; i++) e[i].isLayoutInstant = !0;
					for (this.arrange(), i = 0; i < n; i++) delete e[i].isLayoutInstant;
					this.reveal(s);
				}
			});
		var c = l.remove;
		return (
			(l.remove = function (t) {
				t = n.makeArray(t);
				var e = this.getItems(t);
				c.call(this, t);
				for (var i = e && e.length, o = 0; i && o < i; o++) {
					var s = e[o];
					n.removeFrom(this.filteredItems, s);
				}
			}),
			(l.shuffle = function () {
				for (var t = 0; t < this.items.length; t++) {
					var e = this.items[t];
					e.sortData.random = Math.random();
				}
				(this.options.sortBy = "random"), this._sort(), this._layout();
			}),
			(l._noTransition = function (t, e) {
				var i = this.options.transitionDuration;
				this.options.transitionDuration = 0;
				var o = t.apply(this, e);
				return (this.options.transitionDuration = i), o;
			}),
			(l.getFilteredItemElements = function () {
				return this.filteredItems.map(function (t) {
					return t.element;
				});
			}),
			d
		);
	});
