fm-gsap-trial
Version:
13 lines (12 loc) • 74.5 kB
JavaScript
/*!
* GSDevTools 3.12.5
* https://gsap.com
*
* @license Copyright 2024, GreenSock. All rights reserved.
* *** DO NOT DEPLOY THIS FILE ***
* This is a trial version that only works locally and on domains like codepen.io and codesandbox.io.
* Loading it on an unauthorized domain violates the license and will cause a redirect.
* Get the unrestricted file by joining Club GSAP at https://gsap.com/pricing
* @author: Jack Doyle, jack@greensock.com
*/
let e, t, o, i, n, l, s, r, a, d = "transform", c = d + "Origin", p = n => { let l = n.ownerDocument || n; !(d in n.style) && "msTransform" in n.style && (d = "msTransform", c = d + "Origin"); for (; l.parentNode && (l = l.parentNode);); if (t = window, s = new y, l) { e = l, o = l.documentElement, i = l.body, r = e.createElementNS("http://www.w3.org/2000/svg", "g"), r.style.transform = "none"; let t = l.createElement("div"), n = l.createElement("div"), s = l && (l.body || l.firstElementChild); s && s.appendChild && (s.appendChild(t), t.appendChild(n), t.setAttribute("style", "position:static;transform:translate3d(0,0,1px)"), a = n.offsetParent !== t, s.removeChild(t)) } return l }, g = [], h = [], u = e => e.ownerSVGElement || ("svg" === (e.tagName + "").toLowerCase() ? e : null), m = e => "fixed" === t.getComputedStyle(e).position || ((e = e.parentNode) && 1 === e.nodeType ? m(e) : void 0), f = (t, o) => { if (t.parentNode && (e || p(t))) { let i = u(t), s = i ? i.getAttribute("xmlns") || "http://www.w3.org/2000/svg" : "http://www.w3.org/1999/xhtml", r = i ? o ? "rect" : "g" : "div", a = 2 !== o ? 0 : 100, d = 3 === o ? 100 : 0, c = "position:absolute;display:block;pointer-events:none;margin:0;padding:0;", p = e.createElementNS ? e.createElementNS(s.replace(/^https/, "http"), r) : e.createElement(r); return o && (i ? (l || (l = f(t)), p.setAttribute("width", .01), p.setAttribute("height", .01), p.setAttribute("transform", "translate(" + a + "," + d + ")"), l.appendChild(p)) : (n || (n = f(t), n.style.cssText = c), p.style.cssText = c + "width:0.1px;height:0.1px;top:" + d + "px;left:" + a + "px", n.appendChild(p))), p } throw "Need document and parent." }, x = (e, o) => { let i, p, m, x, v, w, b = u(e), T = e === b, k = b ? g : h, _ = e.parentNode; if (e === t) return e; if (k.length || k.push(f(e, 1), f(e, 2), f(e, 3)), i = b ? l : n, b) T ? (m = (e => { let t, o = e.getCTM(); return o || (t = e.style[d], e.style[d] = "none", e.appendChild(r), o = r.getCTM(), e.removeChild(r), t ? e.style[d] = t : e.style.removeProperty(d.replace(/([A-Z])/g, "-$1").toLowerCase())), o || s.clone() })(e), x = -m.e / m.a, v = -m.f / m.d, p = s) : e.getBBox ? (m = e.getBBox(), p = e.transform ? e.transform.baseVal : {}, p = p.numberOfItems ? p.numberOfItems > 1 ? (e => { let t = new y, o = 0; for (; o < e.numberOfItems; o++)t.multiply(e.getItem(o).matrix); return t })(p) : p.getItem(0).matrix : s, x = p.a * m.x + p.c * m.y, v = p.b * m.x + p.d * m.y) : (p = new y, x = v = 0), o && "g" === e.tagName.toLowerCase() && (x = v = 0), (T ? b : _).appendChild(i), i.setAttribute("transform", "matrix(" + p.a + "," + p.b + "," + p.c + "," + p.d + "," + (p.e + x) + "," + (p.f + v) + ")"); else { if (x = v = 0, a) for (p = e.offsetParent, m = e; m && (m = m.parentNode) && m !== p && m.parentNode;)(t.getComputedStyle(m)[d] + "").length > 4 && (x = m.offsetLeft, v = m.offsetTop, m = 0); if (w = t.getComputedStyle(e), "absolute" !== w.position && "fixed" !== w.position) for (p = e.offsetParent; _ && _ !== p;)x += _.scrollLeft || 0, v += _.scrollTop || 0, _ = _.parentNode; m = i.style, m.top = e.offsetTop - v + "px", m.left = e.offsetLeft - x + "px", m[d] = w[d], m[c] = w[c], m.position = "fixed" === w.position ? "fixed" : "absolute", e.parentNode.appendChild(i) } return i }, v = (e, t, o, i, n, l, s) => (e.a = t, e.b = o, e.c = i, e.d = n, e.e = l, e.f = s, e); class y { constructor(e = 1, t = 0, o = 0, i = 1, n = 0, l = 0) { v(this, e, t, o, i, n, l) } inverse() { let { a: e, b: t, c: o, d: i, e: n, f: l } = this, s = e * i - t * o || 1e-10; return v(this, i / s, -t / s, -o / s, e / s, (o * l - i * n) / s, -(e * l - t * n) / s) } multiply(e) { let { a: t, b: o, c: i, d: n, e: l, f: s } = this, r = e.a, a = e.c, d = e.b, c = e.d, p = e.e, g = e.f; return v(this, r * t + d * i, r * o + d * n, a * t + c * i, a * o + c * n, l + p * t + g * i, s + p * o + g * n) } clone() { return new y(this.a, this.b, this.c, this.d, this.e, this.f) } equals(e) { let { a: t, b: o, c: i, d: n, e: l, f: s } = this; return t === e.a && o === e.b && i === e.c && n === e.d && l === e.e && s === e.f } apply(e, t = {}) { let { x: o, y: i } = e, { a: n, b: l, c: s, d: r, e: a, f: d } = this; return t.x = o * n + i * s + a || 0, t.y = o * l + i * r + d || 0, t } } function w(n, l, s, r) { if (!n || !n.parentNode || (e || p(n)).documentElement === n) return new y; let a = (e => { let t, o; for (; e && e !== i;)o = e._gsap, o && o.uncache && o.get(e, "x"), o && !o.scaleX && !o.scaleY && o.renderTransform && (o.scaleX = o.scaleY = 1e-4, o.renderTransform(1, o), t ? t.push(o) : t = [o]), e = e.parentNode; return t })(n), d = u(n) ? g : h, c = x(n, s), f = d[0].getBoundingClientRect(), v = d[1].getBoundingClientRect(), w = d[2].getBoundingClientRect(), b = c.parentNode, T = !r && m(n), k = new y((v.left - f.left) / 100, (v.top - f.top) / 100, (w.left - f.left) / 100, (w.top - f.top) / 100, f.left + (T ? 0 : t.pageXOffset || e.scrollLeft || o.scrollLeft || i.scrollLeft || 0), f.top + (T ? 0 : t.pageYOffset || e.scrollTop || o.scrollTop || i.scrollTop || 0)); if (b.removeChild(c), a) for (f = a.length; f--;)v = a[f], v.scaleX = v.scaleY = 0, v.renderTransform(1, v); return l ? k.inverse() : k } let b, T, k, _, M, S, D, C, E, P, L, X, N, Y, H, z, B, R, I, O, A, F, W = 0, G = () => "undefined" != typeof window, V = () => b || G() && (b = window.gsap) && b.registerPlugin && b, q = e => "function" == typeof e, j = e => "object" == typeof e, K = e => void 0 === e, Z = () => !1, U = "transform", $ = "transformOrigin", J = e => Math.round(1e4 * e) / 1e4, Q = Array.isArray, ee = (e, t) => { let o = k.createElementNS ? k.createElementNS((t || "http://www.w3.org/1999/xhtml").replace(/^https/, "http"), e) : k.createElement(e); return o.style ? o : k.createElement(e) }, te = 180 / Math.PI, oe = 1e20, ie = new y, ne = Date.now || (() => (new Date).getTime()), le = [], se = {}, re = 0, ae = /^(?:a|input|textarea|button|select)$/i, de = 0, ce = {}, pe = {}, ge = (e, t) => { let o, i = {}; for (o in e) i[o] = t ? e[o] * t : e[o]; return i }, he = (e, t) => { let o, i = e.length; for (; i--;)t ? e[i].style.touchAction = t : e[i].style.removeProperty("touch-action"), o = e[i].children, o && o.length && he(o, t) }, ue = () => le.forEach(e => e()), me = () => !le.length && b.ticker.remove(ue), fe = e => { let t = le.length; for (; t--;)le[t] === e && le.splice(t, 1); b.to(me, { overwrite: !0, delay: 15, duration: 0, onComplete: me, data: "_draggable" }) }, xe = (e, t, o, i) => { if (e.addEventListener) { let n = N[t]; i = i || (L ? { passive: !1 } : null), e.addEventListener(n || t, o, i), n && t !== n && e.addEventListener(t, o, i) } }, ve = (e, t, o, i) => { if (e.removeEventListener) { let n = N[t]; e.removeEventListener(n || t, o, i), n && t !== n && e.removeEventListener(t, o, i) } }, ye = e => { e.preventDefault && e.preventDefault(), e.preventManipulation && e.preventManipulation() }, we = e => { Y = e.touches && W < e.touches.length, ve(e.target, "touchend", we) }, be = e => { Y = e.touches && W < e.touches.length, xe(e.target, "touchend", we) }, Te = e => T.pageYOffset || e.scrollTop || e.documentElement.scrollTop || e.body.scrollTop || 0, ke = e => T.pageXOffset || e.scrollLeft || e.documentElement.scrollLeft || e.body.scrollLeft || 0, _e = (e, t) => { xe(e, "scroll", t), Se(e.parentNode) || _e(e.parentNode, t) }, Me = (e, t) => { ve(e, "scroll", t), Se(e.parentNode) || Me(e.parentNode, t) }, Se = e => !(e && e !== _ && 9 !== e.nodeType && e !== k.body && e !== T && e.nodeType && e.parentNode), De = (e, t) => { let o = "x" === t ? "Width" : "Height", i = "scroll" + o, n = "client" + o; return Math.max(0, Se(e) ? Math.max(_[i], M[i]) - (T["inner" + o] || _[n] || M[n]) : e[i] - e[n]) }, Ce = (e, t) => { let o = De(e, "x"), i = De(e, "y"); Se(e) ? e = pe : Ce(e.parentNode, t), e._gsMaxScrollX = o, e._gsMaxScrollY = i, t || (e._gsScrollX = e.scrollLeft || 0, e._gsScrollY = e.scrollTop || 0) }, Ee = (e, t, o) => { let i = e.style; i && (K(i[t]) && (t = E(t, e) || t), null == o ? i.removeProperty && i.removeProperty(t.replace(/([A-Z])/g, "-$1").toLowerCase()) : i[t] = o) }, Pe = e => T.getComputedStyle(e instanceof Element ? e : e.host || (e.parentNode || {}).host || e), Le = {}, Xe = e => { if (e === T) return Le.left = Le.top = 0, Le.width = Le.right = _.clientWidth || e.innerWidth || M.clientWidth || 0, Le.height = Le.bottom = (e.innerHeight || 0) - 20 < _.clientHeight ? _.clientHeight : e.innerHeight || M.clientHeight || 0, Le; let t = e.ownerDocument || k, o = K(e.pageX) ? e.nodeType || K(e.left) || K(e.top) ? P(e)[0].getBoundingClientRect() : e : { left: e.pageX - ke(t), top: e.pageY - Te(t), right: e.pageX - ke(t) + 1, bottom: e.pageY - Te(t) + 1 }; return K(o.right) && !K(o.width) ? (o.right = o.left + o.width, o.bottom = o.top + o.height) : K(o.width) && (o = { width: o.right - o.left, height: o.bottom - o.top, right: o.right, left: o.left, bottom: o.bottom, top: o.top }), o }, Ne = (e, t, o) => { let i, n = e.vars, l = n[o], s = e._listeners[t]; return q(l) && (i = l.apply(n.callbackScope || e, n[o + "Params"] || [e.pointerEvent])), s && !1 === e.dispatchEvent(t) && (i = !1), i }, Ye = (e, t) => { let o, i, n, l = P(e)[0]; return l.nodeType || l === T ? ze(l, t) : K(e.left) ? (i = e.min || e.minX || e.minRotation || 0, o = e.min || e.minY || 0, { left: i, top: o, width: (e.max || e.maxX || e.maxRotation || 0) - i, height: (e.max || e.maxY || 0) - o }) : (n = { x: 0, y: 0 }, { left: e.left - n.x, top: e.top - n.y, width: e.width, height: e.height }) }, He = {}, ze = (e, t) => { t = P(t)[0]; let o, i, n, l, s, r, a, d, c, p, g, h, u, m = e.getBBox && e.ownerSVGElement, f = e.ownerDocument || k; if (e === T) n = Te(f), o = ke(f), i = o + (f.documentElement.clientWidth || e.innerWidth || f.body.clientWidth || 0), l = n + ((e.innerHeight || 0) - 20 < f.documentElement.clientHeight ? f.documentElement.clientHeight : e.innerHeight || f.body.clientHeight || 0); else { if (t === T || K(t)) return e.getBoundingClientRect(); o = n = 0, m ? (p = e.getBBox(), g = p.width, h = p.height) : (e.viewBox && (p = e.viewBox.baseVal) && (o = p.x || 0, n = p.y || 0, g = p.width, h = p.height), g || (u = Pe(e), p = "border-box" === u.boxSizing, g = (parseFloat(u.width) || e.clientWidth || 0) + (p ? 0 : parseFloat(u.borderLeftWidth) + parseFloat(u.borderRightWidth)), h = (parseFloat(u.height) || e.clientHeight || 0) + (p ? 0 : parseFloat(u.borderTopWidth) + parseFloat(u.borderBottomWidth)))), i = g, l = h } return e === t ? { left: o, top: n, width: i - o, height: l - n } : (s = w(t, !0).multiply(w(e)), r = s.apply({ x: o, y: n }), a = s.apply({ x: i, y: n }), d = s.apply({ x: i, y: l }), c = s.apply({ x: o, y: l }), o = Math.min(r.x, a.x, d.x, c.x), n = Math.min(r.y, a.y, d.y, c.y), { left: o, top: n, width: Math.max(r.x, a.x, d.x, c.x) - o, height: Math.max(r.y, a.y, d.y, c.y) - n }) }, Be = (e, t, o, i, n, l) => { let s, r, a, d = {}; if (t) if (1 !== n && t instanceof Array) { if (d.end = s = [], a = t.length, j(t[0])) for (r = 0; r < a; r++)s[r] = ge(t[r], n); else for (r = 0; r < a; r++)s[r] = t[r] * n; o += 1.1, i -= 1.1 } else q(t) ? d.end = o => { let i, l, s = t.call(e, o); if (1 !== n) if (j(s)) { for (l in i = {}, s) i[l] = s[l] * n; s = i } else s *= n; return s } : d.end = t; return (o || 0 === o) && (d.max = o), (i || 0 === i) && (d.min = i), l && (d.velocity = 0), d }, Re = e => { let t; return !(!e || !e.getAttribute || e === M) && (!("true" !== (t = e.getAttribute("data-clickable")) && ("false" === t || !ae.test(e.nodeName + "") && "true" !== e.getAttribute("contentEditable"))) || Re(e.parentNode)) }, Ie = (e, t) => { let o, i = e.length; for (; i--;)o = e[i], o.ondragstart = o.onselectstart = t ? null : Z, b.set(o, { lazy: !0, userSelect: t ? "text" : "none" }) }, Oe = e => "fixed" === Pe(e).position || ((e = e.parentNode) && 1 === e.nodeType ? Oe(e) : void 0), Ae = function (e, t) { e = b.utils.toArray(e)[0], t = t || {}; let o, i, n, l, s, r, a = document.createElement("div"), d = a.style, c = e.firstChild, p = 0, g = 0, h = e.scrollTop, u = e.scrollLeft, m = e.scrollWidth, f = e.scrollHeight, x = 0, v = 0, y = 0; A && !1 !== t.force3D ? (s = "translate3d(", r = "px,0px)") : U && (s = "translate(", r = "px)"), this.scrollTop = function (e, t) { if (!arguments.length) return -this.top(); this.top(-e, t) }, this.scrollLeft = function (e, t) { if (!arguments.length) return -this.left(); this.left(-e, t) }, this.left = function (o, i) { if (!arguments.length) return -(e.scrollLeft + g); let n = e.scrollLeft - u, l = g; if ((n > 2 || n < -2) && !i) return u = e.scrollLeft, b.killTweensOf(this, { left: 1, scrollLeft: 1 }), this.left(-u), void (t.onKill && t.onKill()); (o = -o) < 0 ? (g = o - .5 | 0, o = 0) : o > v ? (g = o - v | 0, o = v) : g = 0, (g || l) && (this._skip || (d[U] = s + -g + "px," + -p + r), g + x >= 0 && (d.paddingRight = g + x + "px")), e.scrollLeft = 0 | o, u = e.scrollLeft }, this.top = function (o, i) { if (!arguments.length) return -(e.scrollTop + p); let n = e.scrollTop - h, l = p; if ((n > 2 || n < -2) && !i) return h = e.scrollTop, b.killTweensOf(this, { top: 1, scrollTop: 1 }), this.top(-h), void (t.onKill && t.onKill()); (o = -o) < 0 ? (p = o - .5 | 0, o = 0) : o > y ? (p = o - y | 0, o = y) : p = 0, (p || l) && (this._skip || (d[U] = s + -g + "px," + -p + r)), e.scrollTop = 0 | o, h = e.scrollTop }, this.maxScrollTop = () => y, this.maxScrollLeft = () => v, this.disable = function () { for (c = a.firstChild; c;)l = c.nextSibling, e.appendChild(c), c = l; e === a.parentNode && e.removeChild(a) }, this.enable = function () { if (c = e.firstChild, c !== a) { for (; c;)l = c.nextSibling, a.appendChild(c), c = l; e.appendChild(a), this.calibrate() } }, this.calibrate = function (t) { let l, s, r, c = e.clientWidth === o; h = e.scrollTop, u = e.scrollLeft, c && e.clientHeight === i && a.offsetHeight === n && m === e.scrollWidth && f === e.scrollHeight && !t || ((p || g) && (s = this.left(), r = this.top(), this.left(-e.scrollLeft), this.top(-e.scrollTop)), l = Pe(e), c && !t || (d.display = "block", d.width = "auto", d.paddingRight = "0px", x = Math.max(0, e.scrollWidth - e.clientWidth), x && (x += parseFloat(l.paddingLeft) + (F ? parseFloat(l.paddingRight) : 0))), d.display = "inline-block", d.position = "relative", d.overflow = "visible", d.verticalAlign = "top", d.boxSizing = "content-box", d.width = "100%", d.paddingRight = x + "px", F && (d.paddingBottom = l.paddingBottom), o = e.clientWidth, i = e.clientHeight, m = e.scrollWidth, f = e.scrollHeight, v = e.scrollWidth - o, y = e.scrollHeight - i, n = a.offsetHeight, d.display = "block", (s || r) && (this.left(s), this.top(r))) }, this.content = a, this.element = e, this._skip = !1, this.enable() }, Fe = e => { if (G() && document.body) { let e = window && window.navigator; T = window, k = document, _ = k.documentElement, M = k.body, S = ee("div"), R = !!window.PointerEvent, D = ee("div"), D.style.cssText = "visibility:hidden;height:1px;top:-1px;pointer-events:none;position:relative;clear:both;cursor:grab", B = "grab" === D.style.cursor ? "grab" : "move", H = e && -1 !== e.userAgent.toLowerCase().indexOf("android"), X = "ontouchstart" in _ && "orientation" in T || e && (e.MaxTouchPoints > 0 || e.msMaxTouchPoints > 0), F = function () { let e, t = ee("div"), o = ee("div"), i = o.style, n = M; return i.display = "inline-block", i.position = "relative", t.style.cssText = "width:90px;height:40px;padding:10px;overflow:auto;visibility:hidden", t.appendChild(o), n.appendChild(t), e = o.offsetHeight + 18 > t.scrollHeight, n.removeChild(t), e }(), N = function (e) { let t = e.split(","), o = ("onpointerdown" in S ? "pointerdown,pointermove,pointerup,pointercancel" : "onmspointerdown" in S ? "MSPointerDown,MSPointerMove,MSPointerUp,MSPointerCancel" : e).split(","), i = {}, n = 4; for (; --n > -1;)i[t[n]] = o[n], i[o[n]] = t[n]; try { _.addEventListener("test", null, Object.defineProperty({}, "passive", { get: function () { L = 1 } })) } catch (e) { } return i }("touchstart,touchmove,touchend,touchcancel"), xe(k, "touchcancel", Z), xe(T, "touchmove", Z), M && M.addEventListener("touchstart", Z), xe(k, "contextmenu", (function () { for (let e in se) se[e].isPressed && se[e].endDrag() })), b = C = V() } b ? (z = b.plugins.inertia, I = b.core.context || function () { }, E = b.utils.checkPrefix, U = E(U), $ = E($), P = b.utils.toArray, O = b.core.getStyleSaver, A = !!E("perspective")) : e && console.warn("Please gsap.registerPlugin(Draggable)") }; class We extends class { constructor(e) { this._listeners = {}, this.target = e || this } addEventListener(e, t) { let o = this._listeners[e] || (this._listeners[e] = []); ~o.indexOf(t) || o.push(t) } removeEventListener(e, t) { let o = this._listeners[e], i = o && o.indexOf(t); i >= 0 && o.splice(i, 1) } dispatchEvent(e) { let t; return (this._listeners[e] || []).forEach(o => !1 === o.call(this, { type: e, target: this.target }) && (t = !1)), t } }{ constructor(e, t) { super(), C || Fe(1), e = P(e)[0], this.styles = O && O(e, "transform,left,top"), z || (z = b.plugins.inertia), this.vars = t = ge(t || {}), this.target = e, this.x = this.y = this.rotation = 0, this.dragResistance = parseFloat(t.dragResistance) || 0, this.edgeResistance = isNaN(t.edgeResistance) ? 1 : parseFloat(t.edgeResistance) || 0, this.lockAxis = t.lockAxis, this.autoScroll = t.autoScroll || 0, this.lockedAxis = null, this.allowEventDefault = !!t.allowEventDefault, b.getProperty(e, "x"); let o, i, n, l, s, r, a, d, c, p, g, h, u, m, f, x, v, M, S, E, L, A, F, G, V, Z, U, ee, ae, me, we, De, Le, ze = (t.type || "x,y").toLowerCase(), Ge = ~ze.indexOf("x") || ~ze.indexOf("y"), Ve = -1 !== ze.indexOf("rotation"), qe = Ve ? "rotation" : Ge ? "x" : "left", je = Ge ? "y" : "top", Ke = !(!~ze.indexOf("x") && !~ze.indexOf("left") && "scroll" !== ze), Ze = !(!~ze.indexOf("y") && !~ze.indexOf("top") && "scroll" !== ze), Ue = t.minimumMovement || 2, $e = this, Je = P(t.trigger || t.handle || e), Qe = {}, et = 0, tt = !1, ot = t.autoScrollMarginTop || 40, it = t.autoScrollMarginRight || 40, nt = t.autoScrollMarginBottom || 40, lt = t.autoScrollMarginLeft || 40, st = t.clickableTest || Re, rt = 0, at = e._gsap || b.core.getCache(e), dt = Oe(e), ct = (t, o) => parseFloat(at.get(e, t, o)), pt = e.ownerDocument || k, gt = e => (ye(e), e.stopImmediatePropagation && e.stopImmediatePropagation(), !1), ht = t => { if ($e.autoScroll && $e.isDragging && (tt || v)) { let t, o, i, n, l, s, r, a, d = e, c = 15 * $e.autoScroll; for (tt = !1, pe.scrollTop = null != T.pageYOffset ? T.pageYOffset : null != pt.documentElement.scrollTop ? pt.documentElement.scrollTop : pt.body.scrollTop, pe.scrollLeft = null != T.pageXOffset ? T.pageXOffset : null != pt.documentElement.scrollLeft ? pt.documentElement.scrollLeft : pt.body.scrollLeft, n = $e.pointerX - pe.scrollLeft, l = $e.pointerY - pe.scrollTop; d && !o;)o = Se(d.parentNode), t = o ? pe : d.parentNode, i = o ? { bottom: Math.max(_.clientHeight, T.innerHeight || 0), right: Math.max(_.clientWidth, T.innerWidth || 0), left: 0, top: 0 } : t.getBoundingClientRect(), s = r = 0, Ze && (a = t._gsMaxScrollY - t.scrollTop, a < 0 ? r = a : l > i.bottom - nt && a ? (tt = !0, r = Math.min(a, c * (1 - Math.max(0, i.bottom - l) / nt) | 0)) : l < i.top + ot && t.scrollTop && (tt = !0, r = -Math.min(t.scrollTop, c * (1 - Math.max(0, l - i.top) / ot) | 0)), r && (t.scrollTop += r)), Ke && (a = t._gsMaxScrollX - t.scrollLeft, a < 0 ? s = a : n > i.right - it && a ? (tt = !0, s = Math.min(a, c * (1 - Math.max(0, i.right - n) / it) | 0)) : n < i.left + lt && t.scrollLeft && (tt = !0, s = -Math.min(t.scrollLeft, c * (1 - Math.max(0, n - i.left) / lt) | 0)), s && (t.scrollLeft += s)), o && (s || r) && (T.scrollTo(t.scrollLeft, t.scrollTop), St($e.pointerX + s, $e.pointerY + r)), d = t } if (v) { let { x: o, y: n } = $e; Ve ? ($e.deltaX = o - parseFloat(at.rotation), $e.rotation = o, at.rotation = o + "deg", at.renderTransform(1, at)) : i ? (Ze && ($e.deltaY = n - i.top(), i.top(n)), Ke && ($e.deltaX = o - i.left(), i.left(o))) : Ge ? (Ze && ($e.deltaY = n - parseFloat(at.y), at.y = n + "px"), Ke && ($e.deltaX = o - parseFloat(at.x), at.x = o + "px"), at.renderTransform(1, at)) : (Ze && ($e.deltaY = n - parseFloat(e.style.top || 0), e.style.top = n + "px"), Ke && ($e.deltaX = o - parseFloat(e.style.left || 0), e.style.left = o + "px")), !d || t || ee || (ee = !0, !1 === Ne($e, "drag", "onDrag") && (Ke && ($e.x -= $e.deltaX), Ze && ($e.y -= $e.deltaY), ht(!0)), ee = !1) } v = !1 }, ut = (t, o) => { let n, l, { x: s, y: r } = $e; e._gsap || (at = b.core.getCache(e)), at.uncache && b.getProperty(e, "x"), Ge ? ($e.x = parseFloat(at.x), $e.y = parseFloat(at.y)) : Ve ? $e.x = $e.rotation = parseFloat(at.rotation) : i ? ($e.y = i.top(), $e.x = i.left()) : ($e.y = parseFloat(e.style.top || (l = Pe(e)) && l.top) || 0, $e.x = parseFloat(e.style.left || (l || {}).left) || 0), (S || E || L) && !o && ($e.isDragging || $e.isThrowing) && (L && (ce.x = $e.x, ce.y = $e.y, n = L(ce), n.x !== $e.x && ($e.x = n.x, v = !0), n.y !== $e.y && ($e.y = n.y, v = !0)), S && (n = S($e.x), n !== $e.x && ($e.x = n, Ve && ($e.rotation = n), v = !0)), E && (n = E($e.y), n !== $e.y && ($e.y = n), v = !0)), v && ht(!0), t || ($e.deltaX = $e.x - s, $e.deltaY = $e.y - r, Ne($e, "throwupdate", "onThrowUpdate")) }, mt = (e, t, o, i) => (null == t && (t = -oe), null == o && (o = oe), q(e) ? n => { let l = $e.isPressed ? 1 - $e.edgeResistance : 1; return e.call($e, (n > o ? o + (n - o) * l : n < t ? t + (n - t) * l : n) * i) * i } : Q(e) ? i => { let n, l, s = e.length, r = 0, a = oe; for (; --s > -1;)n = e[s], l = n - i, l < 0 && (l = -l), l < a && n >= t && n <= o && (r = s, a = l); return e[r] } : isNaN(e) ? e => e : () => e * i), ft = () => { let o, n, l, s; a = !1, i ? (i.calibrate(), $e.minX = g = -i.maxScrollLeft(), $e.minY = u = -i.maxScrollTop(), $e.maxX = p = $e.maxY = h = 0, a = !0) : t.bounds && (o = Ye(t.bounds, e.parentNode), Ve ? ($e.minX = g = o.left, $e.maxX = p = o.left + o.width, $e.minY = u = $e.maxY = h = 0) : K(t.bounds.maxX) && K(t.bounds.maxY) ? (n = Ye(e, e.parentNode), $e.minX = g = Math.round(ct(qe, "px") + o.left - n.left), $e.minY = u = Math.round(ct(je, "px") + o.top - n.top), $e.maxX = p = Math.round(g + (o.width - n.width)), $e.maxY = h = Math.round(u + (o.height - n.height))) : (o = t.bounds, $e.minX = g = o.minX, $e.minY = u = o.minY, $e.maxX = p = o.maxX, $e.maxY = h = o.maxY), g > p && ($e.minX = p, $e.maxX = p = g, g = $e.minX), u > h && ($e.minY = h, $e.maxY = h = u, u = $e.minY), Ve && ($e.minRotation = g, $e.maxRotation = p), a = !0), t.liveSnap && (l = !0 === t.liveSnap ? t.snap || {} : t.liveSnap, s = Q(l) || q(l), Ve ? (S = mt(s ? l : l.rotation, g, p, 1), E = null) : l.points ? L = ((e, t, o, i, n, l, s) => (l = l && l < oe ? l * l : oe, q(e) ? r => { let a, d, c, p = $e.isPressed ? 1 - $e.edgeResistance : 1, g = r.x, h = r.y; return r.x = g = g > o ? o + (g - o) * p : g < t ? t + (g - t) * p : g, r.y = h = h > n ? n + (h - n) * p : h < i ? i + (h - i) * p : h, a = e.call($e, r), a !== r && (r.x = a.x, r.y = a.y), 1 !== s && (r.x *= s, r.y *= s), l < oe && (d = r.x - g, c = r.y - h, d * d + c * c > l && (r.x = g, r.y = h)), r } : Q(e) ? t => { let o, i, n, s, r = e.length, a = 0, d = oe; for (; --r > -1;)n = e[r], o = n.x - t.x, i = n.y - t.y, s = o * o + i * i, s < d && (a = r, d = s); return d <= l ? e[a] : t } : e => e))(s ? l : l.points, g, p, u, h, l.radius, i ? -1 : 1) : (Ke && (S = mt(s ? l : l.x || l.left || l.scrollLeft, g, p, i ? -1 : 1)), Ze && (E = mt(s ? l : l.y || l.top || l.scrollTop, u, h, i ? -1 : 1)))) }, xt = () => { $e.isThrowing = !1, Ne($e, "throwcomplete", "onThrowComplete") }, vt = () => { $e.isThrowing = !1 }, yt = (o, n) => { let l, s, r, d; o && z ? (!0 === o && (l = t.snap || t.liveSnap || {}, s = Q(l) || q(l), o = { resistance: (t.throwResistance || t.resistance || 1e3) / (Ve ? 10 : 1) }, Ve ? o.rotation = Be($e, s ? l : l.rotation, p, g, 1, n) : (Ke && (o[qe] = Be($e, s ? l : l.points || l.x || l.left, p, g, i ? -1 : 1, n || "x" === $e.lockedAxis)), Ze && (o[je] = Be($e, s ? l : l.points || l.y || l.top, h, u, i ? -1 : 1, n || "y" === $e.lockedAxis)), (l.points || Q(l) && j(l[0])) && (o.linkedProps = qe + "," + je, o.radius = l.radius))), $e.isThrowing = !0, d = isNaN(t.overshootTolerance) ? 1 === t.edgeResistance ? 0 : 1 - $e.edgeResistance + .2 : t.overshootTolerance, o.duration || (o.duration = { max: Math.max(t.minDuration || 0, "maxDuration" in t ? t.maxDuration : 2), min: isNaN(t.minDuration) ? 0 === d || j(o) && o.resistance > 1e3 ? 0 : .5 : t.minDuration, overshoot: d }), $e.tween = r = b.to(i || e, { inertia: o, data: "_draggable", inherit: !1, onComplete: xt, onInterrupt: vt, onUpdate: t.fastMode ? Ne : ut, onUpdateParams: t.fastMode ? [$e, "onthrowupdate", "onThrowUpdate"] : l && l.radius ? [!1, !0] : [] }), t.fastMode || (i && (i._skip = !0), r.render(1e9, !0, !0), ut(!0, !0), $e.endX = $e.x, $e.endY = $e.y, Ve && ($e.endRotation = $e.x), r.play(0), ut(!0, !0), i && (i._skip = !1))) : a && $e.applyBounds() }, wt = t => { let o, i = G; G = w(e.parentNode, !0), t && $e.isPressed && !G.equals(i || new y) && (o = i.inverse().apply({ x: n, y: l }), G.apply(o, o), n = o.x, l = o.y), G.equals(ie) && (G = null) }, bt = () => { let t, o, d, c = 1 - $e.edgeResistance, m = dt ? ke(pt) : 0, f = dt ? Te(pt) : 0; Ge && (at.x = ct(qe, "px") + "px", at.y = ct(je, "px") + "px", at.renderTransform()), wt(!1), He.x = $e.pointerX - m, He.y = $e.pointerY - f, G && G.apply(He, He), n = He.x, l = He.y, v && (St($e.pointerX, $e.pointerY), ht(!0)), De = w(e), i ? (ft(), r = i.top(), s = i.left()) : (Tt() ? (ut(!0, !0), ft()) : $e.applyBounds(), Ve ? (t = e.ownerSVGElement ? [at.xOrigin - e.getBBox().x, at.yOrigin - e.getBBox().y] : (Pe(e)[$] || "0 0").split(" "), x = $e.rotationOrigin = w(e).apply({ x: parseFloat(t[0]) || 0, y: parseFloat(t[1]) || 0 }), ut(!0, !0), o = $e.pointerX - x.x - m, d = x.y - $e.pointerY + f, s = $e.x, r = $e.y = Math.atan2(d, o) * te) : (r = ct(je, "px"), s = ct(qe, "px"))), a && c && (s > p ? s = p + (s - p) / c : s < g && (s = g - (g - s) / c), Ve || (r > h ? r = h + (r - h) / c : r < u && (r = u - (u - r) / c))), $e.startX = s = J(s), $e.startY = r = J(r) }, Tt = () => $e.tween && $e.tween.isActive(), kt = () => { !D.parentNode || Tt() || $e.isDragging || D.parentNode.removeChild(D) }, _t = (s, r) => { let a; if (!o || $e.isPressed || !s || !("mousedown" !== s.type && "pointerdown" !== s.type || r) && ne() - rt < 30 && N[$e.pointerEvent.type]) we && s && o && ye(s); else { if (V = Tt(), Le = !1, $e.pointerEvent = s, N[s.type] ? (F = ~s.type.indexOf("touch") ? s.currentTarget || s.target : pt, xe(F, "touchend", Dt), xe(F, "touchmove", Mt), xe(F, "touchcancel", Dt), xe(pt, "touchstart", be)) : (F = null, xe(pt, "mousemove", Mt)), U = null, R && F || (xe(pt, "mouseup", Dt), s && s.target && xe(s.target, "mouseup", Dt)), A = st.call($e, s.target) && !1 === t.dragClickables && !r, A) return xe(s.target, "change", Dt), Ne($e, "pressInit", "onPressInit"), Ne($e, "press", "onPress"), Ie(Je, !0), void (we = !1); var p; if (Z = !(!F || Ke === Ze || !1 === $e.vars.allowNativeTouchScrolling || $e.vars.allowContextMenu && s && (s.ctrlKey || s.which > 2)) && (Ke ? "y" : "x"), we = !Z && !$e.allowEventDefault, we && (ye(s), xe(T, "touchforcechange", ye)), s.changedTouches ? (s = m = s.changedTouches[0], f = s.identifier) : s.pointerId ? f = s.pointerId : m = f = null, W++, p = ht, le.push(p), 1 === le.length && b.ticker.add(ue), l = $e.pointerY = s.pageY, n = $e.pointerX = s.pageX, Ne($e, "pressInit", "onPressInit"), (Z || $e.autoScroll) && Ce(e.parentNode), !e.parentNode || !$e.autoScroll || i || Ve || !e.parentNode._gsMaxScrollX || D.parentNode || e.getBBox || (D.style.width = e.parentNode.scrollWidth + "px", e.parentNode.appendChild(D)), bt(), $e.tween && $e.tween.kill(), $e.isThrowing = !1, b.killTweensOf(i || e, Qe, !0), i && b.killTweensOf(e, { scrollTo: 1 }, !0), $e.tween = $e.lockedAxis = null, (t.zIndexBoost || !Ve && !i && !1 !== t.zIndexBoost) && (e.style.zIndex = We.zIndex++), $e.isPressed = !0, d = !(!t.onDrag && !$e._listeners.drag), c = !(!t.onMove && !$e._listeners.move), !1 !== t.cursor || t.activeCursor) for (a = Je.length; --a > -1;)b.set(Je[a], { cursor: t.activeCursor || t.cursor || ("grab" === B ? "grabbing" : B) }); Ne($e, "press", "onPress") } }, Mt = t => { let i, s, r, a, d, p, g = t; if (o && !Y && $e.isPressed && t) { if ($e.pointerEvent = t, i = t.changedTouches, i) { if ((t = i[0]) !== m && t.identifier !== f) { for (a = i.length; --a > -1 && (t = i[a]).identifier !== f && t.target !== e;); if (a < 0) return } } else if (t.pointerId && f && t.pointerId !== f) return; F && Z && !U && (He.x = t.pageX - (dt ? ke(pt) : 0), He.y = t.pageY - (dt ? Te(pt) : 0), G && G.apply(He, He), s = He.x, r = He.y, d = Math.abs(s - n), p = Math.abs(r - l), (d !== p && (d > Ue || p > Ue) || H && Z === U) && (U = d > p && Ke ? "x" : "y", Z && U !== Z && xe(T, "touchforcechange", ye), !1 !== $e.vars.lockAxisOnTouchScroll && Ke && Ze && ($e.lockedAxis = "x" === U ? "y" : "x", q($e.vars.onLockAxis) && $e.vars.onLockAxis.call($e, g)), H && Z === U)) ? Dt(g) : ($e.allowEventDefault || Z && (!U || Z === U) || !1 === g.cancelable ? we && (we = !1) : (ye(g), we = !0), $e.autoScroll && (tt = !0), St(t.pageX, t.pageY, c)) } else we && t && o && ye(t) }, St = (e, t, o) => { let i, d, c, m, f, y, w = 1 - $e.dragResistance, b = 1 - $e.edgeResistance, T = $e.pointerX, k = $e.pointerY, _ = r, M = $e.x, D = $e.y, C = $e.endX, P = $e.endY, X = $e.endRotation, N = v; $e.pointerX = e, $e.pointerY = t, dt && (e -= ke(pt), t -= Te(pt)), Ve ? (m = Math.atan2(x.y - t, e - x.x) * te, f = $e.y - m, f > 180 ? (r -= 360, $e.y = m) : f < -180 && (r += 360, $e.y = m), $e.x !== s || Math.abs(r - m) > Ue ? ($e.y = m, c = s + (r - m) * w) : c = s) : (G && (y = e * G.a + t * G.c + G.e, t = e * G.b + t * G.d + G.f, e = y), d = t - l, i = e - n, d < Ue && d > -Ue && (d = 0), i < Ue && i > -Ue && (i = 0), ($e.lockAxis || $e.lockedAxis) && (i || d) && (y = $e.lockedAxis, y || ($e.lockedAxis = y = Ke && Math.abs(i) > Math.abs(d) ? "y" : Ze ? "x" : null, y && q($e.vars.onLockAxis) && $e.vars.onLockAxis.call($e, $e.pointerEvent)), "y" === y ? d = 0 : "x" === y && (i = 0)), c = J(s + i * w), m = J(r + d * w)), (S || E || L) && ($e.x !== c || $e.y !== m && !Ve) && (L && (ce.x = c, ce.y = m, y = L(ce), c = J(y.x), m = J(y.y)), S && (c = J(S(c))), E && (m = J(E(m)))), a && (c > p ? c = p + Math.round((c - p) * b) : c < g && (c = g + Math.round((c - g) * b)), Ve || (m > h ? m = Math.round(h + (m - h) * b) : m < u && (m = Math.round(u + (m - u) * b)))), ($e.x !== c || $e.y !== m && !Ve) && (Ve ? ($e.endRotation = $e.x = $e.endX = c, v = !0) : (Ze && ($e.y = $e.endY = m, v = !0), Ke && ($e.x = $e.endX = c, v = !0)), o && !1 === Ne($e, "move", "onMove") ? ($e.pointerX = T, $e.pointerY = k, r = _, $e.x = M, $e.y = D, $e.endX = C, $e.endY = P, $e.endRotation = X, v = N) : !$e.isDragging && $e.isPressed && ($e.isDragging = Le = !0, Ne($e, "dragstart", "onDragStart"))) }, Dt = (i, n) => { if (!o || !$e.isPressed || i && null != f && !n && (i.pointerId && i.pointerId !== f && i.target !== e || i.changedTouches && !((e, t) => { let o = e.length; for (; o--;)if (e[o].identifier === t) return !0 })(i.changedTouches, f))) return void (we && i && o && ye(i)); $e.isPressed = !1; let l, s, r, a, d, c = i, p = $e.isDragging, g = $e.vars.allowContextMenu && i && (i.ctrlKey || i.which > 2), h = b.delayedCall(.001, kt); if (F ? (ve(F, "touchend", Dt), ve(F, "touchmove", Mt), ve(F, "touchcancel", Dt), ve(pt, "touchstart", be)) : ve(pt, "mousemove", Mt), ve(T, "touchforcechange", ye), R && F || (ve(pt, "mouseup", Dt), i && i.target && ve(i.target, "mouseup", Dt)), v = !1, p && (et = de = ne(), $e.isDragging = !1), fe(ht), A && !g) return i && (ve(i.target, "change", Dt), $e.pointerEvent = c), Ie(Je, !1), Ne($e, "release", "onRelease"), Ne($e, "click", "onClick"), void (A = !1); for (s = Je.length; --s > -1;)Ee(Je[s], "cursor", t.cursor || (!1 !== t.cursor ? B : null)); if (W--, i) { if (l = i.changedTouches, l && (i = l[0]) !== m && i.identifier !== f) { for (s = l.length; --s > -1 && (i = l[s]).identifier !== f && i.target !== e;); if (s < 0 && !n) return } $e.pointerEvent = c, $e.pointerX = i.pageX, $e.pointerY = i.pageY } return g && c ? (ye(c), we = !0, Ne($e, "release", "onRelease")) : c && !p ? (we = !1, V && (t.snap || t.bounds) && yt(t.inertia || t.throwProps), Ne($e, "release", "onRelease"), H && "touchmove" === c.type || -1 !== c.type.indexOf("cancel") || (Ne($e, "click", "onClick"), ne() - rt < 300 && Ne($e, "doubleclick", "onDoubleClick"), a = c.target || e, rt = ne(), d = () => { rt === ae || !$e.enabled() || $e.isPressed || c.defaultPrevented || (a.click ? a.click() : pt.createEvent && (r = pt.createEvent("MouseEvents"), r.initMouseEvent("click", !0, !0, T, 1, $e.pointerEvent.screenX, $e.pointerEvent.screenY, $e.pointerX, $e.pointerY, !1, !1, !1, !1, 0, null), a.dispatchEvent(r))) }, H || c.defaultPrevented || b.delayedCall(.05, d))) : (yt(t.inertia || t.throwProps), $e.allowEventDefault || !c || !1 === t.dragClickables && st.call($e, c.target) || !p || Z && (!U || Z !== U) || !1 === c.cancelable ? we = !1 : (we = !0, ye(c)), Ne($e, "release", "onRelease")), Tt() && h.duration($e.tween.duration()), p && Ne($e, "dragend", "onDragEnd"), !0 }, Ct = t => { if (t && $e.isDragging && !i) { let o = t.target || e.parentNode, i = o.scrollLeft - o._gsScrollX, s = o.scrollTop - o._gsScrollY; (i || s) && (G ? (n -= i * G.a + s * G.c, l -= s * G.d + i * G.b) : (n -= i, l -= s), o._gsScrollX += i, o._gsScrollY += s, St($e.pointerX, $e.pointerY)) } }, Et = e => { let t = ne(), o = t - rt < 100, i = t - et < 50, n = o && ae === rt, l = $e.pointerEvent && $e.pointerEvent.defaultPrevented, s = o && me === rt, r = e.isTrusted || null == e.isTrusted && o && n; if ((n || i && !1 !== $e.vars.suppressClickOnDrag) && e.stopImmediatePropagation && e.stopImmediatePropagation(), o && (!$e.pointerEvent || !$e.pointerEvent.defaultPrevented) && (!n || r && !s)) return r && n && (me = rt), void (ae = rt); ($e.isPressed || i || o) && (r && e.detail && o && !l || ye(e)), o || i || Le || (e && e.target && ($e.pointerEvent = e), Ne($e, "click", "onClick")) }, Pt = e => G ? { x: e.x * G.a + e.y * G.c + G.e, y: e.x * G.b + e.y * G.d + G.f } : { x: e.x, y: e.y }; M = We.get(e), M && M.kill(), this.startDrag = (t, o) => { let i, s, r, a; _t(t || $e.pointerEvent, !0), o && !$e.hitTest(t || $e.pointerEvent) && (i = Xe(t || $e.pointerEvent), s = Xe(e), r = Pt({ x: i.left + i.width / 2, y: i.top + i.height / 2 }), a = Pt({ x: s.left + s.width / 2, y: s.top + s.height / 2 }), n -= r.x - a.x, l -= r.y - a.y), $e.isDragging || ($e.isDragging = Le = !0, Ne($e, "dragstart", "onDragStart")) }, this.drag = Mt, this.endDrag = e => Dt(e || $e.pointerEvent, !0), this.timeSinceDrag = () => $e.isDragging ? 0 : (ne() - et) / 1e3, this.timeSinceClick = () => (ne() - rt) / 1e3, this.hitTest = (e, t) => We.hitTest($e.target, e, t), this.getDirection = (t, o) => { let i, n, l, a, d, c, p = "velocity" === t && z ? t : j(t) && !Ve ? "element" : "start"; return "element" === p && (d = Xe($e.target), c = Xe(t)), i = "start" === p ? $e.x - s : "velocity" === p ? z.getVelocity(e, qe) : d.left + d.width / 2 - (c.left + c.width / 2), Ve ? i < 0 ? "counter-clockwise" : "clockwise" : (o = o || 2, n = "start" === p ? $e.y - r : "velocity" === p ? z.getVelocity(e, je) : d.top + d.height / 2 - (c.top + c.height / 2), l = Math.abs(i / n), a = l < 1 / o ? "" : i < 0 ? "left" : "right", l < o && ("" !== a && (a += "-"), a += n < 0 ? "up" : "down"), a) }, this.applyBounds = (o, i) => { let n, l, s, r, d, c; if (o && t.bounds !== o) return t.bounds = o, $e.update(!0, i); if (ut(!0), ft(), a && !Tt()) { if (n = $e.x, l = $e.y, n > p ? n = p : n < g && (n = g), l > h ? l = h : l < u && (l = u), ($e.x !== n || $e.y !== l) && (s = !0, $e.x = $e.endX = n, Ve ? $e.endRotation = n : $e.y = $e.endY = l, v = !0, ht(!0), $e.autoScroll && !$e.isDragging)) for (Ce(e.parentNode), r = e, pe.scrollTop = null != T.pageYOffset ? T.pageYOffset : null != pt.documentElement.scrollTop ? pt.documentElement.scrollTop : pt.body.scrollTop, pe.scrollLeft = null != T.pageXOffset ? T.pageXOffset : null != pt.documentElement.scrollLeft ? pt.documentElement.scrollLeft : pt.body.scrollLeft; r && !c;)c = Se(r.parentNode), d = c ? pe : r.parentNode, Ze && d.scrollTop > d._gsMaxScrollY && (d.scrollTop = d._gsMaxScrollY), Ke && d.scrollLeft > d._gsMaxScrollX && (d.scrollLeft = d._gsMaxScrollX), r = d; $e.isThrowing && (s || $e.endX > p || $e.endX < g || $e.endY > h || $e.endY < u) && yt(t.inertia || t.throwProps, s) } return $e }, this.update = (t, o, i) => { if (o && $e.isPressed) { let t = w(e), o = De.apply({ x: $e.x - s, y: $e.y - r }), i = w(e.parentNode, !0); i.apply({ x: t.e - o.x, y: t.f - o.y }, o), $e.x -= o.x - i.e, $e.y -= o.y - i.f, ht(!0), bt() } let { x: n, y: l } = $e; return wt(!o), t ? $e.applyBounds() : (v && i && ht(!0), ut(!0)), o && (St($e.pointerX, $e.pointerY), v && ht(!0)), $e.isPressed && !o && (Ke && Math.abs(n - $e.x) > .01 || Ze && Math.abs(l - $e.y) > .01 && !Ve) && bt(), $e.autoScroll && (Ce(e.parentNode, $e.isDragging), tt = $e.isDragging, ht(!0), Me(e, Ct), _e(e, Ct)), $e }, this.enable = n => { let l, s, r, a = { lazy: !0 }; if (!1 !== t.cursor && (a.cursor = t.cursor || B), b.utils.checkPrefix("touchCallout") && (a.touchCallout = "none"), "soft" !== n) { for (he(Je, Ke === Ze ? "none" : t.allowNativeTouchScrolling && e.scrollHeight === e.clientHeight == (e.scrollWidth === e.clientHeight) || t.allowEventDefault ? "manipulation" : Ke ? "pan-y" : "pan-x"), s = Je.length; --s > -1;)r = Je[s], R || xe(r, "mousedown", _t), xe(r, "touchstart", _t), xe(r, "click", Et, !0), b.set(r, a), r.getBBox && r.ownerSVGElement && Ke !== Ze && b.set(r.ownerSVGElement, { touchAction: t.allowNativeTouchScrolling || t.allowEventDefault ? "manipulation" : Ke ? "pan-y" : "pan-x" }), t.allowContextMenu || xe(r, "contextmenu", gt); Ie(Je, !1) } return _e(e, Ct), o = !0, z && "soft" !== n && z.track(i || e, Ge ? "x,y" : Ve ? "rotation" : "top,left"), e._gsDragID = l = "d" + re++, se[l] = $e, i && (i.enable(), i.element._gsDragID = l), (t.bounds || Ve) && bt(), t.bounds && $e.applyBounds(), $e }, this.disable = t => { let n, l = $e.isDragging, s = Je.length; for (; --s > -1;)Ee(Je[s], "cursor", null); if ("soft" !== t) { for (he(Je, null), s = Je.length; --s > -1;)n = Je[s], Ee(n, "touchCallout", null), ve(n, "mousedown", _t), ve(n, "touchstart", _t), ve(n, "click", Et, !0), ve(n, "contextmenu", gt); Ie(Je, !0), F && (ve(F, "touchcancel", Dt), ve(F, "touchend", Dt), ve(F, "touchmove", Mt)), ve(pt, "mouseup", Dt), ve(pt, "mousemove", Mt) } return Me(e, Ct), o = !1, z && "soft" !== t && (z.untrack(i || e, Ge ? "x,y" : Ve ? "rotation" : "top,left"), $e.tween && $e.tween.kill()), i && i.disable(), fe(ht), $e.isDragging = $e.isPressed = A = !1, l && Ne($e, "dragend", "onDragEnd"), $e }, this.enabled = function (e, t) { return arguments.length ? e ? $e.enable(t) : $e.disable(t) : o }, this.kill = function () { return $e.isThrowing = !1, $e.tween && $e.tween.kill(), $e.disable(), b.set(Je, { clearProps: "userSelect" }), delete se[e._gsDragID], $e }, this.revert = function () { this.kill(), this.styles && this.styles.revert() }, ~ze.indexOf("scroll") && (i = this.scrollProxy = new Ae(e, ((e, t) => { for (let o in t) o in e || (e[o] = t[o]); return e })({ onKill: function () { $e.isPressed && Dt(null) } }, t)), e.style.overflowY = Ze && !X ? "auto" : "hidden", e.style.overflowX = Ke && !X ? "auto" : "hidden", e = i.content), Ve ? Qe.rotation = 1 : (Ke && (Qe[qe] = 1), Ze && (Qe[je] = 1)), at.force3D = !("force3D" in t) || t.force3D, I(this), this.enable() } static register(e) { b = e, Fe() } static create(e, t) { return C || Fe(!0), P(e).map(e => new We(e, t)) } static get(e) { return se[(P(e)[0] || {})._gsDragID] } static timeSinceDrag() { return (ne() - de) / 1e3 } static hitTest(e, t, o) { if (e === t) return !1; let i, n, l, s = Xe(e), r = Xe(t), { top: a, left: d, right: c, bottom: p, width: g, height: h } = s, u = r.left > c || r.right < d || r.top > p || r.bottom < a; return u || !o ? !u : (l = -1 !== (o + "").indexOf("%"), o = parseFloat(o) || 0, i = { left: Math.max(d, r.left), top: Math.max(a, r.top) }, i.width = Math.min(c, r.right) - i.left, i.height = Math.min(p, r.bottom) - i.top, !(i.width < 0 || i.height < 0) && (l ? (o *= .01, n = i.width * i.height, n >= g * h * o || n >= r.width * r.height * o) : i.width > o && i.height > o)) } } ((e, t) => { for (let o in t) o in e || (e[o] = t[o]) })(We.prototype, { pointerX: 0, pointerY: 0, startX: 0, startY: 0, deltaX: 0, deltaY: 0, isDragging: !1, isPressed: !1 }), We.zIndex = 1e3, We.version = "3.12.5", V() && b.registerPlugin(We); let Ge, Ve, qe, je, Ke, Ze, Ue, $e, Je, Qe, et, tt, ot, it, nt, lt = !0, st = 0, rt = () => "undefined" != typeof window, at = () => Ge || rt() && (Ge = window.gsap) && Ge.registerPlugin && Ge, dt = e => "string" == typeof e, ct = e => void 0 === e, pt = function () { return String.fromCharCode.apply(null, arguments) }, gt = pt(103, 114, 101, 101, 110, 115, 111, 99, 107, 46, 99, 111, 109), ht = pt(103, 115, 97, 112, 46, 99, 111, 109), ut = /^(?:[0-9]{1,3}\.){3}[0-9]{1,3}:?\d*$/, mt = (function (e) { var t = "undefined" != typeof window, o = 0 === (t ? window.location.href : "").indexOf(pt(102, 105, 108, 101, 58, 47, 47)) || -1 !== e.indexOf(pt(108, 111, 99, 97, 108, 104, 111, 115, 116)) || ut.test(e) || (t ? window.location.hostname : "").split(".").pop() === pt(108, 111, 99, 97, 108), i = [gt, ht, pt(99, 111, 100, 101, 112, 101, 110, 46, 105, 111), pt(99, 111, 100, 101, 112, 101, 110, 46, 112, 108, 117, 109, 98, 105, 110, 103), pt(99, 111, 100, 101, 112, 101, 110, 46, 100, 101, 118), pt(99, 111, 100, 101, 112, 101, 110, 46, 97, 112, 112), pt(99, 111, 100, 101, 112, 101, 110, 46, 119, 101, 98, 115, 105, 116, 101), pt(112, 101, 110, 115, 46, 99, 108, 111, 117, 100), pt(99, 115, 115, 45, 116, 114, 105, 99, 107, 115, 46, 99, 111, 109), pt(99, 100, 112, 110, 46, 105, 111), pt(112, 101, 110, 115, 46, 105, 111), pt(103, 97, 110, 110, 111, 110, 46, 116, 118), pt(99, 111, 100, 101, 99, 97, 110, 121, 111, 110, 46, 110, 101, 116), pt(116, 104, 101, 109, 101, 102, 111, 114, 101, 115, 116, 46, 110, 101, 116), pt(99, 101, 114, 101, 98, 114, 97, 120, 46, 99, 111, 46, 117, 107), pt(116, 121, 109, 112, 97, 110, 117, 115, 46, 110, 101, 116), pt(116, 119, 101, 101, 110, 109, 97, 120, 46, 99, 111, 109), pt(112, 108, 110, 107, 114, 46, 99, 111), pt(104, 111, 116, 106, 97, 114, 46, 99, 111, 109), pt(119, 101, 98, 112, 97, 99, 107, 98, 105, 110, 46, 99, 111, 109), pt(97, 114, 99, 104, 105, 118, 101, 46, 111, 114, 103), pt(99, 111, 100, 101, 115, 97, 110, 100, 98, 111, 120, 46, 105, 111), pt(99, 115, 98, 46, 97, 112, 112), pt(115, 116, 97, 99, 107, 98, 108, 105, 116, 122, 46, 99, 111, 109), pt(115, 116, 97, 99, 107, 98, 108, 105, 116, 122, 46, 105, 111), pt(99, 111, 100, 105, 101, 114, 46, 105, 111), pt(109, 111, 116, 105, 111, 110, 116, 114, 105, 99, 107, 115, 46, 99, 111, 109), pt(115, 116, 97, 99, 107, 111, 118, 101, 114, 102, 108, 111, 119, 46, 99, 111, 109), pt(115, 116, 97, 99, 107, 101, 120, 99, 104, 97, 110, 103, 101, 46, 99, 111, 109), pt(115, 116, 117, 100, 105, 111, 102, 114, 101, 105, 103, 104, 116, 46, 99, 111, 109), pt(119, 101, 98, 99, 111, 110, 116, 97, 105, 110, 101, 114, 46, 105, 111), pt(106, 115, 102, 105, 100, 100, 108, 101, 46, 110, 101, 116)], n = function () { if (t) if ("loading" === document.readyState || "interactive" === document.readyState) document.addEventListener("readystatechange", n); else { document.removeEventListener("readystatechange", n); var e = "object" == typeof Ge ? Ge : t && window.gsap; t && window.console && !window._gsapWarned && "object" == typeof e && !1 !== e.config().trialWarn && (console.log(pt(37, 99, 87, 97, 114, 110, 105, 110, 103), pt(102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 51, 48, 112, 120, 59, 99, 111, 108, 111, 114, 58, 114, 101, 100, 59)), console.log(pt(65, 32, 116, 114, 105, 97, 108, 32, 118, 101, 114, 115, 105, 111, 110, 32, 111, 102, 32) + "GSDevTools" + pt(32, 105, 115, 32, 108, 111, 97, 100, 101, 100, 32, 116, 104, 97, 116, 32, 111, 110, 108, 121, 32, 119, 111, 114, 107, 115, 32, 108, 111, 99, 97, 108, 108, 121, 32, 97, 110, 100, 32, 111, 110, 32, 100, 111, 109, 97, 105, 110, 115, 32, 108, 105, 107, 101, 32, 99, 111, 100, 101, 112, 101, 110, 46, 105, 111, 32, 97, 110, 100, 32, 99, 111, 100, 101, 115, 97, 110, 100, 98, 111, 120, 46, 105, 111, 46, 32, 42, 42, 42, 32, 68, 79, 32, 78, 79, 84, 32, 68, 69, 80, 76, 79, 89, 32, 84, 72, 73, 83, 32, 70, 73, 76, 69, 32, 42, 42, 42, 32, 76, 111, 97, 100, 105, 110, 103, 32, 105, 116, 32, 111, 110, 32, 97, 110, 32, 117, 110, 97, 117, 116, 104, 111, 114, 105, 122, 101, 100, 32, 115, 105, 116, 101, 32, 118, 105, 111, 108, 97, 116, 101, 115, 32, 116, 104, 101, 32, 108, 105, 99, 101, 110, 115, 101, 32, 97, 110, 100, 32, 119, 105, 108, 108, 32, 99, 97, 117, 115, 101, 32, 97, 32, 114, 101, 100, 105, 114, 101, 99, 116, 46, 32, 80, 108, 101, 97, 115, 101, 32, 106, 111, 105, 110, 32, 67, 108, 117, 98, 32, 71, 114, 101, 101, 110, 83, 111, 99, 107, 32, 116, 111, 32, 103, 101, 116, 32, 102, 117, 108, 108, 32, 97, 99, 99, 101, 115, 115, 32, 116, 111, 32, 116, 104, 101, 32, 98, 111, 110, 117, 115, 32, 112, 108, 117, 103, 105, 110, 115, 32, 116, 104, 97, 116, 32, 98, 111, 111, 115, 116, 32, 121, 111, 117, 114, 32, 97, 110, 105, 109, 97, 116, 105, 111, 110, 32, 115, 117, 112, 101, 114, 112, 111, 119, 101, 114, 115, 46, 32, 68, 105, 115, 97, 98, 108, 101, 32, 116, 104, 105, 115, 32, 119, 97, 114, 110, 105, 110, 103, 32, 119, 105, 116, 104, 32, 103, 115, 97, 112, 46, 99, 111, 110, 102, 105, 103, 40, 123, 116, 114, 105, 97, 108, 87, 97, 114, 110, 58, 32, 102, 97, 108, 115, 101, 125, 41, 59)), console.log(pt(37, 99, 71, 101, 116, 32, 117, 110, 114, 101, 115, 116, 114, 105, 99, 116, 101, 100, 32, 102, 105, 108, 101, 115, 32, 97, 116, 32, 104, 116, 116, 112, 115, 58, 47, 47, 103, 114, 101, 101, 110, 115, 111, 99, 107, 46, 99, 111, 109, 47, 99, 108, 117, 98), pt(102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 49, 54, 112, 120, 59, 99, 111, 108, 111, 114, 58, 35, 52, 101, 57, 56, 49, 53)), window._gsapWarned = 1) } }, l = i.length; for (setTimeout(n, 50); --l > -1;)if (-1 !== e.indexOf(i[l])) return !0; o || setTimeout((function () { t && (window.location.href = pt(104, 116, 116, 112, 115, 58, 47, 47) + gt + pt(47, 114, 101, 113, 117, 105, 114, 101, 115, 45, 109, 101, 109, 98, 101, 114, 115, 104, 105, 112, 47) + "?plugin=GSDevTools&source=trial") }), 4e3) }("undefined" != typeof window ? window.location.host : ""), "http://www.w3.org/2000/svg"), ft = "http://www.w3.org/1999/xhtml", xt = 0, vt = {}, yt = function () { try { return sessionStorage.setItem("gsTest", "1"), sessionStorage.removeItem("gsTest"), !0 } catch (e) { return !1 } }(), wt = (e, t, o) => { let i = qe.createElementNS ? qe.createElementNS("svg" === e ? mt : ft, e) : qe.createElement(e); return t && (dt(t) && (t = qe.querySelector(t)), t.appendChild(i)), "svg" === e && (i.setAttribute("xmlns", mt), i.setAttribute("xmlns:xlink", ft)), o && (i.style.cssText = o), i }, bt = () => { qe.selection ? qe.selection.empty() : Ke.getSelection && Ke.getSelection().removeAllRanges() }, Tt = (e, t) => { let o = [], i = 0, n = Ge.core.Tween, l = e._first; for (; l;)l instanceof n ? l.vars.id && (o[i++] = l) : (t && l.vars.id && (o[i++] = l), o = o.concat(Tt(l, t)), i = o.length), l = l._next; return o }, kt = (e, t) => { let o = 0, i = Math.max(0, e._repeat), n = e._first; for (n || (o = e.duration()); n;)o = Math.max(o, n.totalDuration() > 999 ? n.endTime(!1) : n._start + n._tDur / n._ts), n = n._next; return !t && i ? o * (i + 1) + e._rDelay * i : o }, _t = (e, t, o, i) => { let n, l, s; return dt(e) && ("=" === e.charAt(1) ? (n = parseInt(e.charAt(0) + "1", 10) * parseFloat(e.substr(2)), n < 0 && 0 === i && (i = 100), e = i / 100 * t.duration() + n) : isNaN(e) && t.labels && -1 !== t.labels[e] ? e = t.labels[e] : t === Ze && (l = e.indexOf("="), l > 0 ? (n = parseInt(e.charAt(l - 1) + "1", 10) * parseFloat(e.substr(l + 1)), e = e.substr(0, l - 1)) : n = 0, s = Ge.getById(e), s && (e = function (e, t) { let o = e, i = arguments.length > 1 ? +t : o.rawTime(); for (; o;)i = o._start + i / (o._ts || 1), o = o.parent; return i }(s, o / 100 * s.duration()) + n))), e = isNaN(e) ? o : parseFloat(e), Math.min(100, Math.max(0, e / t.duration() * 100)) }, Mt = !0, St = (e, t, o, i) => { let n, l; if ("mousedown" !== t && "mouseup" !== t || (e.style.cursor = "pointer"), "mousedown" === t && (l = ct(e.onpointerdown) ? ct(e.ontouchstart) ? null : "touchstart" : "pointerdown", l)) return n = t => { "select" !== t.target.nodeName.toLowerCase() && t.type === l ? (t.stopPropagation(), Mt && (t.preventDefault(), o.call(e, t))) : t.type !== l && o.call(e, t), Mt = !0 }, e.addEventListener(l, n, i), void ("pointerdown" !== l && e.addEventListener(t, n, i)); e.addEventListener(t, o, i) }, Dt = (e, t, o) => { e.removeEventListener(t, o), (t = "mousedown" !== t ? null : ct(e.onpointerdown) ? ct(e.ontouchstart) ? null : "touchstart" : "pointerdown") && e.removeEventListener(t, o) }, Ct = (e, t, o, i) => { let n, l = e.options, s = l.length; for (t += ""; --s > -1;)if (l[s].innerHTML === t || l[s].value === t) return e.selectedIndex = s