/*!
 * Isotope PACKAGED v2.2.2
 *
 * Licensed GPLv3 for open source use
 * or Isotope Commercial License for commercial use
 *
 * http://isotope.metafizzy.co
 * Copyright 2015 Metafizzy
 */

!function (a) {
	function b() {
	}

	function c(a) {
		function c(b) {
			b.prototype.option || (b.prototype.option = function (b) {
				a.isPlainObject(b) && (this.options = a.extend(!0, this.options, b))
			})
		}

		function e(b, c) {
			a.fn[b] = function (e) {
				if ("string" == typeof e) {
					for (var g = d.call(arguments, 1), h = 0, i = this.length; i > h; h++) {
						var j = this[h], k = a.data(j, b);
						if (k)if (a.isFunction(k[e]) && "_" !== e.charAt(0)) {
							var l = k[e].apply(k, g);
							if (void 0 !== l)return l
						} else f("no such method '" + e + "' for " + b + " instance"); else f("cannot call methods on " + b + " prior to initialization; attempted to call '" + e + "'")
					}
					return this
				}
				return this.each(function () {
					var d = a.data(this, b);
					d ? (d.option(e), d._init()) : (d = new c(this, e), a.data(this, b, d))
				})
			}
		}

		if (a) {
			var f = "undefined" == typeof console ? b : function (a) {
				console.error(a)
			};
			return a.bridget = function (a, b) {
				c(b), e(a, b)
			}, a.bridget
		}
	}

	var d = Array.prototype.slice;
	"function" == typeof define && define.amd ? define("jquery-bridget/jquery.bridget", ["jquery"], c) : c("object" == typeof exports ? require("jquery") : a.jQuery)
}(window), function (a) {
	function b(b) {
		var c = a.event;
		return c.target = c.target || c.srcElement || b, c
	}

	var c = document.documentElement, d = function () {
	};
	c.addEventListener ? d = function (a, b, c) {
		a.addEventListener(b, c, !1)
	} : c.attachEvent && (d = function (a, c, d) {
		a[c + d] = d.handleEvent ? function () {
			var c = b(a);
			d.handleEvent.call(d, c)
		} : function () {
			var c = b(a);
			d.call(a, c)
		}, a.attachEvent("on" + c, a[c + d])
	});
	var e = function () {
	};
	c.removeEventListener ? e = function (a, b, c) {
		a.removeEventListener(b, c, !1)
	} : c.detachEvent && (e = function (a, b, c) {
		a.detachEvent("on" + b, a[b + c]);
		try {
			delete a[b + c]
		} catch (d) {
			a[b + c] = void 0
		}
	});
	var f = {bind: d, unbind: e};
	"function" == typeof define && define.amd ? define("eventie/eventie", f) : "object" == typeof exports ? module.exports = f : a.eventie = f
}(window), function () {
	"use strict";
	function a() {
	}

	function b(a, b) {
		for (var c = a.length; c--;)if (a[c].listener === b)return c;
		return -1
	}

	function c(a) {
		return function () {
			return this[a].apply(this, arguments)
		}
	}

	var d = a.prototype, e = this, f = e.EventEmitter;
	d.getListeners = function (a) {
		var b, c, d = this._getEvents();
		if (a instanceof RegExp) {
			b = {};
			for (c in d)d.hasOwnProperty(c) && a.test(c) && (b[c] = d[c])
		} else b = d[a] || (d[a] = []);
		return b
	}, d.flattenListeners = function (a) {
		var b, c = [];
		for (b = 0; b < a.length; b += 1)c.push(a[b].listener);
		return c
	}, d.getListenersAsObject = function (a) {
		var b, c = this.getListeners(a);
		return c instanceof Array && (b = {}, b[a] = c), b || c
	}, d.addListener = function (a, c) {
		var d, e = this.getListenersAsObject(a), f = "object" == typeof c;
		for (d in e)e.hasOwnProperty(d) && -1 === b(e[d], c) && e[d].push(f ? c : {listener: c, once: !1});
		return this
	}, d.on = c("addListener"), d.addOnceListener = function (a, b) {
		return this.addListener(a, {listener: b, once: !0})
	}, d.once = c("addOnceListener"), d.defineEvent = function (a) {
		return this.getListeners(a), this
	}, d.defineEvents = function (a) {
		for (var b = 0; b < a.length; b += 1)this.defineEvent(a[b]);
		return this
	}, d.removeListener = function (a, c) {
		var d, e, f = this.getListenersAsObject(a);
		for (e in f)f.hasOwnProperty(e) && (d = b(f[e], c), -1 !== d && f[e].splice(d, 1));
		return this
	}, d.off = c("removeListener"), d.addListeners = function (a, b) {
		return this.manipulateListeners(!1, a, b)
	}, d.removeListeners = function (a, b) {
		return this.manipulateListeners(!0, a, b)
	}, d.manipulateListeners = function (a, b, c) {
		var d, e, f = a ? this.removeListener : this.addListener, g = a ? this.removeListeners : this.addListeners;
		if ("object" != typeof b || b instanceof RegExp)for (d = c.length; d--;)f.call(this, b, c[d]); else for (d in b)b.hasOwnProperty(d) && (e = b[d]) && ("function" == typeof e ? f.call(this, d, e) : g.call(this, d, e));
		return this
	}, d.removeEvent = function (a) {
		var b, c = typeof a, d = this._getEvents();
		if ("string" === c)delete d[a]; else if (a instanceof RegExp)for (b in d)d.hasOwnProperty(b) && a.test(b) && delete d[b]; else delete this._events;
		return this
	}, d.removeAllListeners = c("removeEvent"), d.emitEvent = function (a, b) {
		var c, d, e, f, g = this.getListenersAsObject(a);
		for (e in g)if (g.hasOwnProperty(e))for (d = g[e].length; d--;)c = g[e][d], c.once === !0 && this.removeListener(a, c.listener), f = c.listener.apply(this, b || []), f === this._getOnceReturnValue() && this.removeListener(a, c.listener);
		return this
	}, d.trigger = c("emitEvent"), d.emit = function (a) {
		var b = Array.prototype.slice.call(arguments, 1);
		return this.emitEvent(a, b)
	}, d.setOnceReturnValue = function (a) {
		return this._onceReturnValue = a, this
	}, d._getOnceReturnValue = function () {
		return this.hasOwnProperty("_onceReturnValue") ? this._onceReturnValue : !0
	}, d._getEvents = function () {
		return this._events || (this._events = {})
	}, a.noConflict = function () {
		return e.EventEmitter = f, a
	}, "function" == typeof define && define.amd ? define("eventEmitter/EventEmitter", [], function () {
		return a
	}) : "object" == typeof module && module.exports ? module.exports = a : e.EventEmitter = a
}.call(this), function (a) {
	function b(a) {
		if (a) {
			if ("string" == typeof d[a])return a;
			a = a.charAt(0).toUpperCase() + a.slice(1);
			for (var b, e = 0, f = c.length; f > e; e++)if (b = c[e] + a, "string" == typeof d[b])return b
		}
	}

	var c = "Webkit Moz ms Ms O".split(" "), d = document.documentElement.style;
	"function" == typeof define && define.amd ? define("get-style-property/get-style-property", [], function () {
		return b
	}) : "object" == typeof exports ? module.exports = b : a.getStyleProperty = b
}(window), function (a, b) {
	function c(a) {
		var b = parseFloat(a), c = -1 === a.indexOf("%") && !isNaN(b);
		return c && b
	}

	function d() {
	}

	function e() {
		for (var a = {
			width: 0,
			height: 0,
			innerWidth: 0,
			innerHeight: 0,
			outerWidth: 0,
			outerHeight: 0
		}, b = 0, c = h.length; c > b; b++) {
			var d = h[b];
			a[d] = 0
		}
		return a
	}

	function f(b) {
		function d() {
			if (!m) {
				m = !0;
				var d = a.getComputedStyle;
				if (j = function () {
						var a = d ? function (a) {
							return d(a, null)
						} : function (a) {
							return a.currentStyle
						};
						return function (b) {
							var c = a(b);
							return c || g("Style returned " + c + ". Are you running this code in a hidden iframe on Firefox? See http://bit.ly/getsizebug1"), c
						}
					}(), k = b("boxSizing")) {
					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[k] = "border-box";
					var f = document.body || document.documentElement;
					f.appendChild(e);
					var h = j(e);
					l = 200 === c(h.width), f.removeChild(e)
				}
			}
		}

		function f(a) {
			if (d(), "string" == typeof a && (a = document.querySelector(a)), a && "object" == typeof a && a.nodeType) {
				var b = j(a);
				if ("none" === b.display)return e();
				var f = {};
				f.width = a.offsetWidth, f.height = a.offsetHeight;
				for (var g = f.isBorderBox = !(!k || !b[k] || "border-box" !== b[k]), m = 0, n = h.length; n > m; m++) {
					var o = h[m], p = b[o];
					p = i(a, p);
					var q = parseFloat(p);
					f[o] = isNaN(q) ? 0 : q
				}
				var r = f.paddingLeft + f.paddingRight, s = f.paddingTop + f.paddingBottom, t = f.marginLeft + f.marginRight, u = f.marginTop + f.marginBottom, v = f.borderLeftWidth + f.borderRightWidth, w = f.borderTopWidth + f.borderBottomWidth, x = g && l, y = c(b.width);
				y !== !1 && (f.width = y + (x ? 0 : r + v));
				var z = c(b.height);
				return z !== !1 && (f.height = z + (x ? 0 : s + w)), f.innerWidth = f.width - (r + v), f.innerHeight = f.height - (s + w), f.outerWidth = f.width + t, f.outerHeight = f.height + u, f
			}
		}

		function i(b, c) {
			if (a.getComputedStyle || -1 === c.indexOf("%"))return c;
			var d = b.style, e = d.left, f = b.runtimeStyle, g = f && f.left;
			return g && (f.left = b.currentStyle.left), d.left = c, c = d.pixelLeft, d.left = e, g && (f.left = g), c
		}

		var j, k, l, m = !1;
		return f
	}

	var g = "undefined" == typeof console ? d : function (a) {
		console.error(a)
	}, h = ["paddingLeft", "paddingRight", "paddingTop", "paddingBottom", "marginLeft", "marginRight", "marginTop", "marginBottom", "borderLeftWidth", "borderRightWidth", "borderTopWidth", "borderBottomWidth"];
	"function" == typeof define && define.amd ? define("get-size/get-size", ["get-style-property/get-style-property"], f) : "object" == typeof exports ? module.exports = f(require("desandro-get-style-property")) : a.getSize = f(a.getStyleProperty)
}(window), function (a) {
	function b(a) {
		"function" == typeof a && (b.isReady ? a() : g.push(a))
	}

	function c(a) {
		var c = "readystatechange" === a.type && "complete" !== f.readyState;
		b.isReady || c || d()
	}

	function d() {
		b.isReady = !0;
		for (var a = 0, c = g.length; c > a; a++) {
			var d = g[a];
			d()
		}
	}

	function e(e) {
		return "complete" === f.readyState ? d() : (e.bind(f, "DOMContentLoaded", c), e.bind(f, "readystatechange", c), e.bind(a, "load", c)), b
	}

	var f = a.document, g = [];
	b.isReady = !1, "function" == typeof define && define.amd ? define("doc-ready/doc-ready", ["eventie/eventie"], e) : "object" == typeof exports ? module.exports = e(require("eventie")) : a.docReady = e(a.eventie)
}(window), function (a) {
	"use strict";
	function b(a, b) {
		return a[g](b)
	}

	function c(a) {
		if (!a.parentNode) {
			var b = document.createDocumentFragment();
			b.appendChild(a)
		}
	}

	function d(a, b) {
		c(a);
		for (var d = a.parentNode.querySelectorAll(b), e = 0, f = d.length; f > e; e++)if (d[e] === a)return !0;
		return !1
	}

	function e(a, d) {
		return c(a), b(a, d)
	}

	var f, g = function () {
		if (a.matches)return "matches";
		if (a.matchesSelector)return "matchesSelector";
		for (var b = ["webkit", "moz", "ms", "o"], c = 0, d = b.length; d > c; c++) {
			var e = b[c], f = e + "MatchesSelector";
			if (a[f])return f
		}
	}();
	if (g) {
		var h = document.createElement("div"), i = b(h, "div");
		f = i ? b : e
	} else f = d;
	"function" == typeof define && define.amd ? define("matches-selector/matches-selector", [], function () {
		return f
	}) : "object" == typeof exports ? module.exports = f : window.matchesSelector = f
}(Element.prototype), function (a, b) {
	"use strict";
	"function" == typeof define && define.amd ? define("fizzy-ui-utils/utils", ["doc-ready/doc-ready", "matches-selector/matches-selector"], function (c, d) {
		return b(a, c, d)
	}) : "object" == typeof exports ? module.exports = b(a, require("doc-ready"), require("desandro-matches-selector")) : a.fizzyUIUtils = b(a, a.docReady, a.matchesSelector)
}(window, function (a, b, c) {
	var d = {};
	d.extend = function (a, b) {
		for (var c in b)a[c] = b[c];
		return a
	}, d.modulo = function (a, b) {
		return (a % b + b) % b
	};
	var e = Object.prototype.toString;
	d.isArray = function (a) {
		return "[object Array]" == e.call(a)
	}, d.makeArray = function (a) {
		var b = [];
		if (d.isArray(a))b = a; else if (a && "number" == typeof a.length)for (var c = 0, e = a.length; e > c; c++)b.push(a[c]); else b.push(a);
		return b
	}, d.indexOf = Array.prototype.indexOf ? function (a, b) {
		return a.indexOf(b)
	} : function (a, b) {
		for (var c = 0, d = a.length; d > c; c++)if (a[c] === b)return c;
		return -1
	}, d.removeFrom = function (a, b) {
		var c = d.indexOf(a, b);
		-1 != c && a.splice(c, 1)
	}, d.isElement = "function" == typeof HTMLElement || "object" == typeof HTMLElement ? function (a) {
		return a instanceof HTMLElement
	} : function (a) {
		return a && "object" == typeof a && 1 == a.nodeType && "string" == typeof a.nodeName
	}, d.setText = function () {
		function a(a, c) {
			b = b || (void 0 !== document.documentElement.textContent ? "textContent" : "innerText"), a[b] = c
		}

		var b;
		return a
	}(), d.getParent = function (a, b) {
		for (; a != document.body;)if (a = a.parentNode, c(a, b))return a
	}, d.getQueryElement = function (a) {
		return "string" == typeof a ? document.querySelector(a) : a
	}, d.handleEvent = function (a) {
		var b = "on" + a.type;
		this[b] && this[b](a)
	}, d.filterFindElements = function (a, b) {
		a = d.makeArray(a);
		for (var e = [], f = 0, g = a.length; g > f; f++) {
			var h = a[f];
			if (d.isElement(h))if (b) {
				c(h, b) && e.push(h);
				for (var i = h.querySelectorAll(b), j = 0, k = i.length; k > j; j++)e.push(i[j])
			} else e.push(h)
		}
		return e
	}, d.debounceMethod = function (a, b, c) {
		var d = a.prototype[b], e = b + "Timeout";
		a.prototype[b] = function () {
			var a = this[e];
			a && clearTimeout(a);
			var b = arguments, f = this;
			this[e] = setTimeout(function () {
				d.apply(f, b), delete f[e]
			}, c || 100)
		}
	}, d.toDashed = function (a) {
		return a.replace(/(.)([A-Z])/g, function (a, b, c) {
			return b + "-" + c
		}).toLowerCase()
	};
	var f = a.console;
	return d.htmlInit = function (c, e) {
		b(function () {
			for (var b = d.toDashed(e), g = document.querySelectorAll(".js-" + b), h = "data-" + b + "-options", i = 0, j = g.length; j > i; i++) {
				var k, l = g[i], m = l.getAttribute(h);
				try {
					k = m && JSON.parse(m)
				} catch (n) {
					f && f.error("Error parsing " + h + " on " + l.nodeName.toLowerCase() + (l.id ? "#" + l.id : "") + ": " + n);
					continue
				}
				var o = new c(l, k), p = a.jQuery;
				p && p.data(l, e, o)
			}
		})
	}, d
}), function (a, b) {
	"use strict";
	"function" == typeof define && define.amd ? define("outlayer/item", ["eventEmitter/EventEmitter", "get-size/get-size", "get-style-property/get-style-property", "fizzy-ui-utils/utils"], function (c, d, e, f) {
		return b(a, c, d, e, f)
	}) : "object" == typeof exports ? module.exports = b(a, require("wolfy87-eventemitter"), require("get-size"), require("desandro-get-style-property"), require("fizzy-ui-utils")) : (a.Outlayer = {}, a.Outlayer.Item = b(a, a.EventEmitter, a.getSize, a.getStyleProperty, a.fizzyUIUtils))
}(window, function (a, b, c, d, e) {
	"use strict";
	function f(a) {
		for (var b in a)return !1;
		return b = null, !0
	}

	function g(a, b) {
		a && (this.element = a, this.layout = b, this.position = {x: 0, y: 0}, this._create())
	}

	function h(a) {
		return a.replace(/([A-Z])/g, function (a) {
			return "-" + a.toLowerCase()
		})
	}

	var i = a.getComputedStyle, j = i ? function (a) {
		return i(a, null)
	} : function (a) {
		return a.currentStyle
	}, k = d("transition"), l = d("transform"), m = k && l, n = !!d("perspective"), o = {
		WebkitTransition: "webkitTransitionEnd",
		MozTransition: "transitionend",
		OTransition: "otransitionend",
		transition: "transitionend"
	}[k], p = ["transform", "transition", "transitionDuration", "transitionProperty"], q = function () {
		for (var a = {}, b = 0, c = p.length; c > b; b++) {
			var e = p[b], f = d(e);
			f && f !== e && (a[e] = f)
		}
		return a
	}();
	e.extend(g.prototype, b.prototype), g.prototype._create = function () {
		this._transn = {ingProperties: {}, clean: {}, onEnd: {}}, this.css({position: "absolute"})
	}, g.prototype.handleEvent = function (a) {
		var b = "on" + a.type;
		this[b] && this[b](a)
	}, g.prototype.getSize = function () {
		this.size = c(this.element)
	}, g.prototype.css = function (a) {
		var b = this.element.style;
		for (var c in a) {
			var d = q[c] || c;
			b[d] = a[c]
		}
	}, g.prototype.getPosition = function () {
		var a = j(this.element), b = this.layout.options, c = b.isOriginLeft, d = b.isOriginTop, e = a[c ? "left" : "right"], f = a[d ? "top" : "bottom"], g = this.layout.size, h = -1 != e.indexOf("%") ? parseFloat(e) / 100 * g.width : parseInt(e, 10), i = -1 != f.indexOf("%") ? parseFloat(f) / 100 * g.height : parseInt(f, 10);
		h = isNaN(h) ? 0 : h, i = isNaN(i) ? 0 : i, h -= c ? g.paddingLeft : g.paddingRight, i -= d ? g.paddingTop : g.paddingBottom, this.position.x = h, this.position.y = i
	}, g.prototype.layoutPosition = function () {
		var a = this.layout.size, b = this.layout.options, c = {}, d = b.isOriginLeft ? "paddingLeft" : "paddingRight", e = b.isOriginLeft ? "left" : "right", f = b.isOriginLeft ? "right" : "left", g = this.position.x + a[d];
		c[e] = this.getXValue(g), c[f] = "";
		var h = b.isOriginTop ? "paddingTop" : "paddingBottom", i = b.isOriginTop ? "top" : "bottom", j = b.isOriginTop ? "bottom" : "top", k = this.position.y + a[h];
		c[i] = this.getYValue(k), c[j] = "", this.css(c), this.emitEvent("layout", [this])
	}, g.prototype.getXValue = function (a) {
		var b = this.layout.options;
		return b.percentPosition && !b.isHorizontal ? a / this.layout.size.width * 100 + "%" : a + "px"
	}, g.prototype.getYValue = function (a) {
		var b = this.layout.options;
		return b.percentPosition && b.isHorizontal ? a / this.layout.size.height * 100 + "%" : a + "px"
	}, g.prototype._transitionTo = function (a, b) {
		this.getPosition();
		var c = this.position.x, d = this.position.y, e = parseInt(a, 10), f = parseInt(b, 10), g = e === this.position.x && f === this.position.y;
		if (this.setPosition(a, b), g && !this.isTransitioning)return void this.layoutPosition();
		var h = a - c, i = b - d, j = {};
		j.transform = this.getTranslate(h, i), this.transition({
			to: j,
			onTransitionEnd: {transform: this.layoutPosition},
			isCleaning: !0
		})
	}, g.prototype.getTranslate = function (a, b) {
		var c = this.layout.options;
		return a = c.isOriginLeft ? a : -a, b = c.isOriginTop ? b : -b, n ? "translate3d(" + a + "px, " + b + "px, 0)" : "translate(" + a + "px, " + b + "px)"
	}, g.prototype.goTo = function (a, b) {
		this.setPosition(a, b), this.layoutPosition()
	}, g.prototype.moveTo = m ? g.prototype._transitionTo : g.prototype.goTo, g.prototype.setPosition = function (a, b) {
		this.position.x = parseInt(a, 10), this.position.y = parseInt(b, 10)
	}, g.prototype._nonTransition = function (a) {
		this.css(a.to), a.isCleaning && this._removeStyles(a.to);
		for (var b in a.onTransitionEnd)a.onTransitionEnd[b].call(this)
	}, g.prototype._transition = function (a) {
		if (!parseFloat(this.layout.options.transitionDuration))return void this._nonTransition(a);
		var b = this._transn;
		for (var c in a.onTransitionEnd)b.onEnd[c] = a.onTransitionEnd[c];
		for (c in a.to)b.ingProperties[c] = !0, a.isCleaning && (b.clean[c] = !0);
		if (a.from) {
			this.css(a.from);
			var d = this.element.offsetHeight;
			d = null
		}
		this.enableTransition(a.to), this.css(a.to), this.isTransitioning = !0
	};
	var r = "opacity," + h(q.transform || "transform");
	g.prototype.enableTransition = function () {
		this.isTransitioning || (this.css({
			transitionProperty: r,
			transitionDuration: this.layout.options.transitionDuration
		}), this.element.addEventListener(o, this, !1))
	}, g.prototype.transition = g.prototype[k ? "_transition" : "_nonTransition"], g.prototype.onwebkitTransitionEnd = function (a) {
		this.ontransitionend(a)
	}, g.prototype.onotransitionend = function (a) {
		this.ontransitionend(a)
	};
	var s = {"-webkit-transform": "transform", "-moz-transform": "transform", "-o-transform": "transform"};
	g.prototype.ontransitionend = function (a) {
		if (a.target === this.element) {
			var b = this._transn, c = s[a.propertyName] || a.propertyName;
			if (delete b.ingProperties[c], f(b.ingProperties) && this.disableTransition(), c in b.clean && (this.element.style[a.propertyName] = "", delete b.clean[c]), c in b.onEnd) {
				var d = b.onEnd[c];
				d.call(this), delete b.onEnd[c]
			}
			this.emitEvent("transitionEnd", [this])
		}
	}, g.prototype.disableTransition = function () {
		this.removeTransitionStyles(), this.element.removeEventListener(o, this, !1), this.isTransitioning = !1
	}, g.prototype._removeStyles = function (a) {
		var b = {};
		for (var c in a)b[c] = "";
		this.css(b)
	};
	var t = {transitionProperty: "", transitionDuration: ""};
	return g.prototype.removeTransitionStyles = function () {
		this.css(t)
	}, g.prototype.removeElem = function () {
		this.element.parentNode.removeChild(this.element), this.css({display: ""}), this.emitEvent("remove", [this])
	}, g.prototype.remove = function () {
		if (!k || !parseFloat(this.layout.options.transitionDuration))return void this.removeElem();
		var a = this;
		this.once("transitionEnd", function () {
			a.removeElem()
		}), this.hide()
	}, g.prototype.reveal = function () {
		delete this.isHidden, this.css({display: ""});
		var a = this.layout.options, b = {}, c = this.getHideRevealTransitionEndProperty("visibleStyle");
		b[c] = this.onRevealTransitionEnd, this.transition({
			from: a.hiddenStyle,
			to: a.visibleStyle,
			isCleaning: !0,
			onTransitionEnd: b
		})
	}, g.prototype.onRevealTransitionEnd = function () {
		this.isHidden || this.emitEvent("reveal")
	}, g.prototype.getHideRevealTransitionEndProperty = function (a) {
		var b = this.layout.options[a];
		if (b.opacity)return "opacity";
		for (var c in b)return c
	}, g.prototype.hide = function () {
		this.isHidden = !0, this.css({display: ""});
		var a = this.layout.options, b = {}, c = this.getHideRevealTransitionEndProperty("hiddenStyle");
		b[c] = this.onHideTransitionEnd, this.transition({
			from: a.visibleStyle,
			to: a.hiddenStyle,
			isCleaning: !0,
			onTransitionEnd: b
		})
	}, g.prototype.onHideTransitionEnd = function () {
		this.isHidden && (this.css({display: "none"}), this.emitEvent("hide"))
	}, g.prototype.destroy = function () {
		this.css({position: "", left: "", right: "", top: "", bottom: "", transition: "", transform: ""})
	}, g
}), function (a, b) {
	"use strict";
	"function" == typeof define && define.amd ? define("outlayer/outlayer", ["eventie/eventie", "eventEmitter/EventEmitter", "get-size/get-size", "fizzy-ui-utils/utils", "./item"], function (c, d, e, f, g) {
		return b(a, c, d, e, f, g)
	}) : "object" == typeof exports ? module.exports = b(a, require("eventie"), require("wolfy87-eventemitter"), require("get-size"), require("fizzy-ui-utils"), require("./item")) : a.Outlayer = b(a, a.eventie, a.EventEmitter, a.getSize, a.fizzyUIUtils, a.Outlayer.Item)
}(window, function (a, b, c, d, e, f) {
	"use strict";
	function g(a, b) {
		var c = e.getQueryElement(a);
		if (!c)return void(h && h.error("Bad element for " + this.constructor.namespace + ": " + (c || a)));
		this.element = c, i && (this.$element = i(this.element)), this.options = e.extend({}, this.constructor.defaults), this.option(b);
		var d = ++k;
		this.element.outlayerGUID = d, l[d] = this, this._create(), this.options.isInitLayout && this.layout()
	}

	var h = a.console, i = a.jQuery, j = function () {
	}, k = 0, l = {};
	return g.namespace = "outlayer", g.Item = f, g.defaults = {
		containerStyle: {position: "relative"},
		isInitLayout: !0,
		isOriginLeft: !0,
		isOriginTop: !0,
		isResizeBound: !0,
		isResizingContainer: !0,
		transitionDuration: "0.4s",
		hiddenStyle: {opacity: 0, transform: "scale(0.001)"},
		visibleStyle: {opacity: 1, transform: "scale(1)"}
	}, e.extend(g.prototype, c.prototype), g.prototype.option = function (a) {
		e.extend(this.options, a)
	}, g.prototype._create = function () {
		this.reloadItems(), this.stamps = [], this.stamp(this.options.stamp), e.extend(this.element.style, this.options.containerStyle), this.options.isResizeBound && this.bindResize()
	}, g.prototype.reloadItems = function () {
		this.items = this._itemize(this.element.children)
	}, g.prototype._itemize = function (a) {
		for (var b = this._filterFindItemElements(a), c = this.constructor.Item, d = [], e = 0, f = b.length; f > e; e++) {
			var g = b[e], h = new c(g, this);
			d.push(h)
		}
		return d
	}, g.prototype._filterFindItemElements = function (a) {
		return e.filterFindElements(a, this.options.itemSelector)
	}, g.prototype.getItemElements = function () {
		for (var a = [], b = 0, c = this.items.length; c > b; b++)a.push(this.items[b].element);
		return a
	}, g.prototype.layout = function () {
		this._resetLayout(), this._manageStamps();
		var a = void 0 !== this.options.isLayoutInstant ? this.options.isLayoutInstant : !this._isLayoutInited;
		this.layoutItems(this.items, a), this._isLayoutInited = !0
	}, g.prototype._init = g.prototype.layout, g.prototype._resetLayout = function () {
		this.getSize()
	}, g.prototype.getSize = function () {
		this.size = d(this.element)
	}, g.prototype._getMeasurement = function (a, b) {
		var c, f = this.options[a];
		f ? ("string" == typeof f ? c = this.element.querySelector(f) : e.isElement(f) && (c = f), this[a] = c ? d(c)[b] : f) : this[a] = 0
	}, g.prototype.layoutItems = function (a, b) {
		a = this._getItemsForLayout(a), this._layoutItems(a, b), this._postLayout()
	}, g.prototype._getItemsForLayout = function (a) {
		for (var b = [], c = 0, d = a.length; d > c; c++) {
			var e = a[c];
			e.isIgnored || b.push(e)
		}
		return b
	}, g.prototype._layoutItems = function (a, b) {
		if (this._emitCompleteOnItems("layout", a), a && a.length) {
			for (var c = [], d = 0, e = a.length; e > d; d++) {
				var f = a[d], g = this._getItemLayoutPosition(f);
				g.item = f, g.isInstant = b || f.isLayoutInstant, c.push(g)
			}
			this._processLayoutQueue(c)
		}
	}, g.prototype._getItemLayoutPosition = function () {
		return {x: 0, y: 0}
	}, g.prototype._processLayoutQueue = function (a) {
		for (var b = 0, c = a.length; c > b; b++) {
			var d = a[b];
			this._positionItem(d.item, d.x, d.y, d.isInstant)
		}
	}, g.prototype._positionItem = function (a, b, c, d) {
		d ? a.goTo(b, c) : a.moveTo(b, c)
	}, g.prototype._postLayout = function () {
		this.resizeContainer()
	}, g.prototype.resizeContainer = function () {
		if (this.options.isResizingContainer) {
			var a = this._getContainerSize();
			a && (this._setContainerMeasure(a.width, !0), this._setContainerMeasure(a.height, !1))
		}
	}, g.prototype._getContainerSize = j, g.prototype._setContainerMeasure = function (a, b) {
		if (void 0 !== a) {
			var c = this.size;
			c.isBorderBox && (a += b ? c.paddingLeft + c.paddingRight + c.borderLeftWidth + c.borderRightWidth : c.paddingBottom + c.paddingTop + c.borderTopWidth + c.borderBottomWidth), a = Math.max(a, 0), this.element.style[b ? "width" : "height"] = a + "px"
		}
	}, g.prototype._emitCompleteOnItems = function (a, b) {
		function c() {
			e.dispatchEvent(a + "Complete", null, [b])
		}

		function d() {
			g++, g === f && c()
		}

		var e = this, f = b.length;
		if (!b || !f)return void c();
		for (var g = 0, h = 0, i = b.length; i > h; h++) {
			var j = b[h];
			j.once(a, d)
		}
	}, g.prototype.dispatchEvent = function (a, b, c) {
		var d = b ? [b].concat(c) : c;
		if (this.emitEvent(a, d), i)if (this.$element = this.$element || i(this.element), b) {
			var e = i.Event(b);
			e.type = a, this.$element.trigger(e, c)
		} else this.$element.trigger(a, c)
	}, g.prototype.ignore = function (a) {
		var b = this.getItem(a);
		b && (b.isIgnored = !0)
	}, g.prototype.unignore = function (a) {
		var b = this.getItem(a);
		b && delete b.isIgnored
	}, g.prototype.stamp = function (a) {
		if (a = this._find(a)) {
			this.stamps = this.stamps.concat(a);
			for (var b = 0, c = a.length; c > b; b++) {
				var d = a[b];
				this.ignore(d)
			}
		}
	}, g.prototype.unstamp = function (a) {
		if (a = this._find(a))for (var b = 0, c = a.length; c > b; b++) {
			var d = a[b];
			e.removeFrom(this.stamps, d), this.unignore(d)
		}
	}, g.prototype._find = function (a) {
		return a ? ("string" == typeof a && (a = this.element.querySelectorAll(a)), a = e.makeArray(a)) : void 0
	}, g.prototype._manageStamps = function () {
		if (this.stamps && this.stamps.length) {
			this._getBoundingRect();
			for (var a = 0, b = this.stamps.length; b > a; a++) {
				var c = this.stamps[a];
				this._manageStamp(c)
			}
		}
	}, g.prototype._getBoundingRect = function () {
		var a = this.element.getBoundingClientRect(), b = this.size;
		this._boundingRect = {
			left: a.left + b.paddingLeft + b.borderLeftWidth,
			top: a.top + b.paddingTop + b.borderTopWidth,
			right: a.right - (b.paddingRight + b.borderRightWidth),
			bottom: a.bottom - (b.paddingBottom + b.borderBottomWidth)
		}
	}, g.prototype._manageStamp = j, g.prototype._getElementOffset = function (a) {
		var b = a.getBoundingClientRect(), c = this._boundingRect, e = d(a), f = {
			left: b.left - c.left - e.marginLeft,
			top: b.top - c.top - e.marginTop,
			right: c.right - b.right - e.marginRight,
			bottom: c.bottom - b.bottom - e.marginBottom
		};
		return f
	}, g.prototype.handleEvent = function (a) {
		var b = "on" + a.type;
		this[b] && this[b](a)
	}, g.prototype.bindResize = function () {
		this.isResizeBound || (b.bind(a, "resize", this), this.isResizeBound = !0)
	}, g.prototype.unbindResize = function () {
		this.isResizeBound && b.unbind(a, "resize", this), this.isResizeBound = !1
	}, g.prototype.onresize = function () {
		function a() {
			b.resize(), delete b.resizeTimeout
		}

		this.resizeTimeout && clearTimeout(this.resizeTimeout);
		var b = this;
		this.resizeTimeout = setTimeout(a, 100)
	}, g.prototype.resize = function () {
		this.isResizeBound && this.needsResizeLayout() && this.layout()
	}, g.prototype.needsResizeLayout = function () {
		var a = d(this.element), b = this.size && a;
		return b && a.innerWidth !== this.size.innerWidth
	}, g.prototype.addItems = function (a) {
		var b = this._itemize(a);
		return b.length && (this.items = this.items.concat(b)), b
	}, g.prototype.appended = function (a) {
		var b = this.addItems(a);
		b.length && (this.layoutItems(b, !0), this.reveal(b))
	}, g.prototype.prepended = function (a) {
		var b = this._itemize(a);
		if (b.length) {
			var c = this.items.slice(0);
			this.items = b.concat(c), this._resetLayout(), this._manageStamps(), this.layoutItems(b, !0), this.reveal(b), this.layoutItems(c)
		}
	}, g.prototype.reveal = function (a) {
		this._emitCompleteOnItems("reveal", a);
		for (var b = a && a.length, c = 0; b && b > c; c++) {
			var d = a[c];
			d.reveal()
		}
	}, g.prototype.hide = function (a) {
		this._emitCompleteOnItems("hide", a);
		for (var b = a && a.length, c = 0; b && b > c; c++) {
			var d = a[c];
			d.hide()
		}
	}, g.prototype.revealItemElements = function (a) {
		var b = this.getItems(a);
		this.reveal(b)
	}, g.prototype.hideItemElements = function (a) {
		var b = this.getItems(a);
		this.hide(b)
	}, g.prototype.getItem = function (a) {
		for (var b = 0, c = this.items.length; c > b; b++) {
			var d = this.items[b];
			if (d.element === a)return d
		}
	}, g.prototype.getItems = function (a) {
		a = e.makeArray(a);
		for (var b = [], c = 0, d = a.length; d > c; c++) {
			var f = a[c], g = this.getItem(f);
			g && b.push(g)
		}
		return b
	}, g.prototype.remove = function (a) {
		var b = this.getItems(a);
		if (this._emitCompleteOnItems("remove", b), b && b.length)for (var c = 0, d = b.length; d > c; c++) {
			var f = b[c];
			f.remove(), e.removeFrom(this.items, f)
		}
	}, g.prototype.destroy = function () {
		var a = this.element.style;
		a.height = "", a.position = "", a.width = "";
		for (var b = 0, c = this.items.length; c > b; b++) {
			var d = this.items[b];
			d.destroy()
		}
		this.unbindResize();
		var e = this.element.outlayerGUID;
		delete l[e], delete this.element.outlayerGUID, i && i.removeData(this.element, this.constructor.namespace)
	}, g.data = function (a) {
		a = e.getQueryElement(a);
		var b = a && a.outlayerGUID;
		return b && l[b]
	}, g.create = function (a, b) {
		function c() {
			g.apply(this, arguments)
		}

		return Object.create ? c.prototype = Object.create(g.prototype) : e.extend(c.prototype, g.prototype), c.prototype.constructor = c, c.defaults = e.extend({}, g.defaults), e.extend(c.defaults, b), c.prototype.settings = {}, c.namespace = a, c.data = g.data, c.Item = function () {
			f.apply(this, arguments)
		}, c.Item.prototype = new f, e.htmlInit(c, a), i && i.bridget && i.bridget(a, c), c
	}, g.Item = f, g
}), function (a, b) {
	"use strict";
	"function" == typeof define && define.amd ? define("isotope/js/item", ["outlayer/outlayer"], b) : "object" == typeof exports ? module.exports = b(require("outlayer")) : (a.Isotope = a.Isotope || {}, a.Isotope.Item = b(a.Outlayer))
}(window, function (a) {
	"use strict";
	function b() {
		a.Item.apply(this, arguments)
	}

	b.prototype = new a.Item, b.prototype._create = function () {
		this.id = this.layout.itemGUID++, a.Item.prototype._create.call(this), this.sortData = {}
	}, b.prototype.updateSortData = function () {
		if (!this.isIgnored) {
			this.sortData.id = this.id, this.sortData["original-order"] = this.id, this.sortData.random = Math.random();
			var a = this.layout.options.getSortData, b = this.layout._sorters;
			for (var c in a) {
				var d = b[c];
				this.sortData[c] = d(this.element, this)
			}
		}
	};
	var c = b.prototype.destroy;
	return b.prototype.destroy = function () {
		c.apply(this, arguments), this.css({display: ""})
	}, b
}), function (a, b) {
	"use strict";
	"function" == typeof define && define.amd ? define("isotope/js/layout-mode", ["get-size/get-size", "outlayer/outlayer"], b) : "object" == typeof exports ? module.exports = b(require("get-size"), require("outlayer")) : (a.Isotope = a.Isotope || {}, a.Isotope.LayoutMode = b(a.getSize, a.Outlayer))
}(window, function (a, b) {
	"use strict";
	function c(a) {
		this.isotope = a, a && (this.options = a.options[this.namespace], this.element = a.element, this.items = a.filteredItems, this.size = a.size)
	}

	return function () {
		function a(a) {
			return function () {
				return b.prototype[a].apply(this.isotope, arguments)
			}
		}

		for (var d = ["_resetLayout", "_getItemLayoutPosition", "_manageStamp", "_getContainerSize", "_getElementOffset", "needsResizeLayout"], e = 0, f = d.length; f > e; e++) {
			var g = d[e];
			c.prototype[g] = a(g)
		}
	}(), c.prototype.needsVerticalResizeLayout = function () {
		var b = a(this.isotope.element), c = this.isotope.size && b;
		return c && b.innerHeight != this.isotope.size.innerHeight
	}, c.prototype._getMeasurement = function () {
		this.isotope._getMeasurement.apply(this, arguments)
	}, c.prototype.getColumnWidth = function () {
		this.getSegmentSize("column", "Width")
	}, c.prototype.getRowHeight = function () {
		this.getSegmentSize("row", "Height")
	}, c.prototype.getSegmentSize = function (a, b) {
		var c = a + b, d = "outer" + b;
		if (this._getMeasurement(c, d), !this[c]) {
			var e = this.getFirstItemSize();
			this[c] = e && e[d] || this.isotope.size["inner" + b]
		}
	}, c.prototype.getFirstItemSize = function () {
		var b = this.isotope.filteredItems[0];
		return b && b.element && a(b.element)
	}, c.prototype.layout = function () {
		this.isotope.layout.apply(this.isotope, arguments)
	}, c.prototype.getSize = function () {
		this.isotope.getSize(), this.size = this.isotope.size
	}, c.modes = {}, c.create = function (a, b) {
		function d() {
			c.apply(this, arguments)
		}

		return d.prototype = new c, b && (d.options = b), d.prototype.namespace = a, c.modes[a] = d, d
	}, c
}), function (a, b) {
	"use strict";
	"function" == typeof define && define.amd ? define("masonry/masonry", ["outlayer/outlayer", "get-size/get-size", "fizzy-ui-utils/utils"], b) : "object" == typeof exports ? module.exports = b(require("outlayer"), require("get-size"), require("fizzy-ui-utils")) : a.Masonry = b(a.Outlayer, a.getSize, a.fizzyUIUtils)
}(window, function (a, b, c) {
	var d = a.create("masonry");
	return d.prototype._resetLayout = function () {
		this.getSize(), this._getMeasurement("columnWidth", "outerWidth"), this._getMeasurement("gutter", "outerWidth"), this.measureColumns();
		var a = this.cols;
		for (this.colYs = []; a--;)this.colYs.push(0);
		this.maxY = 0
	}, d.prototype.measureColumns = function () {
		if (this.getContainerWidth(), !this.columnWidth) {
			var a = this.items[0], c = a && a.element;
			this.columnWidth = c && b(c).outerWidth || this.containerWidth
		}
		var d = this.columnWidth += this.gutter, e = this.containerWidth + this.gutter, f = e / d, g = d - e % d, h = g && 1 > g ? "round" : "floor";
		f = Math[h](f), this.cols = Math.max(f, 1)
	}, d.prototype.getContainerWidth = function () {
		var a = this.options.isFitWidth ? this.element.parentNode : this.element, c = b(a);
		this.containerWidth = c && c.innerWidth
	}, d.prototype._getItemLayoutPosition = function (a) {
		a.getSize();
		var b = a.size.outerWidth % this.columnWidth, d = b && 1 > b ? "round" : "ceil", e = Math[d](a.size.outerWidth / this.columnWidth);
		e = Math.min(e, this.cols);
		for (var f = this._getColGroup(e), g = Math.min.apply(Math, f), h = c.indexOf(f, g), i = {
			x: this.columnWidth * h,
			y: g
		}, j = g + a.size.outerHeight, k = this.cols + 1 - f.length, l = 0; k > l; l++)this.colYs[h + l] = j;
		return i
	}, d.prototype._getColGroup = function (a) {
		if (2 > a)return this.colYs;
		for (var b = [], c = this.cols + 1 - a, d = 0; c > d; d++) {
			var e = this.colYs.slice(d, d + a);
			b[d] = Math.max.apply(Math, e)
		}
		return b
	}, d.prototype._manageStamp = function (a) {
		var c = b(a), d = this._getElementOffset(a), e = this.options.isOriginLeft ? d.left : d.right, f = e + c.outerWidth, g = Math.floor(e / this.columnWidth);
		g = Math.max(0, g);
		var h = Math.floor(f / this.columnWidth);
		h -= f % this.columnWidth ? 0 : 1, h = Math.min(this.cols - 1, h);
		for (var i = (this.options.isOriginTop ? d.top : d.bottom) + c.outerHeight, j = g; h >= j; j++)this.colYs[j] = Math.max(i, this.colYs[j])
	}, d.prototype._getContainerSize = function () {
		this.maxY = Math.max.apply(Math, this.colYs);
		var a = {height: this.maxY};
		return this.options.isFitWidth && (a.width = this._getContainerFitWidth()), a
	}, d.prototype._getContainerFitWidth = function () {
		for (var a = 0, b = this.cols; --b && 0 === this.colYs[b];)a++;
		return (this.cols - a) * this.columnWidth - this.gutter
	}, d.prototype.needsResizeLayout = function () {
		var a = this.containerWidth;
		return this.getContainerWidth(), a !== this.containerWidth
	}, d
}), function (a, b) {
	"use strict";
	"function" == typeof define && define.amd ? define("isotope/js/layout-modes/masonry", ["../layout-mode", "masonry/masonry"], b) : "object" == typeof exports ? module.exports = b(require("../layout-mode"), require("masonry-layout")) : b(a.Isotope.LayoutMode, a.Masonry)
}(window, function (a, b) {
	"use strict";
	function c(a, b) {
		for (var c in b)a[c] = b[c];
		return a
	}

	var d = a.create("masonry"), e = d.prototype._getElementOffset, f = d.prototype.layout, g = d.prototype._getMeasurement;
	c(d.prototype, b.prototype), d.prototype._getElementOffset = e, d.prototype.layout = f, d.prototype._getMeasurement = g;
	var h = d.prototype.measureColumns;
	d.prototype.measureColumns = function () {
		this.items = this.isotope.filteredItems, h.call(this)
	};
	var i = d.prototype._manageStamp;
	return d.prototype._manageStamp = function () {
		this.options.isOriginLeft = this.isotope.options.isOriginLeft, this.options.isOriginTop = this.isotope.options.isOriginTop, i.apply(this, arguments)
	}, d
}), function (a, b) {
	"use strict";
	"function" == typeof define && define.amd ? define("isotope/js/layout-modes/fit-rows", ["../layout-mode"], b) : "object" == typeof exports ? module.exports = b(require("../layout-mode")) : b(a.Isotope.LayoutMode)
}(window, function (a) {
	"use strict";
	var b = a.create("fitRows");
	return b.prototype._resetLayout = function () {
		this.x = 0, this.y = 0, this.maxY = 0, this._getMeasurement("gutter", "outerWidth")
	}, b.prototype._getItemLayoutPosition = function (a) {
		a.getSize();
		var b = a.size.outerWidth + this.gutter, c = this.isotope.size.innerWidth + this.gutter;
		0 !== this.x && b + this.x > c && (this.x = 0, this.y = this.maxY);
		var d = {x: this.x, y: this.y};
		return this.maxY = Math.max(this.maxY, this.y + a.size.outerHeight), this.x += b, d
	}, b.prototype._getContainerSize = function () {
		return {height: this.maxY}
	}, b
}), function (a, b) {
	"use strict";
	"function" == typeof define && define.amd ? define("isotope/js/layout-modes/vertical", ["../layout-mode"], b) : "object" == typeof exports ? module.exports = b(require("../layout-mode")) : b(a.Isotope.LayoutMode)
}(window, function (a) {
	"use strict";
	var b = a.create("vertical", {horizontalAlignment: 0});
	return b.prototype._resetLayout = function () {
		this.y = 0
	}, b.prototype._getItemLayoutPosition = function (a) {
		a.getSize();
		var b = (this.isotope.size.innerWidth - a.size.outerWidth) * this.options.horizontalAlignment, c = this.y;
		return this.y += a.size.outerHeight, {x: b, y: c}
	}, b.prototype._getContainerSize = function () {
		return {height: this.y}
	}, b
}), function (a, b) {
	"use strict";
	"function" == typeof define && define.amd ? define(["outlayer/outlayer", "get-size/get-size", "matches-selector/matches-selector", "fizzy-ui-utils/utils", "isotope/js/item", "isotope/js/layout-mode", "isotope/js/layout-modes/masonry", "isotope/js/layout-modes/fit-rows", "isotope/js/layout-modes/vertical"], function (c, d, e, f, g, h) {
		return b(a, c, d, e, f, g, h)
	}) : "object" == typeof exports ? module.exports = b(a, require("outlayer"), require("get-size"), require("desandro-matches-selector"), require("fizzy-ui-utils"), require("./item"), require("./layout-mode"), require("./layout-modes/masonry"), require("./layout-modes/fit-rows"), require("./layout-modes/vertical")) : a.Isotope = b(a, a.Outlayer, a.getSize, a.matchesSelector, a.fizzyUIUtils, a.Isotope.Item, a.Isotope.LayoutMode)
}(window, function (a, b, c, d, e, f, g) {
	function h(a, b) {
		return function (c, d) {
			for (var e = 0, f = a.length; f > e; e++) {
				var g = a[e], h = c.sortData[g], i = d.sortData[g];
				if (h > i || i > h) {
					var j = void 0 !== b[g] ? b[g] : b, k = j ? 1 : -1;
					return (h > i ? 1 : -1) * k
				}
			}
			return 0
		}
	}

	var i = a.jQuery, j = String.prototype.trim ? function (a) {
		return a.trim()
	} : function (a) {
		return a.replace(/^\s+|\s+$/g, "")
	}, k = document.documentElement, l = k.textContent ? function (a) {
		return a.textContent
	} : function (a) {
		return a.innerText
	}, m = b.create("isotope", {layoutMode: "masonry", isJQueryFiltering: !0, sortAscending: !0});
	m.Item = f, m.LayoutMode = g, m.prototype._create = function () {
		this.itemGUID = 0, this._sorters = {}, this._getSorters(), b.prototype._create.call(this), this.modes = {}, this.filteredItems = this.items, this.sortHistory = ["original-order"];
		for (var a in g.modes)this._initLayoutMode(a)
	}, m.prototype.reloadItems = function () {
		this.itemGUID = 0, b.prototype.reloadItems.call(this)
	}, m.prototype._itemize = function () {
		for (var a = b.prototype._itemize.apply(this, arguments), c = 0, d = a.length; d > c; c++) {
			var e = a[c];
			e.id = this.itemGUID++
		}
		return this._updateItemsSortData(a), a
	}, m.prototype._initLayoutMode = function (a) {
		var b = g.modes[a], c = this.options[a] || {};
		this.options[a] = b.options ? e.extend(b.options, c) : c, this.modes[a] = new b(this)
	}, m.prototype.layout = function () {
		return !this._isLayoutInited && this.options.isInitLayout ? void this.arrange() : void this._layout()
	}, m.prototype._layout = function () {
		var a = this._getIsInstant();
		this._resetLayout(), this._manageStamps(), this.layoutItems(this.filteredItems, a), this._isLayoutInited = !0
	}, m.prototype.arrange = function (a) {
		function b() {
			d.reveal(c.needReveal), d.hide(c.needHide)
		}

		this.option(a), this._getIsInstant();
		var c = this._filter(this.items);
		this.filteredItems = c.matches;
		var d = this;
		this._bindArrangeComplete(), this._isInstant ? this._noTransition(b) : b(), this._sort(), this._layout()
	}, m.prototype._init = m.prototype.arrange, m.prototype._getIsInstant = function () {
		var a = void 0 !== this.options.isLayoutInstant ? this.options.isLayoutInstant : !this._isLayoutInited;
		return this._isInstant = a, a
	}, m.prototype._bindArrangeComplete = function () {
		function a() {
			b && c && d && e.dispatchEvent("arrangeComplete", null, [e.filteredItems])
		}

		var b, c, d, e = this;
		this.once("layoutComplete", function () {
			b = !0, a()
		}), this.once("hideComplete", function () {
			c = !0, a()
		}), this.once("revealComplete", function () {
			d = !0, a()
		})
	}, m.prototype._filter = function (a) {
		var b = this.options.filter;
		b = b || "*";
		for (var c = [], d = [], e = [], f = this._getFilterTest(b), g = 0, h = a.length; h > g; g++) {
			var i = a[g];
			if (!i.isIgnored) {
				var j = f(i);
				j && c.push(i), j && i.isHidden ? d.push(i) : j || i.isHidden || e.push(i)
			}
		}
		return {matches: c, needReveal: d, needHide: e}
	}, m.prototype._getFilterTest = function (a) {
		return i && this.options.isJQueryFiltering ? function (b) {
			return i(b.element).is(a)
		} : "function" == typeof a ? function (b) {
			return a(b.element)
		} : function (b) {
			return d(b.element, a)
		}
	}, m.prototype.updateSortData = function (a) {
		var b;
		a ? (a = e.makeArray(a), b = this.getItems(a)) : b = this.items, this._getSorters(), this._updateItemsSortData(b)
	}, m.prototype._getSorters = function () {
		var a = this.options.getSortData;
		for (var b in a) {
			var c = a[b];
			this._sorters[b] = n(c)
		}
	}, m.prototype._updateItemsSortData = function (a) {
		for (var b = a && a.length, c = 0; b && b > c; c++) {
			var d = a[c];
			d.updateSortData()
		}
	};
	var n = function () {
		function a(a) {
			if ("string" != typeof a)return a;
			var c = j(a).split(" "), d = c[0], e = d.match(/^\[(.+)\]$/), f = e && e[1], g = b(f, d), h = m.sortDataParsers[c[1]];
			return a = h ? function (a) {
				return a && h(g(a))
			} : function (a) {
				return a && g(a)
			}
		}

		function b(a, b) {
			var c;
			return c = a ? function (b) {
				return b.getAttribute(a)
			} : function (a) {
				var c = a.querySelector(b);
				return c && l(c)
			}
		}

		return a
	}();
	m.sortDataParsers = {
		parseInt: function (a) {
			return parseInt(a, 10)
		}, parseFloat: function (a) {
			return parseFloat(a)
		}
	}, m.prototype._sort = function () {
		var a = this.options.sortBy;
		if (a) {
			var b = [].concat.apply(a, this.sortHistory), c = h(b, this.options.sortAscending);
			this.filteredItems.sort(c), a != this.sortHistory[0] && this.sortHistory.unshift(a)
		}
	}, m.prototype._mode = function () {
		var a = this.options.layoutMode, b = this.modes[a];
		if (!b)throw new Error("No layout mode: " + a);
		return b.options = this.options[a], b
	}, m.prototype._resetLayout = function () {
		b.prototype._resetLayout.call(this), this._mode()._resetLayout()
	}, m.prototype._getItemLayoutPosition = function (a) {
		return this._mode()._getItemLayoutPosition(a)
	}, m.prototype._manageStamp = function (a) {
		this._mode()._manageStamp(a)
	}, m.prototype._getContainerSize = function () {
		return this._mode()._getContainerSize()
	}, m.prototype.needsResizeLayout = function () {
		return this._mode().needsResizeLayout()
	}, m.prototype.appended = function (a) {
		var b = this.addItems(a);
		if (b.length) {
			var c = this._filterRevealAdded(b);
			this.filteredItems = this.filteredItems.concat(c)
		}
	}, m.prototype.prepended = function (a) {
		var b = this._itemize(a);
		if (b.length) {
			this._resetLayout(), this._manageStamps();
			var c = this._filterRevealAdded(b);
			this.layoutItems(this.filteredItems), this.filteredItems = c.concat(this.filteredItems), this.items = b.concat(this.items)
		}
	}, m.prototype._filterRevealAdded = function (a) {
		var b = this._filter(a);
		return this.hide(b.needHide), this.reveal(b.matches), this.layoutItems(b.matches, !0), b.matches
	}, m.prototype.insert = function (a) {
		var b = this.addItems(a);
		if (b.length) {
			var c, d, e = b.length;
			for (c = 0; e > c; c++)d = b[c], this.element.appendChild(d.element);
			var f = this._filter(b).matches;
			for (c = 0; e > c; c++)b[c].isLayoutInstant = !0;
			for (this.arrange(), c = 0; e > c; c++)delete b[c].isLayoutInstant;
			this.reveal(f)
		}
	};
	var o = m.prototype.remove;
	return m.prototype.remove = function (a) {
		a = e.makeArray(a);
		var b = this.getItems(a);
		o.call(this, a);
		var c = b && b.length;
		if (c)for (var d = 0; c > d; d++) {
			var f = b[d];
			e.removeFrom(this.filteredItems, f)
		}
	}, m.prototype.shuffle = function () {
		for (var a = 0, b = this.items.length; b > a; a++) {
			var c = this.items[a];
			c.sortData.random = Math.random()
		}
		this.options.sortBy = "random", this._sort(), this._layout()
	}, m.prototype._noTransition = function (a) {
		var b = this.options.transitionDuration;
		this.options.transitionDuration = 0;
		var c = a.call(this);
		return this.options.transitionDuration = b, c
	}, m.prototype.getFilteredItemElements = function () {
		for (var a = [], b = 0, c = this.filteredItems.length; c > b; b++)a.push(this.filteredItems[b].element);
		return a
	}, m
});