var ctf_js_exists = (typeof ctf_js_exists !== 'undefined') ? true : false;
if(!ctf_js_exists){

    (function ($) {

        window.ctf_init = function() {

            if ($('.ctf').length <= $('.ctf_is_initialized').length) {
                return;
            }

            var ctfIntentsIncluded = false;
            $('.ctf').each(function () {
                if (!$(this).hasClass('ctf_is_initialized') && !ctfIntentsIncluded && typeof $(this).attr('data-ctfintents') !== 'undefined') {
                    ctfIntentsIncluded = true;
                    Function && Function.prototype && Function.prototype.bind && (/MSIE ([6789]|10)/.test(navigator.userAgent) || (window.__twttr && window.__twttr.widgets && window.__twttr.widgets.loaded && window.twttr.widgets.load && window.twttr.widgets.load(), window.__twttr && window.__twttr.widgets && window.__twttr.widgets.init || function (t) {
                        function e(e) {
                            for (var n, i, o = e[0], s = e[1], a = 0, c = []; a < o.length; a++) i = o[a], r[i] && c.push(r[i][0]), r[i] = 0;
                            for (n in s) Object.prototype.hasOwnProperty.call(s, n) && (t[n] = s[n]);
                            for (u && u(e); c.length;) c.shift()()
                        }

                        var n = {}, r = {1: 0};

                        function i(e) {
                            if (n[e]) return n[e].exports;
                            var r = n[e] = {i: e, l: !1, exports: {}};
                            return t[e].call(r.exports, r, r.exports, i), r.l = !0, r.exports
                        }

                        i.e = function (t) {
                            var e = [], n = r[t];
                            if (0 !== n) if (n) e.push(n[2]); else {
                                var o = new Promise(function (e, i) {
                                    n = r[t] = [e, i]
                                });
                                e.push(n[2] = o);
                                var s, a = document.getElementsByTagName("head")[0],
                                    u = document.createElement("script");
                                u.charset = "utf-8", u.timeout = 120, i.nc && u.setAttribute("nonce", i.nc), u.src = function (t) {
                                    return i.p + "js/" + ({
                                        0: "moment~timeline~tweet",
                                        2: "dm_button",
                                        3: "button",
                                        4: "moment",
                                        5: "periscope_on_air",
                                        6: "timeline",
                                        7: "tweet"
                                    }[t] || t) + "." + {
                                        0: "ec04a6cb5ba879d0e0db41f211639fdf",
                                        2: "6542a7407a2eccac51f5c5e0fac5bb80",
                                        3: "d941c9a422e2e3faf474b82a1f39e936",
                                        4: "0a3cc02317b85399478995c763a1296c",
                                        5: "d26526abe761c4d8d8d71cf0ec565649",
                                        6: "0a7b4db67eacd23e35c5ce02e6ea3470",
                                        7: "b2d749028be81f16d9cb4994d9692feb"
                                    }[t] + ".js"
                                }(t), s = function (e) {
                                    u.onerror = u.onload = null, clearTimeout(c);
                                    var n = r[t];
                                    if (0 !== n) {
                                        if (n) {
                                            var i = e && ("load" === e.type ? "missing" : e.type),
                                                o = e && e.target && e.target.src,
                                                s = new Error("Loading chunk " + t + " failed.\n(" + i + ": " + o + ")");
                                            s.type = i, s.request = o, n[1](s)
                                        }
                                        r[t] = void 0
                                    }
                                };
                                var c = setTimeout(function () {
                                    s({type: "timeout", target: u})
                                }, 12e4);
                                u.onerror = u.onload = s, a.appendChild(u)
                            }
                            return Promise.all(e)
                        }, i.m = t, i.c = n, i.d = function (t, e, n) {
                            i.o(t, e) || Object.defineProperty(t, e, {enumerable: !0, get: n})
                        }, i.r = function (t) {
                            "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {value: "Module"}), Object.defineProperty(t, "__esModule", {value: !0})
                        }, i.t = function (t, e) {
                            if (1 & e && (t = i(t)), 8 & e) return t;
                            if (4 & e && "object" == typeof t && t && t.__esModule) return t;
                            var n = Object.create(null);
                            if (i.r(n), Object.defineProperty(n, "default", {
                                enumerable: !0,
                                value: t
                            }), 2 & e && "string" != typeof t) for (var r in t) i.d(n, r, function (e) {
                                return t[e]
                            }.bind(null, r));
                            return n
                        }, i.n = function (t) {
                            var e = t && t.__esModule ? function () {
                                return t.default
                            } : function () {
                                return t
                            };
                            return i.d(e, "a", e), e
                        }, i.o = function (t, e) {
                            return Object.prototype.hasOwnProperty.call(t, e)
                        }, i.p = "https://platform.twitter.com/", i.oe = function (t) {
                            throw console.error(t), t
                        };
                        var o = window.__twttrll = window.__twttrll || [], s = o.push.bind(o);
                        o.push = e, o = o.slice();
                        for (var a = 0; a < o.length; a++) e(o[a]);
                        var u = s;
                        i(i.s = 94)
                    }([function (t, e, n) {
                        var r = n(1);

                        function i(t, e) {
                            var n;
                            for (n in t) t.hasOwnProperty && !t.hasOwnProperty(n) || e(n, t[n]);
                            return t
                        }

                        function o(t) {
                            return {}.toString.call(t).match(/\s([a-zA-Z]+)/)[1].toLowerCase()
                        }

                        function s(t) {
                            return t === Object(t)
                        }

                        function a(t) {
                            var e;
                            if (!s(t)) return !1;
                            if (Object.keys) return !Object.keys(t).length;
                            for (e in t) if (t.hasOwnProperty(e)) return !1;
                            return !0
                        }

                        function u(t) {
                            return t ? Array.prototype.slice.call(t) : []
                        }

                        t.exports = {
                            aug: function (t) {
                                return u(arguments).slice(1).forEach(function (e) {
                                    i(e, function (e, n) {
                                        t[e] = n
                                    })
                                }), t
                            }, async: function (t, e) {
                                r.setTimeout(function () {
                                    t.call(e || null)
                                }, 0)
                            }, compact: function t(e) {
                                return i(e, function (n, r) {
                                    s(r) && (t(r), a(r) && delete e[n]), void 0 !== r && null !== r && "" !== r || delete e[n]
                                }), e
                            }, contains: function (t, e) {
                                return !(!t || !t.indexOf) && t.indexOf(e) > -1
                            }, forIn: i, isObject: s, isEmptyObject: a, toType: o, isType: function (t, e) {
                                return t == o(e)
                            }, toRealArray: u
                        }
                    }, function (t, e) {
                        t.exports = window
                    }, function (t, e, n) {
                        var r = n(6);
                        t.exports = function () {
                            var t = this;
                            this.promise = new r(function (e, n) {
                                t.resolve = e, t.reject = n
                            })
                        }
                    }, function (t, e, n) {
                        var r = n(11),
                            i = /(?:^|(?:https?:)?\/\/(?:www\.)?twitter\.com(?::\d+)?(?:\/intent\/(?:follow|user)\/?\?screen_name=|(?:\/#!)?\/))@?([\w]+)(?:\?|&|$)/i,
                            o = /(?:^|(?:https?:)?\/\/(?:www\.)?twitter\.com(?::\d+)?\/(?:#!\/)?[\w_]+\/status(?:es)?\/)(\d+)/i,
                            s = /^http(s?):\/\/(\w+\.)*twitter\.com([:/]|$)/i, a = /^http(s?):\/\/pbs\.twimg\.com\//,
                            u = /^#?([^.,<>!\s/#\-()'"]+)$/, c = /twitter\.com(?::\d{2,4})?\/intent\/(\w+)/,
                            d = /^https?:\/\/(?:www\.)?twitter\.com\/\w+\/timelines\/(\d+)/i,
                            l = /^https?:\/\/(?:www\.)?twitter\.com\/i\/moments\/(\d+)/i,
                            f = /^https?:\/\/(?:www\.)?twitter\.com\/(\w+)\/(?:likes|favorites)/i,
                            h = /^https?:\/\/(?:www\.)?twitter\.com\/(\w+)\/lists\/([\w-%]+)/i,
                            p = /^https?:\/\/(?:www\.)?twitter\.com\/i\/live\/(\d+)/i,
                            m = /^https?:\/\/syndication\.twitter\.com\/settings/i,
                            v = /^https?:\/\/(localhost|platform)\.twitter\.com(?::\d+)?\/widgets\/widget_iframe\.(.+)/i,
                            g = /^https?:\/\/(?:www\.)?twitter\.com\/search\?q=(\w+)/i;

                        function w(t) {
                            return "string" == typeof t && i.test(t) && RegExp.$1.length <= 20
                        }

                        function y(t) {
                            if (w(t)) return RegExp.$1
                        }

                        function b(t, e) {
                            var n = r.decodeURL(t);
                            if (e = e || !1, n.screen_name = y(t), n.screen_name) return r.url("https://twitter.com/intent/" + (e ? "follow" : "user"), n)
                        }

                        function _(t) {
                            return "string" == typeof t && u.test(t)
                        }

                        function E(t) {
                            return "string" == typeof t && o.test(t)
                        }

                        t.exports = {
                            isHashTag: _, hashTag: function (t, e) {
                                if (e = void 0 === e || e, _(t)) return (e ? "#" : "") + RegExp.$1
                            }, isScreenName: w, screenName: y, isStatus: E, status: function (t) {
                                return E(t) && RegExp.$1
                            }, intentForProfileURL: b, intentForFollowURL: function (t) {
                                return b(t, !0)
                            }, isTwitterURL: function (t) {
                                return s.test(t)
                            }, isTwimgURL: function (t) {
                                return a.test(t)
                            }, isIntentURL: function (t) {
                                return c.test(t)
                            }, isSettingsURL: function (t) {
                                return m.test(t)
                            }, isWidgetIframeURL: function (t) {
                                return v.test(t)
                            }, isSearchUrl: function (t) {
                                return g.test(t)
                            }, regexen: {profile: i}, momentId: function (t) {
                                return l.test(t) && RegExp.$1
                            }, collectionId: function (t) {
                                return d.test(t) && RegExp.$1
                            }, intentType: function (t) {
                                return c.test(t) && RegExp.$1
                            }, likesScreenName: function (t) {
                                return f.test(t) && RegExp.$1
                            }, listScreenNameAndSlug: function (t) {
                                var e, n, r;
                                if (h.test(t)) {
                                    e = RegExp.$1, n = RegExp.$2;
                                    try {
                                        r = decodeURIComponent(n)
                                    } catch (t) {
                                    }
                                    return {ownerScreenName: e, slug: r || n}
                                }
                                return !1
                            }, eventId: function (t) {
                                return p.test(t) && RegExp.$1
                            }
                        }
                    }, function (t, e) {
                        t.exports = document
                    }, function (t, e, n) {
                        var r = n(0), i = [!0, 1, "1", "on", "ON", "true", "TRUE", "yes", "YES"],
                            o = [!1, 0, "0", "off", "OFF", "false", "FALSE", "no", "NO"];

                        function s(t) {
                            return void 0 !== t && null !== t && "" !== t
                        }

                        function a(t) {
                            return c(t) && t % 1 == 0
                        }

                        function u(t) {
                            return c(t) && !a(t)
                        }

                        function c(t) {
                            return s(t) && !isNaN(t)
                        }

                        function d(t) {
                            return r.contains(o, t)
                        }

                        function l(t) {
                            return r.contains(i, t)
                        }

                        t.exports = {
                            hasValue: s, isInt: a, isFloat: u, isNumber: c, isString: function (t) {
                                return "string" === r.toType(t)
                            }, isArray: function (t) {
                                return s(t) && "array" == r.toType(t)
                            }, isTruthValue: l, isFalseValue: d, asInt: function (t) {
                                if (a(t)) return parseInt(t, 10)
                            }, asFloat: function (t) {
                                if (u(t)) return t
                            }, asNumber: function (t) {
                                if (c(t)) return t
                            }, asBoolean: function (t) {
                                return !(!s(t) || !l(t) && (d(t) || !t))
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(1), i = n(21), o = n(48);
                        i.hasPromiseSupport() || (r.Promise = o), t.exports = r.Promise
                    }, function (t, e, n) {
                        var r = n(0);
                        t.exports = function (t, e) {
                            var n = Array.prototype.slice.call(arguments, 2);
                            return function () {
                                var i = r.toRealArray(arguments);
                                return t.apply(e, n.concat(i))
                            }
                        }
                    }, function (t, e) {
                        t.exports = location
                    }, function (t, e, n) {
                        var r = n(50);
                        t.exports = new r("__twttr")
                    }, function (t, e, n) {
                        var r = n(0), i = /\b([\w-_]+)\b/g;

                        function o(t) {
                            return new RegExp("\\b" + t + "\\b", "g")
                        }

                        function s(t, e) {
                            t.classList ? t.classList.add(e) : o(e).test(t.className) || (t.className += " " + e)
                        }

                        function a(t, e) {
                            t.classList ? t.classList.remove(e) : t.className = t.className.replace(o(e), " ")
                        }

                        function u(t, e) {
                            return t.classList ? t.classList.contains(e) : r.contains(c(t), e)
                        }

                        function c(t) {
                            return r.toRealArray(t.classList ? t.classList : t.className.match(i))
                        }

                        t.exports = {
                            add: s, remove: a, replace: function (t, e, n) {
                                if (t.classList && u(t, e)) return a(t, e), void s(t, n);
                                t.className = t.className.replace(o(e), n)
                            }, toggle: function (t, e, n) {
                                return void 0 === n && t.classList && t.classList.toggle ? t.classList.toggle(e, n) : (n ? s(t, e) : a(t, e), n)
                            }, present: u, list: c
                        }
                    }, function (t, e, n) {
                        var r = n(5), i = n(0);

                        function o(t) {
                            return encodeURIComponent(t).replace(/\+/g, "%2B").replace(/'/g, "%27")
                        }

                        function s(t) {
                            return decodeURIComponent(t)
                        }

                        function a(t) {
                            var e = [];
                            return i.forIn(t, function (t, n) {
                                var s = o(t);
                                i.isType("array", n) || (n = [n]), n.forEach(function (t) {
                                    r.hasValue(t) && e.push(s + "=" + o(t))
                                })
                            }), e.sort().join("&")
                        }

                        function u(t) {
                            var e = {};
                            return t ? (t.split("&").forEach(function (t) {
                                var n = t.split("="), r = s(n[0]), o = s(n[1]);
                                if (2 == n.length) {
                                    if (!i.isType("array", e[r])) return r in e ? (e[r] = [e[r]], void e[r].push(o)) : void (e[r] = o);
                                    e[r].push(o)
                                }
                            }), e) : {}
                        }

                        t.exports = {
                            url: function (t, e) {
                                return a(e).length > 0 ? i.contains(t, "?") ? t + "&" + a(e) : t + "?" + a(e) : t
                            }, decodeURL: function (t) {
                                var e = t && t.split("?");
                                return 2 == e.length ? u(e[1]) : {}
                            }, decode: u, encode: a, encodePart: o, decodePart: s
                        }
                    }, function (t, e, n) {
                        var r = n(8), i = n(1), o = n(0), s = {}, a = o.contains(r.href, "tw_debug=true");

                        function u() {
                        }

                        function c() {
                        }

                        function d() {
                            return i.performance && +i.performance.now() || +new Date
                        }

                        function l(t, e) {
                            if (i.console && i.console[t]) switch (e.length) {
                                case 1:
                                    i.console[t](e[0]);
                                    break;
                                case 2:
                                    i.console[t](e[0], e[1]);
                                    break;
                                case 3:
                                    i.console[t](e[0], e[1], e[2]);
                                    break;
                                case 4:
                                    i.console[t](e[0], e[1], e[2], e[3]);
                                    break;
                                case 5:
                                    i.console[t](e[0], e[1], e[2], e[3], e[4]);
                                    break;
                                default:
                                    0 !== e.length && i.console.warn && i.console.warn("too many params passed to logger." + t)
                            }
                        }

                        t.exports = {
                            devError: u, devInfo: c, devObject: function (t, e) {
                            }, publicError: function () {
                                l("error", o.toRealArray(arguments))
                            }, publicLog: function () {
                                l("info", o.toRealArray(arguments))
                            }, time: function (t) {
                                a && (s[t] = d())
                            }, timeEnd: function (t) {
                                a && s[t] && (d(), s[t])
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(20), i = n(5), o = n(11), s = n(0), a = n(119);
                        t.exports = function (t) {
                            var e = t.href && t.href.split("?")[1], n = e ? o.decode(e) : {}, u = {
                                lang: a(t),
                                width: t.getAttribute("data-width") || t.getAttribute("width"),
                                height: t.getAttribute("data-height") || t.getAttribute("height"),
                                related: t.getAttribute("data-related"),
                                partner: t.getAttribute("data-partner")
                            };
                            return i.asBoolean(t.getAttribute("data-dnt")) && r.setOn(), s.forIn(u, function (t, e) {
                                var r = n[t];
                                n[t] = i.hasValue(r) ? r : e
                            }), s.compact(n)
                        }
                    }, function (t, e, n) {
                        var r = n(81), i = n(23);
                        t.exports = function () {
                            var t = "data-twitter-extracted-" + i.generate();
                            return function (e, n) {
                                return r(e, n).filter(function (e) {
                                    return !e.hasAttribute(t)
                                }).map(function (e) {
                                    return e.setAttribute(t, "true"), e
                                })
                            }
                        }
                    }, function (t, e) {
                        function n(t, e, n, r, i, o, s) {
                            this.factory = t, this.Sandbox = e, this.srcEl = o, this.targetEl = i, this.parameters = r, this.className = n, this.options = s
                        }

                        n.prototype.destroy = function () {
                            this.srcEl = this.targetEl = null
                        }, t.exports = n
                    }, function (t, e) {
                        t.exports = {
                            DM_BUTTON: "twitter-dm-button",
                            FOLLOW_BUTTON: "twitter-follow-button",
                            HASHTAG_BUTTON: "twitter-hashtag-button",
                            MENTION_BUTTON: "twitter-mention-button",
                            MOMENT: "twitter-moment",
                            PERISCOPE: "periscope-on-air",
                            SHARE_BUTTON: "twitter-share-button",
                            TIMELINE: "twitter-timeline",
                            TWEET: "twitter-tweet"
                        }
                    }, function (t, e, n) {
                        var r = n(6), i = n(20), o = n(53), s = n(52), a = n(35), u = n(5), c = n(0);
                        t.exports = function (t, e, n) {
                            var d;
                            return t = t || [], e = e || {}, d = "ƒ(" + t.join(", ") + ", target, [options]);", function () {
                                var l, f, h, p, m = Array.prototype.slice.apply(arguments, [0, t.length]),
                                    v = Array.prototype.slice.apply(arguments, [t.length]);
                                return v.forEach(function (t) {
                                    t && (t.nodeType !== Node.ELEMENT_NODE ? c.isType("function", t) ? l = t : c.isType("object", t) && (f = t) : h = t)
                                }), m.length !== t.length || 0 === v.length ? (l && c.async(function () {
                                    l(!1)
                                }), r.reject(new Error("Not enough parameters. Expected: " + d))) : h ? (f = c.aug({}, f || {}, e), t.forEach(function (t) {
                                    f[t] = m.shift()
                                }), u.asBoolean(f.dnt) && i.setOn(), p = a.getExperiments().then(function (t) {
                                    return o.addWidget(n(f, h, void 0, s.isHorizonTweetEnabled(t)))
                                }), l && p.then(l, function () {
                                    l(!1)
                                }), p) : (l && c.async(function () {
                                    l(!1)
                                }), r.reject(new Error("No target element specified. Expected: " + d)))
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(102), i = n(2), o = n(0);

                        function s(t, e) {
                            return function () {
                                try {
                                    e.resolve(t.call(this))
                                } catch (t) {
                                    e.reject(t)
                                }
                            }
                        }

                        t.exports = {
                            sync: function (t, e) {
                                t.call(e)
                            }, read: function (t, e) {
                                var n = new i;
                                return r.read(s(t, n), e), n.promise
                            }, write: function (t, e) {
                                var n = new i;
                                return r.write(s(t, n), e), n.promise
                            }, defer: function (t, e, n) {
                                var a = new i;
                                return o.isType("function", t) && (n = e, e = t, t = 1), r.defer(t, s(e, a), n), a.promise
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(9),
                            i = ["https://syndication.twitter.com", "https://cdn.syndication.twimg.com", "https://localhost.twitter.com:8444"],
                            o = ["https://syndication.twitter.com", "https://localhost.twitter.com:8445"],
                            s = ["https://platform.twitter.com/embed/index.html", "https://localhost.twitter.com:8080", /https:\/\/ton\.smf1\.twitter\.com\/syndication-internal\/embed-iframe\/[0-9A-Za-z_-]+\/app\/index\.html/],
                            a = function (t, e) {
                                return t.some(function (t) {
                                    return t instanceof RegExp ? t.test(e) : t === e
                                })
                            }, u = function () {
                                var t = r.get("backendHost");
                                return t && a(i, t) ? t : "https://cdn.syndication.twimg.com"
                            }, c = function () {
                                var t = r.get("settingsSvcHost");
                                return t && a(o, t) ? t : "https://syndication.twitter.com"
                            }, d = function () {
                                var t = r.get("embedIframeURL");
                                return t && a(s, t) ? t : "https://platform.twitter.com/embed/index.html"
                            };

                        function l(t, e) {
                            var n = [t];
                            return e.forEach(function (t) {
                                n.push(function (t) {
                                    var e = (t || "").toString(), n = "/" === e.slice(0, 1) ? 1 : 0, r = function (t) {
                                        return "/" === t.slice(-1)
                                    }(e) ? -1 : void 0;
                                    return e.slice(n, r)
                                }(t))
                            }), n.join("/")
                        }

                        t.exports = {
                            cookieConsent: function (t) {
                                var e = t || [];
                                return e.unshift("cookie/consent"), l(c(), e)
                            }, embedIframe: function () {
                                return d()
                            }, eventVideo: function (t) {
                                var e = t || [];
                                return e.unshift("video/event"), l(u(), e)
                            }, grid: function (t) {
                                var e = t || [];
                                return e.unshift("grid/collection"), l(u(), e)
                            }, moment: function (t) {
                                var e = t || [];
                                return e.unshift("moments"), l(u(), e)
                            }, settings: function (t) {
                                var e = t || [];
                                return e.unshift("settings"), l(c(), e)
                            }, timeline: function (t) {
                                var e = t || [];
                                return e.unshift("timeline"), l(u(), e)
                            }, tweetBatch: function (t) {
                                var e = t || [];
                                return e.unshift("tweets.json"), l(u(), e)
                            }, video: function (t) {
                                var e = t || [];
                                return e.unshift("widgets/video"), l(u(), e)
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(4), i = n(8), o = n(38), s = n(79), a = n(5), u = n(33), c = !1,
                            d = /https?:\/\/([^/]+).*/i;
                        t.exports = {
                            setOn: function () {
                                c = !0
                            }, enabled: function (t, e) {
                                return !!(c || a.asBoolean(u.val("dnt")) || s.isUrlSensitive(e || i.host) || o.isFramed() && s.isUrlSensitive(o.rootDocumentLocation()) || (t = d.test(t || r.referrer) && RegExp.$1) && s.isUrlSensitive(t))
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(4), i = n(12), o = n(95), s = n(1), a = n(0), u = o.userAgent;

                        function c(t) {
                            return /(Trident|MSIE|Edge[/ ]?\d)/.test(t = t || u)
                        }

                        t.exports = {
                            retina: function (t) {
                                return (t = t || s).devicePixelRatio ? t.devicePixelRatio >= 1.5 : !!t.matchMedia && t.matchMedia("only screen and (min-resolution: 144dpi)").matches
                            }, anyIE: c, ie9: function (t) {
                                return /MSIE 9/.test(t = t || u)
                            }, ie10: function (t) {
                                return /MSIE 10/.test(t = t || u)
                            }, ios: function (t) {
                                return /(iPad|iPhone|iPod)/.test(t = t || u)
                            }, android: function (t) {
                                return /^Mozilla\/5\.0 \(Linux; (U; )?Android/.test(t = t || u)
                            }, canPostMessage: function (t, e) {
                                return t = t || s, e = e || u, t.postMessage && !(c(e) && t.opener)
                            }, touch: function (t, e, n) {
                                return t = t || s, e = e || o, n = n || u, "ontouchstart" in t || /Opera Mini/.test(n) || e.msMaxTouchPoints > 0
                            }, cssTransitions: function () {
                                var t = r.body.style;
                                return void 0 !== t.transition || void 0 !== t.webkitTransition || void 0 !== t.mozTransition || void 0 !== t.oTransition || void 0 !== t.msTransition
                            }, hasPromiseSupport: function () {
                                return !!(s.Promise && s.Promise.resolve && s.Promise.reject && s.Promise.all && s.Promise.race && (new s.Promise(function (e) {
                                    t = e
                                }), a.isType("function", t)));
                                var t
                            }, hasIntersectionObserverSupport: function () {
                                return !!s.IntersectionObserver
                            }, hasPerformanceInformation: function () {
                                return s.performance && s.performance.getEntriesByType
                            }, hasLocalStorageSupport: function () {
                                try {
                                    return s.localStorage.setItem("local_storage_support_test", "true"), void 0 !== s.localStorage
                                } catch (t) {
                                    return i.devError("window.localStorage is not supported:", t), !1
                                }
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(6), i = n(2);

                        function o(t, e) {
                            return t.then(e, e)
                        }

                        function s(t) {
                            return t instanceof r
                        }

                        t.exports = {
                            always: o, allResolved: function (t) {
                                var e;
                                return void 0 === t ? r.reject(new Error("undefined is not an object")) : Array.isArray(t) ? (e = t.length) ? new r(function (n, r) {
                                    var i = 0, o = [];

                                    function a() {
                                        (i += 1) === e && (0 === o.length ? r() : n(o))
                                    }

                                    function u(t) {
                                        o.push(t), a()
                                    }

                                    t.forEach(function (t) {
                                        s(t) ? t.then(u, a) : u(t)
                                    })
                                }) : r.resolve([]) : r.reject(new Error("Type error"))
                            }, some: function (t) {
                                var e;
                                return e = (t = t || []).length, t = t.filter(s), e ? e !== t.length ? r.reject("non-Promise passed to .some") : new r(function (e, n) {
                                    var r = 0;

                                    function i() {
                                        (r += 1) === t.length && n()
                                    }

                                    t.forEach(function (t) {
                                        t.then(e, i)
                                    })
                                }) : r.reject("no promises passed to .some")
                            }, isPromise: s, allSettled: function (t) {
                                function e() {
                                }

                                return r.all((t || []).map(function (t) {
                                    return o(t, e)
                                }))
                            }, timeout: function (t, e) {
                                var n = new i;
                                return setTimeout(function () {
                                    n.reject(new Error("Promise timed out"))
                                }, e), t.then(function (t) {
                                    n.resolve(t)
                                }, function (t) {
                                    n.reject(t)
                                }), n.promise
                            }
                        }
                    }, function (t, e) {
                        var n = "i", r = 0, i = 0;
                        t.exports = {
                            generate: function () {
                                return n + String(+new Date) + Math.floor(1e5 * Math.random()) + r++
                            }, deterministic: function () {
                                return n + String(i++)
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(49), i = n(51), o = n(0);
                        t.exports = o.aug(r.get("events") || {}, i.Emitter)
                    }, function (t, e, n) {
                        var r = n(26), i = n(110);
                        t.exports = r.build([i])
                    }, function (t, e, n) {
                        var r = n(40), i = n(107), o = n(7);
                        (r = Object.create(r)).build = o(r.build, null, i), t.exports = r
                    }, function (t, e, n) {
                        var r = n(40), i = n(41), o = n(7);
                        (r = Object.create(r)).build = o(r.build, null, i), t.exports = r
                    }, function (t, e, n) {
                        var r = n(83), i = n(75), o = n(84), s = n(8), a = n(71), u = n(74), c = n(20), d = n(5),
                            l = n(23), f = n(0);

                        function h(t) {
                            if (!t || !t.headers) throw new Error("unexpected response schema");
                            return {
                                html: t.body,
                                config: t.config,
                                pollInterval: 1e3 * parseInt(t.headers.xPolling, 10) || null,
                                maxCursorPosition: t.headers.maxPosition,
                                minCursorPosition: t.headers.minPosition
                            }
                        }

                        function p(t) {
                            if (t && t.headers) throw new Error(t.headers.status);
                            throw t instanceof Error ? t : new Error(t)
                        }

                        t.exports = function (t) {
                            t.params({
                                instanceId: {required: !0, fallback: l.deterministic},
                                lang: {required: !0, transform: a.matchLanguage, fallback: "en"},
                                tweetLimit: {transform: d.asInt}
                            }), t.defineProperty("endpoint", {
                                get: function () {
                                    throw new Error("endpoint not specified")
                                }
                            }), t.defineProperty("pollEndpoint", {
                                get: function () {
                                    return this.endpoint
                                }
                            }), t.define("cbId", function (t) {
                                var e = t ? "_new" : "_old";
                                return "tl_" + this.params.instanceId + "_" + this.id + e
                            }), t.define("queryParams", function () {
                                return {
                                    lang: this.params.lang,
                                    tz: u.getTimezoneOffset(),
                                    t: r(),
                                    domain: s.host,
                                    tweet_limit: this.params.tweetLimit,
                                    dnt: c.enabled()
                                }
                            }), t.define("fetch", function () {
                                return i.fetch(this.endpoint, this.queryParams(), o, this.cbId()).then(h, p)
                            }), t.define("poll", function (t, e) {
                                var n, r;
                                return n = {
                                    since_id: (t = t || {}).sinceId,
                                    max_id: t.maxId,
                                    min_position: t.minPosition,
                                    max_position: t.maxPosition
                                }, r = f.aug(this.queryParams(), n), i.fetch(this.pollEndpoint, r, o, this.cbId(e)).then(h, p)
                            })
                        }
                    }, function (t, e, n) {
                        var r = n(51).makeEmitter();
                        t.exports = {
                            emitter: r,
                            START: "start",
                            ALL_WIDGETS_RENDER_START: "all_widgets_render_start",
                            ALL_WIDGETS_RENDER_END: "all_widgets_render_end",
                            ALL_WIDGETS_AND_IMAGES_LOADED: "all_widgets_and_images_loaded"
                        }
                    }, function (t, e, n) {
                        var r = n(4), i = n(0);
                        t.exports = function (t, e, n) {
                            var o;
                            if (n = n || r, t = t || {}, e = e || {}, t.name) {
                                try {
                                    o = n.createElement('<iframe name="' + t.name + '"></iframe>')
                                } catch (e) {
                                    (o = n.createElement("iframe")).name = t.name
                                }
                                delete t.name
                            } else o = n.createElement("iframe");
                            return t.id && (o.id = t.id, delete t.id), o.allowtransparency = "true", o.scrolling = "no", o.setAttribute("frameBorder", 0), o.setAttribute("allowTransparency", !0), i.forIn(t, function (t, e) {
                                o.setAttribute(t, e)
                            }), i.forIn(e, function (t, e) {
                                o.style[t] = e
                            }), o
                        }
                    }, function (t, e, n) {
                        var r = n(1).JSON;
                        t.exports = {stringify: r.stringify || r.encode, parse: r.parse || r.decode}
                    }, function (t, e, n) {
                        var r = n(0), i = n(43);
                        t.exports = {
                            closest: function t(e, n, o) {
                                var s;
                                if (n) return o = o || n && n.ownerDocument, s = r.isType("function", e) ? e : function (t) {
                                    return function (e) {
                                        return !!e.tagName && i(e, t)
                                    }
                                }(e), n === o ? s(n) ? n : void 0 : s(n) ? n : t(s, n.parentNode, o)
                            }
                        }
                    }, function (t, e, n) {
                        var r, i = n(4);

                        function o(t) {
                            var e, n, o, s = 0;
                            for (r = {}, e = (t = t || i).getElementsByTagName("meta"); e[s]; s++) {
                                if (n = e[s], /^twitter:/.test(n.getAttribute("name"))) o = n.getAttribute("name").replace(/^twitter:/, ""); else {
                                    if (!/^twitter:/.test(n.getAttribute("property"))) continue;
                                    o = n.getAttribute("property").replace(/^twitter:/, "")
                                }
                                r[o] = n.getAttribute("content") || n.getAttribute("value")
                            }
                        }

                        o(), t.exports = {
                            init: o, val: function (t) {
                                return r[t]
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(4), i = n(31), o = n(20), s = n(0), a = n(44), u = n(9), c = n(3), d = n(32),
                            l = a.version, f = u.get("clientEventEndpoint") || "https://syndication.twitter.com/i/jot",
                            h = 1;

                        function p(t) {
                            return s.aug({client: "tfw"}, t || {})
                        }

                        function m(t, e, n) {
                            return e = e || {}, s.aug({}, e, {
                                _category_: t,
                                triggered_on: e.triggered_on || +new Date,
                                dnt: o.enabled(n)
                            })
                        }

                        t.exports = {
                            extractTermsFromDOM: function t(e, n) {
                                var r;
                                return n = n || {}, e && e.nodeType === Node.ELEMENT_NODE ? ((r = e.getAttribute("data-scribe")) && r.split(" ").forEach(function (t) {
                                    var e = t.trim().split(":"), r = e[0], i = e[1];
                                    r && i && !n[r] && (n[r] = i)
                                }), t(e.parentNode, n)) : n
                            },
                            clickEventElement: function (t) {
                                var e = d.closest("[data-expanded-url]", t),
                                    n = e && e.getAttribute("data-expanded-url");
                                return n && c.isTwitterURL(n) ? "twitter_url" : "url"
                            },
                            flattenClientEventPayload: function (t, e) {
                                return s.aug({}, e, {event_namespace: t})
                            },
                            formatGenericEventData: m,
                            formatClientEventData: function (t, e, n) {
                                var i = t && t.widget_origin || r.referrer;
                                return (t = m("tfw_client_event", t, i)).client_version = l, t.format_version = void 0 !== n ? n : 1, e || (t.widget_origin = i), t
                            },
                            formatClientEventNamespace: p,
                            formatTweetAssociation: function (t, e) {
                                var n = {};
                                return (e = e || {}).association_namespace = p(t), n[h] = e, n
                            },
                            noticeSeen: function (t) {
                                return "notice" === t.element && "seen" === t.action
                            },
                            splitLogEntry: function (t) {
                                var e, n, r, i, o;
                                return t.item_ids && t.item_ids.length > 1 ? (e = Math.floor(t.item_ids.length / 2), n = t.item_ids.slice(0, e), r = {}, i = t.item_ids.slice(e), o = {}, n.forEach(function (e) {
                                    r[e] = t.item_details[e]
                                }), i.forEach(function (e) {
                                    o[e] = t.item_details[e]
                                }), [s.aug({}, t, {item_ids: n, item_details: r}), s.aug({}, t, {
                                    item_ids: i,
                                    item_details: o
                                })]) : [t]
                            },
                            stringify: function (t) {
                                var e, n = Array.prototype.toJSON;
                                return delete Array.prototype.toJSON, e = i.stringify(t), n && (Array.prototype.toJSON = n), e
                            },
                            AUDIENCE_ENDPOINT: "https://syndication.twitter.com/i/jot/syndication",
                            CLIENT_EVENT_ENDPOINT: f,
                            RUFOUS_REDIRECT: "https://platform.twitter.com/jot.html"
                        }
                    }, function (t, e, n) {
                        var r = n(113), i = n(116);

                        function o(t) {
                            return r.settingsLoaded().then(function (e) {
                                return e[t]
                            })
                        }

                        function s() {
                            return o("experiments")
                        }

                        t.exports = {
                            shouldObtainCookieConsent: function () {
                                return o("shouldObtainCookieConsent")
                            }, getExperiments: s, getExperiment: function (t) {
                                return s().then(function (e) {
                                    if (!e[t]) throw new Error("Experiment not found");
                                    return e[t]
                                })
                            }, getActiveExperimentDataString: function () {
                                return s().then(function (t) {
                                    var e = Object.keys(t).reduce(function (e, n) {
                                        var r;
                                        return t[n].version && (r = n.split("_").slice(-1)[0], e.push(r + ";" + t[n].bucket)), e
                                    }, []);
                                    return i(e.join(","))
                                })
                            }, getExperimentKeys: function () {
                                return s().then(function (t) {
                                    return Object.keys(t)
                                })
                            }, load: function () {
                                r.load()
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(10), i = {}, o = -1, s = {};

                        function a(t) {
                            var e = t.getAttribute("data-twitter-event-id");
                            return e || (t.setAttribute("data-twitter-event-id", ++o), o)
                        }

                        function u(t, e, n) {
                            var r = 0, i = t && t.length || 0;
                            for (r = 0; r < i; r++) if (t[r].call(e, n, e), n.ceaseImmediately) return !1
                        }

                        function c(t, e, n) {
                            for (var i = n || t.target || t.srcElement, o = r.list(i).map(function (t) {
                                return "." + t
                            }).concat(i.tagName), s = 0, a = o.length; s < a; s++) if (!1 === u(e[o[s]], i, t)) return;
                            t.cease || i !== this && c.call(this, t, e, i.parentElement || i.parentNode)
                        }

                        function d(t, e, n, r) {
                            function i(r) {
                                c.call(t, r, n[e])
                            }

                            !function (t, e, n, r) {
                                t.id && (s[t.id] = s[t.id] || [], s[t.id].push({
                                    el: t,
                                    listener: e,
                                    type: n,
                                    rootId: r
                                }))
                            }(t, i, e, r), t.addEventListener(e, i, !1)
                        }

                        function l(t) {
                            t && t.preventDefault ? t.preventDefault() : t.returnValue = !1
                        }

                        function f(t) {
                            t && (t.cease = !0) && t.stopPropagation ? t.stopPropagation() : t.cancelBubble = !0
                        }

                        t.exports = {
                            stop: function (t) {
                                return f(t), l(t), !1
                            }, stopPropagation: f, stopImmediatePropagation: function (t) {
                                t && (t.ceaseImmediately = !0, f(t), t.stopImmediatePropagation())
                            }, preventDefault: l, delegate: function (t, e, n, r) {
                                var o = a(t);
                                i[o] = i[o] || {}, i[o][e] || (i[o][e] = {}, d(t, e, i[o], o)), i[o][e][n] = i[o][e][n] || [], i[o][e][n].push(r)
                            }, simulate: function (t, e, n) {
                                var r = a(e), o = i[r] && i[r];
                                c.call(e, {target: n}, o[t])
                            }, removeDelegatesForWidget: function (t) {
                                var e = s[t];
                                e && (e.forEach(function (t) {
                                    t.el.removeEventListener(t.type, t.listener, !1), delete i[t.rootId]
                                }), delete s[t])
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(26), i = n(125);
                        t.exports = r.build([i])
                    }, function (t, e, n) {
                        var r = n(8), i = n(78), o = n(0), s = i.getCanonicalURL() || r.href, a = s;
                        t.exports = {
                            isFramed: function () {
                                return s !== a
                            }, rootDocumentLocation: function (t) {
                                return t && o.isType("string", t) && (s = t), s
                            }, currentDocumentLocation: function () {
                                return a
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(77), i = n(104), o = n(80), s = n(34), a = new (n(112))(function (t) {
                            var e, n, a;
                            if (0 !== t.length) {
                                if (u(t)) return c(t);
                                e = r(t, function (t) {
                                    return s.noticeSeen(t.input.namespace)
                                }), n = e.true, a = e.false, n && n.length > 0 && (n = n.slice(0, 1), o.canFlushOneItem(n[0]) || (n[0].input.data.message = ""), c(n)), a && (u(a) ? c : function (t) {
                                    i.init(), t.forEach(function (t) {
                                        var e = t.input.namespace, n = t.input.data, r = t.input.offsite,
                                            o = t.input.version;
                                        i.clientEvent(e, n, r, o)
                                    }), i.flush().then(function () {
                                        t.forEach(function (t) {
                                            t.taskDoneDeferred.resolve()
                                        })
                                    }, function () {
                                        t.forEach(function (t) {
                                            t.taskDoneDeferred.reject()
                                        })
                                    })
                                })(a)
                            }
                        });

                        function u(t) {
                            return 1 === t.length && o.canFlushOneItem(t[0])
                        }

                        function c(t) {
                            t.forEach(function (t) {
                                var e = t.input.namespace, n = t.input.data, r = t.input.offsite, i = t.input.version;
                                o.clientEvent(e, n, r, i), t.taskDoneDeferred.resolve()
                            })
                        }

                        t.exports = {
                            scribe: function (t, e, n, r) {
                                return a.add({namespace: t, data: e, offsite: n, version: r})
                            }, pause: function () {
                                a.pause()
                            }, resume: function () {
                                a.resume()
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(105), i = n(106), o = n(0);
                        t.exports = {
                            couple: function () {
                                return o.toRealArray(arguments)
                            }, build: function (t, e, n) {
                                var o = new t;
                                return (e = i(r(e || []))).forEach(function (t) {
                                    t.call(null, o)
                                }), o.build(n)
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(108), i = n(0), o = n(42);

                        function s() {
                            this.Component = this.factory(), this._adviceArgs = [], this._lastArgs = []
                        }

                        i.aug(s.prototype, {
                            factory: o, build: function (t) {
                                var e = this;
                                return this.Component, i.aug(this.Component.prototype.boundParams, t), this._adviceArgs.concat(this._lastArgs).forEach(function (t) {
                                    (function (t, e, n) {
                                        var r = this[e];
                                        if (!r) throw new Error(e + " does not exist");
                                        this[e] = t(r, n)
                                    }).apply(e.Component.prototype, t)
                                }), delete this._lastArgs, delete this._adviceArgs, this.Component
                            }, params: function (t) {
                                var e = this.Component.prototype.paramConfigs;
                                t = t || {}, this.Component.prototype.paramConfigs = i.aug({}, t, e)
                            }, define: function (t, e) {
                                if (t in this.Component.prototype) throw new Error(t + " has previously been defined");
                                this.override(t, e)
                            }, defineStatic: function (t, e) {
                                this.Component[t] = e
                            }, override: function (t, e) {
                                this.Component.prototype[t] = e
                            }, defineProperty: function (t, e) {
                                if (t in this.Component.prototype) throw new Error(t + " has previously been defined");
                                this.overrideProperty(t, e)
                            }, overrideProperty: function (t, e) {
                                var n = i.aug({configurable: !0}, e);
                                Object.defineProperty(this.Component.prototype, t, n)
                            }, before: function (t, e) {
                                this._adviceArgs.push([r.before, t, e])
                            }, after: function (t, e) {
                                this._adviceArgs.push([r.after, t, e])
                            }, around: function (t, e) {
                                this._adviceArgs.push([r.around, t, e])
                            }, last: function (t, e) {
                                this._lastArgs.push([r.after, t, e])
                            }
                        }), t.exports = s
                    }, function (t, e, n) {
                        var r = n(0);

                        function i() {
                            return !0
                        }

                        function o(t) {
                            return t
                        }

                        t.exports = function () {
                            function t(t) {
                                var e = this;
                                t = t || {}, this.params = Object.keys(this.paramConfigs).reduce(function (n, s) {
                                    var a = [], u = e.boundParams, c = e.paramConfigs[s], d = c.validate || i,
                                        l = c.transform || o;
                                    if (s in u && a.push(u[s]), s in t && a.push(t[s]), a = "fallback" in c ? a.concat(c.fallback) : a, n[s] = function (t, e, n) {
                                        var i = null;
                                        return t.some(function (t) {
                                            if (t = r.isType("function", t) ? t() : t, e(t)) return i = n(t), !0
                                        }), i
                                    }(a, d, l), c.required && null == n[s]) throw new Error(s + " is a required parameter");
                                    return n
                                }, {}), this.initialize()
                            }

                            return r.aug(t.prototype, {
                                paramConfigs: {}, boundParams: {}, initialize: function () {
                                }
                            }), t
                        }
                    }, function (t, e, n) {
                        var r = n(1).HTMLElement,
                            i = r.prototype.matches || r.prototype.matchesSelector || r.prototype.webkitMatchesSelector || r.prototype.mozMatchesSelector || r.prototype.msMatchesSelector || r.prototype.oMatchesSelector;
                        t.exports = function (t, e) {
                            if (i) return i.call(t, e)
                        }
                    }, function (t) {
                        t.exports = {version: "2a81c84:1568701398616"}
                    }, function (t, e, n) {
                        var r, i = n(10), o = n(4), s = n(1), a = n(33), u = n(54), c = n(5), d = n(23), l = "csptest";
                        t.exports = {
                            inlineStyle: function () {
                                var t = l + d.generate(), e = o.createElement("div"), n = o.createElement("style"),
                                    f = "." + t + " { visibility: hidden; }";
                                return !!o.body && (c.asBoolean(a.val("widgets:csp")) && (r = !1), void 0 !== r ? r : (e.style.display = "none", i.add(e, t), n.type = "text/css", n.appendChild(o.createTextNode(f)), o.body.appendChild(n), o.body.appendChild(e), r = "hidden" === s.getComputedStyle(e).visibility, u(e), u(n), r))
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(1);
                        t.exports = function (t, e, n) {
                            var i, o = 0;
                            return n = n || null, function s() {
                                var a = n || this, u = arguments, c = +new Date;
                                if (r.clearTimeout(i), c - o > e) return o = c, void t.apply(a, u);
                                i = r.setTimeout(function () {
                                    s.apply(a, u)
                                }, e)
                            }
                        }
                    }, function (t, e) {
                        t.exports = function (t) {
                            var e = t.getBoundingClientRect();
                            return {width: e.width, height: e.height}
                        }
                    }, function (t, e, n) {
                        /*!
                     * @overview es6-promise - a tiny implementation of Promises/A+.
                     * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
                     * @license   Licensed under MIT license
                     *            See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE
                     * @version   v4.2.5+7f2b526d
                     */
                        var r;
                        r = function () {
                            "use strict";

                            function t(t) {
                                return "function" == typeof t
                            }

                            var e = Array.isArray ? Array.isArray : function (t) {
                                    return "[object Array]" === Object.prototype.toString.call(t)
                                }, n = 0, r = void 0, i = void 0, o = function (t, e) {
                                    f[n] = t, f[n + 1] = e, 2 === (n += 2) && (i ? i(h) : w())
                                }, s = "undefined" != typeof window ? window : void 0, a = s || {},
                                u = a.MutationObserver || a.WebKitMutationObserver,
                                c = "undefined" == typeof self && "undefined" != typeof process && "[object process]" === {}.toString.call(process),
                                d = "undefined" != typeof Uint8ClampedArray && "undefined" != typeof importScripts && "undefined" != typeof MessageChannel;

                            function l() {
                                var t = setTimeout;
                                return function () {
                                    return t(h, 1)
                                }
                            }

                            var f = new Array(1e3);

                            function h() {
                                for (var t = 0; t < n; t += 2) (0, f[t])(f[t + 1]), f[t] = void 0, f[t + 1] = void 0;
                                n = 0
                            }

                            var p, m, v, g, w = void 0;

                            function y(t, e) {
                                var n = this, r = new this.constructor(E);
                                void 0 === r[_] && k(r);
                                var i = n._state;
                                if (i) {
                                    var s = arguments[i - 1];
                                    o(function () {
                                        return D(i, r, s, n._result)
                                    })
                                } else I(n, r, t, e);
                                return r
                            }

                            function b(t) {
                                if (t && "object" == typeof t && t.constructor === this) return t;
                                var e = new this(E);
                                return C(e, t), e
                            }

                            c ? w = function () {
                                return process.nextTick(h)
                            } : u ? (m = 0, v = new u(h), g = document.createTextNode(""), v.observe(g, {characterData: !0}), w = function () {
                                g.data = m = ++m % 2
                            }) : d ? ((p = new MessageChannel).port1.onmessage = h, w = function () {
                                return p.port2.postMessage(0)
                            }) : w = void 0 === s ? function () {
                                try {
                                    var t = Function("return this")().require("vertx");
                                    return void 0 !== (r = t.runOnLoop || t.runOnContext) ? function () {
                                        r(h)
                                    } : l()
                                } catch (t) {
                                    return l()
                                }
                            }() : l();
                            var _ = Math.random().toString(36).substring(2);

                            function E() {
                            }

                            var x = void 0, T = 1, A = 2, S = {error: null};

                            function R(t) {
                                try {
                                    return t.then
                                } catch (t) {
                                    return S.error = t, S
                                }
                            }

                            function N(e, n, r) {
                                n.constructor === e.constructor && r === y && n.constructor.resolve === b ? function (t, e) {
                                    e._state === T ? L(t, e._result) : e._state === A ? j(t, e._result) : I(e, void 0, function (e) {
                                        return C(t, e)
                                    }, function (e) {
                                        return j(t, e)
                                    })
                                }(e, n) : r === S ? (j(e, S.error), S.error = null) : void 0 === r ? L(e, n) : t(r) ? function (t, e, n) {
                                    o(function (t) {
                                        var r = !1, i = function (t, e, n, r) {
                                            try {
                                                t.call(e, n, r)
                                            } catch (t) {
                                                return t
                                            }
                                        }(n, e, function (n) {
                                            r || (r = !0, e !== n ? C(t, n) : L(t, n))
                                        }, function (e) {
                                            r || (r = !0, j(t, e))
                                        }, t._label);
                                        !r && i && (r = !0, j(t, i))
                                    }, t)
                                }(e, n, r) : L(e, n)
                            }

                            function C(t, e) {
                                var n, r;
                                t === e ? j(t, new TypeError("You cannot resolve a promise with itself")) : (r = typeof (n = e), null === n || "object" !== r && "function" !== r ? L(t, e) : N(t, e, R(e)))
                            }

                            function P(t) {
                                t._onerror && t._onerror(t._result), O(t)
                            }

                            function L(t, e) {
                                t._state === x && (t._result = e, t._state = T, 0 !== t._subscribers.length && o(O, t))
                            }

                            function j(t, e) {
                                t._state === x && (t._state = A, t._result = e, o(P, t))
                            }

                            function I(t, e, n, r) {
                                var i = t._subscribers, s = i.length;
                                t._onerror = null, i[s] = e, i[s + T] = n, i[s + A] = r, 0 === s && t._state && o(O, t)
                            }

                            function O(t) {
                                var e = t._subscribers, n = t._state;
                                if (0 !== e.length) {
                                    for (var r = void 0, i = void 0, o = t._result, s = 0; s < e.length; s += 3) r = e[s], i = e[s + n], r ? D(n, r, i, o) : i(o);
                                    t._subscribers.length = 0
                                }
                            }

                            function D(e, n, r, i) {
                                var o = t(r), s = void 0, a = void 0, u = void 0, c = void 0;
                                if (o) {
                                    if ((s = function (t, e) {
                                        try {
                                            return t(e)
                                        } catch (t) {
                                            return S.error = t, S
                                        }
                                    }(r, i)) === S ? (c = !0, a = s.error, s.error = null) : u = !0, n === s) return void j(n, new TypeError("A promises callback cannot return that same promise."))
                                } else s = i, u = !0;
                                n._state !== x || (o && u ? C(n, s) : c ? j(n, a) : e === T ? L(n, s) : e === A && j(n, s))
                            }

                            var z = 0;

                            function k(t) {
                                t[_] = z++, t._state = void 0, t._result = void 0, t._subscribers = []
                            }

                            var M = function () {
                                function t(t, n) {
                                    this._instanceConstructor = t, this.promise = new t(E), this.promise[_] || k(this.promise), e(n) ? (this.length = n.length, this._remaining = n.length, this._result = new Array(this.length), 0 === this.length ? L(this.promise, this._result) : (this.length = this.length || 0, this._enumerate(n), 0 === this._remaining && L(this.promise, this._result))) : j(this.promise, new Error("Array Methods must be provided an Array"))
                                }

                                return t.prototype._enumerate = function (t) {
                                    for (var e = 0; this._state === x && e < t.length; e++) this._eachEntry(t[e], e)
                                }, t.prototype._eachEntry = function (t, e) {
                                    var n = this._instanceConstructor, r = n.resolve;
                                    if (r === b) {
                                        var i = R(t);
                                        if (i === y && t._state !== x) this._settledAt(t._state, e, t._result); else if ("function" != typeof i) this._remaining--, this._result[e] = t; else if (n === U) {
                                            var o = new n(E);
                                            N(o, t, i), this._willSettleAt(o, e)
                                        } else this._willSettleAt(new n(function (e) {
                                            return e(t)
                                        }), e)
                                    } else this._willSettleAt(r(t), e)
                                }, t.prototype._settledAt = function (t, e, n) {
                                    var r = this.promise;
                                    r._state === x && (this._remaining--, t === A ? j(r, n) : this._result[e] = n), 0 === this._remaining && L(r, this._result)
                                }, t.prototype._willSettleAt = function (t, e) {
                                    var n = this;
                                    I(t, void 0, function (t) {
                                        return n._settledAt(T, e, t)
                                    }, function (t) {
                                        return n._settledAt(A, e, t)
                                    })
                                }, t
                            }(), U = function () {
                                function e(t) {
                                    this[_] = z++, this._result = this._state = void 0, this._subscribers = [], E !== t && ("function" != typeof t && function () {
                                        throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")
                                    }(), this instanceof e ? function (t, e) {
                                        try {
                                            e(function (e) {
                                                C(t, e)
                                            }, function (e) {
                                                j(t, e)
                                            })
                                        } catch (e) {
                                            j(t, e)
                                        }
                                    }(this, t) : function () {
                                        throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")
                                    }())
                                }

                                return e.prototype.catch = function (t) {
                                    return this.then(null, t)
                                }, e.prototype.finally = function (e) {
                                    var n = this.constructor;
                                    return t(e) ? this.then(function (t) {
                                        return n.resolve(e()).then(function () {
                                            return t
                                        })
                                    }, function (t) {
                                        return n.resolve(e()).then(function () {
                                            throw t
                                        })
                                    }) : this.then(e, e)
                                }, e
                            }();
                            return U.prototype.then = y, U.all = function (t) {
                                return new M(this, t).promise
                            }, U.race = function (t) {
                                var n = this;
                                return e(t) ? new n(function (e, r) {
                                    for (var i = t.length, o = 0; o < i; o++) n.resolve(t[o]).then(e, r)
                                }) : new n(function (t, e) {
                                    return e(new TypeError("You must pass an array to race."))
                                })
                            }, U.resolve = b, U.reject = function (t) {
                                var e = new this(E);
                                return j(e, t), e
                            }, U._setScheduler = function (t) {
                                i = t
                            }, U._setAsap = function (t) {
                                o = t
                            }, U._asap = o, U.polyfill = function () {
                                var t = void 0;
                                if ("undefined" != typeof global) t = global; else if ("undefined" != typeof self) t = self; else try {
                                    t = Function("return this")()
                                } catch (t) {
                                    throw new Error("polyfill failed because global object is unavailable in this environment")
                                }
                                var e = t.Promise;
                                if (e) {
                                    var n = null;
                                    try {
                                        n = Object.prototype.toString.call(e.resolve())
                                    } catch (t) {
                                    }
                                    if ("[object Promise]" === n && !e.cast) return
                                }
                                t.Promise = U
                            }, U.Promise = U, U
                        }, t.exports = r()
                    }, function (t, e, n) {
                        var r = n(50);
                        t.exports = new r("twttr")
                    }, function (t, e, n) {
                        var r = n(1), i = n(0);

                        function o(t) {
                            return i.isType("string", t) ? t.split(".") : i.isType("array", t) ? t : []
                        }

                        function s(t, e) {
                            (e = e || r)[t] = e[t] || {}, Object.defineProperty(this, "base", {value: e[t]}), Object.defineProperty(this, "name", {value: t})
                        }

                        i.aug(s.prototype, {
                            get: function (t) {
                                return o(t).reduce(function (t, e) {
                                    if (i.isObject(t)) return t[e]
                                }, this.base)
                            }, set: function (t, e, n) {
                                var r = o(t), s = function (t, e) {
                                    var n = o(e).slice(0, -1);
                                    return n.reduce(function (t, e, r) {
                                        if (t[e] = t[e] || {}, !i.isObject(t[e])) throw new Error(n.slice(0, r + 1).join(".") + " is already defined with a value.");
                                        return t[e]
                                    }, t)
                                }(this.base, t), a = r.slice(-1);
                                return n && a in s ? s[a] : s[a] = e
                            }, init: function (t, e) {
                                return this.set(t, e, !0)
                            }, unset: function (t) {
                                var e = o(t), n = this.get(e.slice(0, -1));
                                n && delete n[e.slice(-1)]
                            }, aug: function (t) {
                                var e = this.get(t), n = i.toRealArray(arguments).slice(1);
                                if (e = void 0 !== e ? e : {}, n.unshift(e), !n.every(i.isObject)) throw new Error("Cannot augment non-object.");
                                return this.set(t, i.aug.apply(null, n))
                            }, call: function (t) {
                                var e = this.get(t), n = i.toRealArray(arguments).slice(1);
                                if (!i.isType("function", e)) throw new Error("Function " + t + "does not exist.");
                                return e.apply(null, n)
                            }, fullPath: function (t) {
                                var e = o(t);
                                return e.unshift(this.name), e.join(".")
                            }
                        }), t.exports = s
                    }, function (t, e, n) {
                        var r = n(0), i = n(7), o = {
                            bind: function (t, e) {
                                return this._handlers = this._handlers || {}, this._handlers[t] = this._handlers[t] || [], this._handlers[t].push(e)
                            }, unbind: function (t, e) {
                                var n;
                                this._handlers && this._handlers[t] && (e ? (n = this._handlers[t].indexOf(e)) >= 0 && this._handlers[t].splice(n, 1) : this._handlers[t] = [])
                            }, trigger: function (t, e) {
                                var n = this._handlers && this._handlers[t];
                                (e = e || {}).type = t, n && n.forEach(function (t) {
                                    r.async(i(t, this, e))
                                })
                            }
                        };
                        t.exports = {
                            Emitter: o, makeEmitter: function () {
                                return r.aug(function () {
                                }, o)
                            }
                        }
                    }, function (t, e) {
                        var n = "tfw_horizon_tweet_embed_9555";
                        t.exports = {
                            isHorizonTweetEnabled: function (t) {
                                return !(!t || !t[n] || "hte" !== t[n].bucket)
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(101), i = n(76), o = n(6), s = n(22), a = n(7), u = n(0), c = new i(function (t) {
                            var e = function (t) {
                                return t.reduce(function (t, e) {
                                    return t[e._className] = t[e._className] || [], t[e._className].push(e), t
                                }, {})
                            }(t.map(r.fromRawTask));
                            u.forIn(e, function (t, e) {
                                s.allSettled(e.map(function (t) {
                                    return t.initialize()
                                })).then(function () {
                                    e.forEach(function (t) {
                                        o.all([t.hydrate(), t.insertIntoDom()]).then(a(t.render, t)).then(a(t.success, t), a(t.fail, t))
                                    })
                                })
                            })
                        });
                        t.exports = {
                            addWidget: function (t) {
                                return c.add(t)
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(18);
                        t.exports = function (t) {
                            return r.write(function () {
                                t && t.parentNode && t.parentNode.removeChild(t)
                            })
                        }
                    }, function (t, e, n) {
                        n(12), t.exports = {
                            log: function (t, e) {
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(1);

                        function i(t) {
                            return (t = t || r).getSelection && t.getSelection()
                        }

                        t.exports = {
                            getSelection: i, getSelectedText: function (t) {
                                var e = i(t);
                                return e ? e.toString() : ""
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(4), i = n(1), o = n(2), s = 2e4;
                        t.exports = function (t) {
                            var e = new o, n = r.createElement("img");
                            return n.onload = n.onerror = function () {
                                i.setTimeout(e.resolve, 50)
                            }, n.src = t, i.setTimeout(e.reject, s), e.promise
                        }
                    }, function (t, e, n) {
                        var r = n(111);
                        t.exports = function (t) {
                            t.define("createElement", r), t.define("createFragment", r), t.define("htmlToElement", r), t.define("hasSelectedText", r), t.define("addRootClass", r), t.define("removeRootClass", r), t.define("hasRootClass", r), t.define("prependStyleSheet", r), t.define("appendStyleSheet", r), t.define("prependCss", r), t.define("appendCss", r), t.define("makeVisible", r), t.define("injectWidgetEl", r), t.define("matchHeightToContent", r), t.define("matchWidthToContent", r)
                        }
                    }, function (t, e) {
                        t.exports = function (t) {
                            var e, n = !1;
                            return function () {
                                return n ? e : (n = !0, e = t.apply(this, arguments))
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(15), i = n(120), o = n(61), s = n(16);
                        t.exports = function (t, e, n) {
                            return new r(i, o, s.DM_BUTTON, t, e, n)
                        }
                    }, function (t, e, n) {
                        var r = n(62), i = n(25);
                        t.exports = r.isSupported() ? r : i
                    }, function (t, e, n) {
                        var r = n(26), i = n(121);
                        t.exports = r.build([i])
                    }, function (t, e, n) {
                        var r = n(15), i = n(124), o = n(37), s = n(16);
                        t.exports = function (t, e, n) {
                            return new r(i, o, s.FOLLOW_BUTTON, t, e, n)
                        }
                    }, function (t, e, n) {
                        var r = n(15), i = n(132), o = n(25), s = n(16);
                        t.exports = function (t, e, n) {
                            return new r(i, o, s.MOMENT, t, e, n)
                        }
                    }, function (t, e, n) {
                        var r = n(15), i = n(134), o = n(25), s = n(16);
                        t.exports = function (t, e, n) {
                            return new r(i, o, s.PERISCOPE, t, e, n)
                        }
                    }, function (t, e, n) {
                        var r = n(82), i = n(136), o = n(140), s = n(142), a = n(144), u = n(146),
                            c = {collection: i, event: o, likes: s, list: a, profile: u, url: l}, d = [u, s, i, a, o];

                        function l(t) {
                            return r(d, function (e) {
                                try {
                                    return new e(t)
                                } catch (t) {
                                }
                            })
                        }

                        t.exports = function (t) {
                            return t ? function (t) {
                                var e, n;
                                return e = (t.sourceType + "").toLowerCase(), (n = c[e]) ? new n(t) : null
                            }(t) || l(t) : null
                        }
                    }, function (t, e, n) {
                        var r = n(15), i = n(148), o = n(25), s = n(16);
                        t.exports = function (t, e, n) {
                            return new r(i, o, s.TIMELINE, t, e, n)
                        }
                    }, function (t, e, n) {
                        var r = n(15), i = n(4), o = n(37), s = n(150), a = n(61), u = n(151), c = n(16);
                        t.exports = function (t, e, n, d) {
                            var l;
                            return d ? (l = i.createElement("div"), new r(s, o, c.TWEET, t, e, n, {sandboxWrapperEl: l})) : new r(u, a, c.TWEET, t, e, n)
                        }
                    }, function (t, e, n) {
                        var r = n(15), i = n(153), o = n(37), s = n(16);
                        t.exports = function (t, e, n) {
                            var a = t && t.type || "share",
                                u = "hashtag" == a ? s.HASHTAG_BUTTON : "mention" == a ? s.MENTION_BUTTON : s.SHARE_BUTTON;
                            return new r(i, o, u, t, e, n)
                        }
                    }, function (t, e, n) {
                        var r = n(39), i = n(38), o = n(0);
                        t.exports = function (t) {
                            var e = {
                                widget_origin: i.rootDocumentLocation(),
                                widget_frame: i.isFramed() ? i.currentDocumentLocation() : null,
                                duration_ms: t.duration,
                                item_ids: t.widgetIds || []
                            }, n = o.aug(t.namespace, {page: "page", component: "performance"});
                            r.scribe(n, e)
                        }
                    }, function (t, e, n) {
                        var r = n(0), i = n(137), o = ["ar", "fa", "he", "ur"];
                        t.exports = {
                            isRtlLang: function (t) {
                                return t = String(t).toLowerCase(), r.contains(o, t)
                            }, matchLanguage: function (t) {
                                return t = (t = (t || "").toLowerCase()).replace("_", "-"), i(t) ? t : (t = t.replace(/-.*/, ""), i(t) ? t : "en")
                            }
                        }
                    }, function (t) {
                        t.exports = {
                            tweetButtonHtmlPath: "/widgets/tweet_button.d6364fae9340b0be5f13818370141fd0.{{lang}}.html",
                            followButtonHtmlPath: "/widgets/follow_button.d6364fae9340b0be5f13818370141fd0.{{lang}}.html",
                            hubHtmlPath: "/widgets/hub.html",
                            widgetIframeHtmlPath: "/widgets/widget_iframe.d6364fae9340b0be5f13818370141fd0.html",
                            resourceBaseUrl: "https://platform.twitter.com"
                        }
                    }, function (t, e, n) {
                        var r = n(3), i = n(98), o = n(24), s = n(11), a = {
                            favorite: ["favorite", "like"],
                            follow: ["follow"],
                            like: ["favorite", "like"],
                            retweet: ["retweet"],
                            tweet: ["tweet"]
                        };

                        function u(t) {
                            this.srcEl = [], this.element = t
                        }

                        u.open = function (t, e, n) {
                            var u = (r.intentType(t) || "").toLowerCase();
                            r.isTwitterURL(t) && (function (t, e) {
                                i.open(t, {}, e)
                            }(t, n), e && o.trigger("click", {
                                target: e,
                                region: "intent",
                                type: "click",
                                data: {}
                            }), e && a[u] && a[u].forEach(function (n) {
                                o.trigger(n, {
                                    target: e, region: "intent", type: n, data: function (t, e) {
                                        var n = s.decodeURL(e);
                                        switch (t) {
                                            case"favorite":
                                            case"like":
                                                return {tweet_id: n.tweet_id};
                                            case"follow":
                                                return {screen_name: n.screen_name, user_id: n.user_id};
                                            case"retweet":
                                                return {source_tweet_id: n.tweet_id};
                                            default:
                                                return {}
                                        }
                                    }(u, t)
                                })
                            }))
                        }, t.exports = u
                    }, function (t, e) {
                        t.exports = {
                            getTimezoneOffset: function () {
                                var t = (new Date).toString().match(/(GMT[+-]?\d+)/);
                                return t && t[0] || "GMT"
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(4), i = n(9), o = n(2), s = n(0), a = n(11), u = "cb", c = 0;
                        t.exports = {
                            fetch: function (t, e, n, d) {
                                var l, f, h;
                                return d = function (t) {
                                    if (t) return t.replace(/[^\w$]/g, "_")
                                }(d || u + c++), l = i.fullPath(["callbacks", d]), f = r.createElement("script"), h = new o, e = s.aug({}, e, {
                                    callback: l,
                                    suppress_response_codes: !0
                                }), i.set(["callbacks", d], function (t) {
                                    var e;
                                    t = (e = n(t || !1)).resp, e.success ? h.resolve(t) : h.reject(t), f.onload = f.onreadystatechange = null, f.parentNode && f.parentNode.removeChild(f), i.unset(["callbacks", d])
                                }), f.onerror = function () {
                                    h.reject(new Error("failed to fetch " + f.src))
                                }, f.src = a.url(t, e), f.async = "async", r.body.appendChild(f), h.promise
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(2), i = n(103), o = n(7);

                        function s(t) {
                            this._inputsQueue = [], this._task = t, this._hasFlushBeenScheduled = !1
                        }

                        s.prototype.add = function (t) {
                            var e = new r;
                            return this._inputsQueue.push({
                                input: t,
                                taskDoneDeferred: e
                            }), this._hasFlushBeenScheduled || (this._hasFlushBeenScheduled = !0, i(o(this._flush, this))), e.promise
                        }, s.prototype._flush = function () {
                            try {
                                this._task.call(null, this._inputsQueue)
                            } catch (t) {
                                this._inputsQueue.forEach(function (e) {
                                    e.taskDoneDeferred.reject(t)
                                })
                            }
                            this._inputsQueue = [], this._hasFlushBeenScheduled = !1
                        }, t.exports = s
                    }, function (t, e) {
                        t.exports = function (t, e) {
                            return t.reduce(function (t, n) {
                                var r = e(n);
                                return t[r] = t[r] || [], t[r].push(n), t
                            }, {})
                        }
                    }, function (t, e, n) {
                        var r = n(4), i = n(8), o = n(3);

                        function s(t, e) {
                            var n, r;
                            return e = e || i, /^https?:\/\//.test(t) ? t : /^\/\//.test(t) ? e.protocol + t : (n = e.host + (e.port.length ? ":" + e.port : ""), 0 !== t.indexOf("/") && ((r = e.pathname.split("/")).pop(), r.push(t), t = "/" + r.join("/")), [e.protocol, "//", n, t].join(""))
                        }

                        t.exports = {
                            absolutize: s, getCanonicalURL: function () {
                                for (var t, e = r.getElementsByTagName("link"), n = 0; e[n]; n++) if ("canonical" == (t = e[n]).rel) return s(t.href)
                            }, getScreenNameFromPage: function () {
                                for (var t, e, n, i = [r.getElementsByTagName("a"), r.getElementsByTagName("link")], s = 0, a = 0, u = /\bme\b/; t = i[s]; s++) for (a = 0; e = t[a]; a++) if (u.test(e.rel) && (n = o.screenName(e.href))) return n
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(8), i = /^[^#?]*\.(gov|mil)(:\d+)?([#?].*)?$/i, o = {};

                        function s(t) {
                            return t in o ? o[t] : o[t] = i.test(t)
                        }

                        t.exports = {
                            isUrlSensitive: s, isHostPageSensitive: function () {
                                return s(r.host)
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(20), i = n(55), o = n(11), s = n(34), a = n(0), u = n(9).get("scribeCallback"),
                            c = 2083, d = [], l = o.url(s.CLIENT_EVENT_ENDPOINT, {dnt: 0, l: ""}),
                            f = encodeURIComponent(l).length;

                        function h(t, e, n, r) {
                            var i = !a.isObject(t), o = !!e && !a.isObject(e);
                            i || o || (u && u(arguments), p(s.formatClientEventNamespace(t), s.formatClientEventData(e, n, r), s.CLIENT_EVENT_ENDPOINT))
                        }

                        function p(t, e, n) {
                            var r, u;
                            n && a.isObject(t) && a.isObject(e) && (i.log(t, e), r = s.flattenClientEventPayload(t, e), u = {l: s.stringify(r)}, s.noticeSeen(t) && (u.notice_seen = !0), r.dnt && (u.dnt = 1), w(o.url(n, u)))
                        }

                        function m(t, e, n, r) {
                            var i = !a.isObject(t), o = !!e && !a.isObject(e);
                            if (!i && !o) return v(s.flattenClientEventPayload(s.formatClientEventNamespace(t), s.formatClientEventData(e, n, r)))
                        }

                        function v(t) {
                            return d.push(t), d
                        }

                        function g(t) {
                            return encodeURIComponent(t).length + 3
                        }

                        function w(t) {
                            return (new Image).src = t
                        }

                        t.exports = {
                            canFlushOneItem: function (t) {
                                var e = g(s.stringify(t));
                                return f + e < c
                            }, _enqueueRawObject: v, scribe: p, clientEvent: h, clientEvent2: function (t, e, n) {
                                return h(t, e, n, 2)
                            }, enqueueClientEvent: m, flushClientEvents: function () {
                                var t;
                                return d.length > 1 && m({
                                    page: "widgets_js",
                                    component: "scribe_pixel",
                                    action: "batch_log"
                                }, {}), t = d, d = [], t.reduce(function (e, n, r) {
                                    var i = e.length, o = i && e[i - 1];
                                    return r + 1 == t.length && n.event_namespace && "batch_log" == n.event_namespace.action && (n.message = ["entries:" + r, "requests:" + i].join("/")), function t(e) {
                                        return Array.isArray(e) || (e = [e]), e.reduce(function (e, n) {
                                            var r, i = s.stringify(n), o = g(i);
                                            return f + o < c ? e = e.concat(i) : (r = s.splitLogEntry(n)).length > 1 && (e = e.concat(t(r))), e
                                        }, [])
                                    }(n).forEach(function (t) {
                                        var n = g(t);
                                        (!o || o.urlLength + n > c) && (o = {
                                            urlLength: f,
                                            items: []
                                        }, e.push(o)), o.urlLength += n, o.items.push(t)
                                    }), e
                                }, []).map(function (t) {
                                    var e = {l: t.items};
                                    return r.enabled() && (e.dnt = 1), w(o.url(s.CLIENT_EVENT_ENDPOINT, e))
                                })
                            }, interaction: function (t, e, n, r) {
                                var i = s.extractTermsFromDOM(t.target || t.srcElement);
                                i.action = r || "click", h(i, e, n)
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(0), i = n(43);
                        t.exports = function (t, e) {
                            return i(t, e) ? [t] : r.toRealArray(t.querySelectorAll(e))
                        }
                    }, function (t, e) {
                        t.exports = function (t, e, n) {
                            for (var r, i = 0; i < t.length; i++) if (r = e.call(n, t[i], i, t)) return r
                        }
                    }, function (t, e) {
                        t.exports = function () {
                            return Math.floor(+new Date / 9e5)
                        }
                    }, function (t, e, n) {
                        var r = n(12);
                        t.exports = function (t) {
                            var e, n;
                            return e = t.headers && t.headers.status, !(n = t && !t.error && 200 === e) && t.headers && t.headers.message && r.publicError(t.headers.message), {
                                success: n,
                                resp: t
                            }
                        }
                    }, function (t, e, n) {
                        var r, i = n(29), o = 0;

                        function s() {
                            r && r.length === o && (i.emitter.trigger(i.ALL_WIDGETS_AND_IMAGES_LOADED, r), r = null)
                        }

                        i.emitter.bind(i.ALL_WIDGETS_RENDER_END, function (t) {
                            r = t.widgets, s()
                        }), t.exports = {
                            reportImagesLoadForAWidget: function () {
                                o++, s()
                            }
                        }
                    }, , , , , , , , , function (t, e, n) {
                        var r, i = n(2), o = n(4), s = n(96), a = n(49), u = n(9), c = n(97), d = n(24), l = n(100),
                            f = n(154), h = n(162), p = n(163), m = n(29), v = n(35);
                        n(164), m.emitter.trigger(m.START), u.set("widgets.init", !0), a.set("init", !0), p(), r = new i, s.exposeReadyPromise(r.promise, a.base, "_e"), a.set("widgets", f), a.set("widgets.load", l.load), a.set("events", d), h(function () {
                            v.load(), r.resolve(a.base), c.attachTo(o), l.loadPage()
                        })
                    }, function (t, e) {
                        t.exports = navigator
                    }, function (t, e, n) {
                        var r = n(7);
                        t.exports = {
                            exposeReadyPromise: function (t, e, n) {
                                e.ready = r(t.then, t), n && Array.isArray(e[n]) && (e[n].forEach(r(t.then, t)), delete e[n])
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(8), i = n(36), o = n(32), s = n(73), a = n(3);

                        function u(t) {
                            var e, n, u;
                            t.altKey || t.metaKey || t.shiftKey || (e = o.closest(function (t) {
                                return "A" === t.tagName || "AREA" === t.tagName
                            }, t.target)) && a.isIntentURL(e.href) && (n = (n = (n = [u = e.href, "original_referer=" + r.href].join(-1 == u.indexOf("?") ? "?" : "&")).replace(/^http[:]/, "https:")).replace(/^\/\//, "https://"), s.open(n, e), i.preventDefault(t))
                        }

                        t.exports = {
                            attachTo: function (t) {
                                t.addEventListener("click", u, !1)
                            }
                        }
                    }, function (t, e, n) {
                        var r, i = n(1), o = n(99), s = n(36), a = n(32), u = n(21), c = n(3), d = n(23), l = n(0),
                            f = "intent_", h = i.screen.width, p = i.screen.height;

                        function m(t, e) {
                            function n(t) {
                                return Math.round(t / 2)
                            }

                            return t > e ? {coordinate: 0, size: e} : {coordinate: n(e) - n(t), size: t}
                        }

                        function v(t, e, n) {
                            var i, o;
                            e = r.parse(e), n = n || {}, i = m(e.width, n.width || h), e.left = i.coordinate, e.width = i.size, o = m(e.height, n.height || p), e.top = o.coordinate, e.height = o.size, this.win = t, this.features = function (t) {
                                var e = [];
                                return l.forIn(t, function (t, n) {
                                    e.push(t + "=" + n)
                                }), e.join(",")
                            }(e)
                        }

                        r = (new o).defaults({
                            width: 550,
                            height: 520,
                            personalbar: "0",
                            toolbar: "0",
                            location: "1",
                            scrollbars: "1",
                            resizable: "1"
                        }), v.prototype.open = function (t, e) {
                            var n = e && "click" == e.type && a.closest("a", e.target),
                                r = e && (e.altKey || e.metaKey || e.shiftKey), i = n && (u.ios() || u.android());
                            if (c.isTwitterURL(t)) return r || i ? this : (this.name = f + d.generate(), this.popup = this.win.open(t, this.name, this.features), e && s.preventDefault(e), this)
                        }, v.open = function (t, e, n) {
                            return new v(i, e).open(t, n)
                        }, t.exports = v
                    }, function (t, e, n) {
                        var r = n(5), i = n(0);

                        function o() {
                            this.assertions = [], this._defaults = {}
                        }

                        o.prototype.assert = function (t, e) {
                            return this.assertions.push({fn: t, msg: e || "assertion failed"}), this
                        }, o.prototype.defaults = function (t) {
                            return this._defaults = t || this._defaults, this
                        }, o.prototype.require = function (t) {
                            var e = this;
                            return (t = Array.isArray(t) ? t : i.toRealArray(arguments)).forEach(function (t) {
                                e.assert(function (t) {
                                    return function (e) {
                                        return r.hasValue(e[t])
                                    }
                                }(t), "required: " + t)
                            }), this
                        }, o.prototype.parse = function (t) {
                            var e, n;
                            if (e = i.aug({}, this._defaults, t || {}), (n = this.assertions.reduce(function (t, n) {
                                return n.fn(e) || t.push(n.msg), t
                            }, [])).length > 0) throw new Error(n.join("\n"));
                            return e
                        }, t.exports = o
                    }, function (t, e, n) {
                        var r = n(4), i = n(52), o = n(6), s = n(22), a = n(53), u = n(33), c = n(9), d = n(39),
                            l = n(24), f = n(5), h = n(0), p = n(35), m = n(117), v = n(29);

                        function g() {
                            var t = u.val("widgets:autoload") || !0;
                            return !f.isFalseValue(t) && (f.isTruthValue(t) ? r.body : r.querySelectorAll(t))
                        }

                        function w(t, e) {
                            var n, i;
                            return t = (t = t || r.body).length ? h.toRealArray(t) : [t], d.pause(), i = function (t, e) {
                                return t.reduce(function (t, n) {
                                    return t.concat(m.reduce(function (t, r) {
                                        return t.concat(r(n, e))
                                    }, []))
                                }, [])
                            }(t, e), v.emitter.trigger(v.ALL_WIDGETS_RENDER_START, {widgets: i}), n = s.allResolved(i.map(function (t) {
                                return a.addWidget(t)
                            })).then(function (t) {
                                l.trigger("loaded", {widgets: t}), t && t.length && v.emitter.trigger(v.ALL_WIDGETS_RENDER_END, {widgets: t})
                            }), s.always(n, function () {
                                d.resume()
                            }), n
                        }

                        function y(t) {
                            return p.getExperiments().then(function (e) {
                                return w(t, i.isHorizonTweetEnabled(e))
                            })
                        }

                        t.exports = {
                            load: y, loadPage: function () {
                                var t = g();
                                return !1 === t ? o.resolve() : (c.set("widgets.loaded", !0), y(t))
                            }, _getPageLoadTarget: g
                        }
                    }, function (t, e, n) {
                        var r = n(10), i = n(18), o = n(24), s = n(54), a = n(6), u = n(22);

                        function c(t, e) {
                            this._widget = null, this._sandbox = null, this._hydrated = !1, this._insertedIntoDom = !1, this._Sandbox = t.Sandbox, this._factory = t.factory, this._widgetParams = t.parameters, this._resolve = e, this._className = t.className, this._renderedClassName = t.className + "-rendered", this._errorClassName = t.className + "-error", this._srcEl = t.srcEl, this._targetGlobal = function (t) {
                                return (t.srcEl || t.targetEl).ownerDocument.defaultView
                            }(t), this._sandboxWrapperEl = t.options ? t.options.sandboxWrapperEl : null, this._insertionStrategy = function (e) {
                                var n, r = t.srcEl, i = t.targetEl, o = t.options ? t.options.sandboxWrapperEl : null;
                                o ? (o.appendChild(e), n = o) : n = e, r ? i.insertBefore(n, r) : i.appendChild(n)
                            }
                        }

                        c.fromRawTask = function (t) {
                            return new c(t.input, t.taskDoneDeferred.resolve)
                        }, c.prototype.initialize = function () {
                            var t = this, e = new this._Sandbox(this._targetGlobal);
                            return this._factory(this._widgetParams, e).then(function (n) {
                                return t._widget = n, t._sandbox = e, n._sandboxWrapperEl = t._sandboxWrapperEl, n
                            })
                        }, c.prototype.insertIntoDom = function () {
                            var t = this;
                            return this._widget ? this._sandbox.insert(this._widget.id, {class: [this._className, this._renderedClassName].join(" ")}, null, this._insertionStrategy).then(function () {
                                t._insertedIntoDom = !0
                            }) : a.reject(new Error("cannot insert widget into DOM before it is initialized"))
                        }, c.prototype.hydrate = function () {
                            var t = this;
                            return this._widget ? this._widget.hydrate().then(function () {
                                t._hydrated = !0
                            }) : a.reject(new Error("cannot hydrate widget before it is initialized"))
                        }, c.prototype.render = function () {
                            var t = this;

                            function e(e) {
                                return s(t._sandbox.sandboxEl).then(function () {
                                    return a.reject(e)
                                })
                            }

                            return this._hydrated ? this._insertedIntoDom ? t._widget.render(t._sandbox).then(function () {
                                return t._sandbox.onResize(function () {
                                    return t._widget.resize().then(function () {
                                        o.trigger("resize", {target: t._sandbox.sandboxEl})
                                    })
                                }), t._widget.show()
                            }).then(function () {
                                return s(t._srcEl).then(function () {
                                    return t._sandbox.sandboxEl
                                })
                            }, e) : e(new Error("cannot render widget before DOM insertion")) : e(new Error("cannot render widget before hydration"))
                        }, c.prototype.fail = function () {
                            var t = this;
                            return this._srcEl ? u.always(i.write(function () {
                                r.add(t._srcEl, t._errorClassName)
                            }), function () {
                                o.trigger("rendered", {target: t._srcEl}), t._resolve(t._srcEl)
                            }) : (t._resolve(), a.resolve())
                        }, c.prototype.success = function () {
                            o.trigger("rendered", {target: this._sandbox.sandboxEl}), this._resolve(this._sandbox.sandboxEl)
                        }, t.exports = c
                    }, function (t, e, n) {
                        var r;
                        !function () {
                            "use strict";
                            var i = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || function (t) {
                                return window.setTimeout(t, 1e3 / 60)
                            };

                            function o() {
                                this.frames = [], this.lastId = 0, this.raf = i, this.batch = {
                                    hash: {},
                                    read: [],
                                    write: [],
                                    mode: null
                                }
                            }

                            o.prototype.read = function (t, e) {
                                var n = this.add("read", t, e), r = n.id;
                                return this.batch.read.push(n.id), "reading" === this.batch.mode || this.batch.scheduled ? r : (this.scheduleBatch(), r)
                            }, o.prototype.write = function (t, e) {
                                var n = this.add("write", t, e), r = this.batch.mode, i = n.id;
                                return this.batch.write.push(n.id), "writing" === r || "reading" === r || this.batch.scheduled ? i : (this.scheduleBatch(), i)
                            }, o.prototype.defer = function (t, e, n) {
                                "function" == typeof t && (n = e, e = t, t = 1);
                                var r = this, i = t - 1;
                                return this.schedule(i, function () {
                                    r.run({fn: e, ctx: n})
                                })
                            }, o.prototype.clear = function (t) {
                                if ("function" == typeof t) return this.clearFrame(t);
                                t = Number(t);
                                var e = this.batch.hash[t];
                                if (e) {
                                    var n = this.batch[e.type], r = n.indexOf(t);
                                    delete this.batch.hash[t], ~r && n.splice(r, 1)
                                }
                            }, o.prototype.clearFrame = function (t) {
                                var e = this.frames.indexOf(t);
                                ~e && this.frames.splice(e, 1)
                            }, o.prototype.scheduleBatch = function () {
                                var t = this;
                                this.schedule(0, function () {
                                    t.batch.scheduled = !1, t.runBatch()
                                }), this.batch.scheduled = !0
                            }, o.prototype.uniqueId = function () {
                                return ++this.lastId
                            }, o.prototype.flush = function (t) {
                                for (var e; e = t.shift();) this.run(this.batch.hash[e])
                            }, o.prototype.runBatch = function () {
                                try {
                                    this.batch.mode = "reading", this.flush(this.batch.read), this.batch.mode = "writing", this.flush(this.batch.write), this.batch.mode = null
                                } catch (t) {
                                    throw this.runBatch(), t
                                }
                            }, o.prototype.add = function (t, e, n) {
                                var r = this.uniqueId();
                                return this.batch.hash[r] = {id: r, fn: e, ctx: n, type: t}
                            }, o.prototype.run = function (t) {
                                var e = t.ctx || this, n = t.fn;
                                if (delete this.batch.hash[t.id], !this.onError) return n.call(e);
                                try {
                                    n.call(e)
                                } catch (t) {
                                    this.onError(t)
                                }
                            }, o.prototype.loop = function () {
                                var t, e = this, n = this.raf, r = !1;

                                function i() {
                                    var t = e.frames.shift();
                                    e.frames.length ? n(i) : e.looping = !1, t && t()
                                }

                                this.looping || (t = setTimeout(function () {
                                    r = !0, i()
                                }, 500), n(function () {
                                    r || (clearTimeout(t), i())
                                }), this.looping = !0)
                            }, o.prototype.schedule = function (t, e) {
                                return this.frames[t] ? this.schedule(t + 1, e) : (this.loop(), this.frames[t] = e)
                            };
                            var s = new o;
                            void 0 !== t && t.exports ? t.exports = s : void 0 === (r = function () {
                                return s
                            }.call(e, n, e, t)) || (t.exports = r)
                        }()
                    }, function (t, e, n) {
                        var r = n(48).Promise;
                        t.exports = r._asap
                    }, function (t, e, n) {
                        var r, i, o, s = n(4), a = n(1), u = n(30), c = n(20), d = n(2), l = n(6), f = n(55), h = n(34),
                            p = n(0), m = n(25), v = n(9).get("scribeCallback"),
                            g = Math.floor(1e3 * Math.random()) + "_", w = "rufous-frame-" + g + "-",
                            y = "rufous-form-" + g + "-", b = 0, _ = !1, E = new d;

                        function x() {
                            var t = o.createElement("form"), e = o.createElement("input"), n = o.createElement("input");
                            return b++, t.action = h.CLIENT_EVENT_ENDPOINT, t.method = "POST", t.target = w + b, t.id = y + b, e.type = "hidden", e.name = "dnt", e.value = c.enabled(), n.type = "hidden", n.name = "tfw_redirect", n.value = h.RUFOUS_REDIRECT, t.appendChild(e), t.appendChild(n), t
                        }

                        function T() {
                            var t = w + b;
                            return u({id: t, name: t, width: 0, height: 0, border: 0}, {display: "none"}, o.doc)
                        }

                        t.exports = {
                            clientEvent: function (t, e, n, i) {
                                (function (t, e) {
                                    var n = !p.isObject(t), r = !!e && !p.isObject(e), i = n || r;
                                    return i
                                })(t, e) || (v && v(arguments), E.promise.then(function () {
                                    !function (t, e) {
                                        var n, i, s;
                                        p.isObject(t) && p.isObject(e) && (f.log(t, e), s = h.flattenClientEventPayload(t, e), (n = r.firstChild).value = +(+n.value || s.dnt || 0), (i = o.createElement("input")).type = "hidden", i.name = "l", i.value = h.stringify(s), r.appendChild(i))
                                    }(h.formatClientEventNamespace(t), h.formatClientEventData(e, n, i))
                                }))
                            }, flush: function () {
                                return E.promise.then(function () {
                                    var t;
                                    return r.children.length <= 2 ? l.reject() : (t = l.all([o.doc.body.appendChild(r), o.doc.body.appendChild(i)]).then(function (t) {
                                        var e = t[0], n = t[1];
                                        return n.addEventListener("load", function () {
                                            !function (t, e) {
                                                return function () {
                                                    var n = t.parentNode;
                                                    n && (n.removeChild(t), n.removeChild(e))
                                                }
                                            }(e, n)()
                                        }), e.submit(), t
                                    }), r = x(), i = T(), t)
                                })
                            }, init: function () {
                                return _ ? E.promise : ((o = new m(a)).insert("rufous-sandbox", null, {display: "none"}, function (t) {
                                    s.body.appendChild(t)
                                }).then(function () {
                                    o.setTitle("Twitter analytics iframe"), r = x(), i = T(), E.resolve([r, i])
                                }), _ = !0, E.promise)
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(0);
                        t.exports = function t(e) {
                            var n = [];
                            return e.forEach(function (e) {
                                var i = r.isType("array", e) ? t(e) : [e];
                                n = n.concat(i)
                            }), n
                        }
                    }, function (t, e) {
                        t.exports = function (t) {
                            return t.filter(function (e, n) {
                                return t.indexOf(e) === n
                            })
                        }
                    }, function (t, e, n) {
                        var r = n(41), i = n(0), o = n(109);

                        function s() {
                            r.apply(this, arguments)
                        }

                        s.prototype = Object.create(r.prototype), i.aug(s.prototype, {factory: o}), t.exports = s
                    }, function (t, e, n) {
                        var r = n(22), i = n(0), o = n(7);
                        t.exports = {
                            before: function (t, e) {
                                return function () {
                                    var n, i = this, o = arguments;
                                    return n = e.apply(this, arguments), r.isPromise(n) ? n.then(function () {
                                        return t.apply(i, o)
                                    }) : t.apply(this, arguments)
                                }
                            }, after: function (t, e) {
                                return function () {
                                    var n, i = this, o = arguments;

                                    function s(t, e) {
                                        return r.isPromise(e) ? e.then(function () {
                                            return t
                                        }) : t
                                    }

                                    return n = t.apply(this, arguments), r.isPromise(n) ? n.then(function (t) {
                                        return s(t, e.apply(i, o))
                                    }) : s(n, e.apply(this, arguments))
                                }
                            }, around: function (t, e) {
                                return function () {
                                    var n = i.toRealArray(arguments);
                                    return n.unshift(o(t, this)), e.apply(this, n)
                                }
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(10), i = n(18), o = n(42), s = n(6), a = n(0);
                        t.exports = function () {
                            var t = o();

                            function e(e) {
                                t.apply(this, arguments), Object.defineProperty(this, "targetGlobal", {value: e})
                            }

                            return e.prototype = Object.create(t.prototype), a.aug(e.prototype, {
                                id: null,
                                initialized: !1,
                                width: 0,
                                height: 0,
                                sandboxEl: null,
                                insert: function () {
                                    return s.reject()
                                },
                                onResize: function () {
                                },
                                addClass: function (t) {
                                    var e = this.sandboxEl;
                                    return t = Array.isArray(t) ? t : [t], i.write(function () {
                                        t.forEach(function (t) {
                                            r.add(e, t)
                                        })
                                    })
                                },
                                removeClass: function (t) {
                                    var e = this.sandboxEl;
                                    return t = Array.isArray(t) ? t : [t], i.write(function () {
                                        t.forEach(function (t) {
                                            r.remove(e, t)
                                        })
                                    })
                                },
                                styleSelf: function (t) {
                                    var e = this;
                                    return i.write(function () {
                                        a.forIn(t, function (t, n) {
                                            e.sandboxEl.style[t] = n
                                        })
                                    })
                                }
                            }), e
                        }
                    }, function (t, e, n) {
                        var r = n(4), i = n(10), o = n(18), s = n(56), a = n(26), u = n(57), c = n(45), d = n(46),
                            l = n(30), f = n(12), h = n(47), p = n(2), m = n(6), v = n(0), g = n(9), w = n(23),
                            y = n(7), b = {allowfullscreen: "true"}, _ = {
                                position: "absolute",
                                visibility: "hidden",
                                display: "block",
                                width: "0px",
                                height: "0px",
                                padding: "0",
                                border: "none"
                            }, E = {position: "static", visibility: "visible"}, x = "SandboxRoot",
                            T = ".SandboxRoot { display: none; }", A = 50;

                        function S(t, e, n, r) {
                            return e = v.aug({id: t}, b, e), n = v.aug({}, _, n), l(e, n, r)
                        }

                        function R(t, e, n, i, s) {
                            var a = new p, u = w.generate(), c = S(t, e, n, s);
                            return g.set(["sandbox", u], function () {
                                var t = c.contentWindow.document;
                                o.write(function () {
                                    t.write("<!DOCTYPE html><html><head></head><body></body></html>")
                                }).then(function () {
                                    t.close(), a.resolve(c)
                                })
                            }), c.src = ["javascript:", 'document.write("");', "try { window.parent.document; }", 'catch (e) { document.domain="' + r.domain + '"; }', "window.parent." + g.fullPath(["sandbox", u]) + "();"].join(""), c.addEventListener("error", a.reject, !1), o.write(function () {
                                i.parentNode.replaceChild(c, i)
                            }), a.promise
                        }

                        t.exports = a.couple(n(58), function (t) {
                            t.overrideProperty("id", {
                                get: function () {
                                    return this.sandboxEl && this.sandboxEl.id
                                }
                            }), t.overrideProperty("initialized", {
                                get: function () {
                                    return !!this.win
                                }
                            }), t.overrideProperty("width", {
                                get: function () {
                                    return this._width
                                }
                            }), t.overrideProperty("height", {
                                get: function () {
                                    return this._height
                                }
                            }), t.overrideProperty("sandboxEl", {
                                get: function () {
                                    return this.iframeEl
                                }
                            }), t.defineProperty("iframeEl", {
                                get: function () {
                                    return this._iframe
                                }
                            }), t.defineProperty("rootEl", {
                                get: function () {
                                    return this.doc && this.doc.documentElement
                                }
                            }), t.defineProperty("widgetEl", {
                                get: function () {
                                    return this.doc && this.doc.body.firstElementChild
                                }
                            }), t.defineProperty("win", {
                                get: function () {
                                    return this.iframeEl && this.iframeEl.contentWindow
                                }
                            }), t.defineProperty("doc", {
                                get: function () {
                                    return this.win && this.win.document
                                }
                            }), t.define("_updateCachedDimensions", function () {
                                var t = this;
                                return o.read(function () {
                                    var e, n = h(t.sandboxEl);
                                    "visible" == t.sandboxEl.style.visibility ? t._width = n.width : (e = h(t.sandboxEl.parentElement).width, t._width = Math.min(n.width, e)), t._height = n.height
                                })
                            }), t.define("_setTargetToBlank", function () {
                                var t = this.createElement("base");
                                t.target = "_blank", this.doc.head.appendChild(t)
                            }), t.define("_didResize", function () {
                                var t = this, e = this._resizeHandlers.slice(0);
                                return this._updateCachedDimensions().then(function () {
                                    e.forEach(function (e) {
                                        e(t)
                                    })
                                })
                            }), t.define("setTitle", function (t) {
                                this.iframeEl.title = t
                            }), t.override("createElement", function (t) {
                                return this.doc.createElement(t)
                            }), t.override("createFragment", function () {
                                return this.doc.createDocumentFragment()
                            }), t.override("htmlToElement", function (t) {
                                var e;
                                return (e = this.createElement("div")).innerHTML = t, e.firstElementChild
                            }), t.override("hasSelectedText", function () {
                                return !!s.getSelectedText(this.win)
                            }), t.override("addRootClass", function (t) {
                                var e = this.rootEl;
                                return t = Array.isArray(t) ? t : [t], this.initialized ? o.write(function () {
                                    t.forEach(function (t) {
                                        i.add(e, t)
                                    })
                                }) : m.reject(new Error("sandbox not initialized"))
                            }), t.override("removeRootClass", function (t) {
                                var e = this.rootEl;
                                return t = Array.isArray(t) ? t : [t], this.initialized ? o.write(function () {
                                    t.forEach(function (t) {
                                        i.remove(e, t)
                                    })
                                }) : m.reject(new Error("sandbox not initialized"))
                            }), t.override("hasRootClass", function (t) {
                                return i.present(this.rootEl, t)
                            }), t.define("addStyleSheet", function (t, e) {
                                var n, r = new p;
                                return this.initialized ? ((n = this.createElement("link")).type = "text/css", n.rel = "stylesheet", n.href = t, n.addEventListener("load", r.resolve, !1), n.addEventListener("error", r.reject, !1), o.write(y(e, null, n)).then(function () {
                                    return u(t).then(r.resolve, r.reject), r.promise
                                })) : m.reject(new Error("sandbox not initialized"))
                            }), t.override("prependStyleSheet", function (t) {
                                var e = this.doc;
                                return this.addStyleSheet(t, function (t) {
                                    var n = e.head.firstElementChild;
                                    return n ? e.head.insertBefore(t, n) : e.head.appendChild(t)
                                })
                            }), t.override("appendStyleSheet", function (t) {
                                var e = this.doc;
                                return this.addStyleSheet(t, function (t) {
                                    return e.head.appendChild(t)
                                })
                            }), t.define("addCss", function (t, e) {
                                var n;
                                return c.inlineStyle() ? ((n = this.createElement("style")).type = "text/css", n.appendChild(this.doc.createTextNode(t)), o.write(y(e, null, n))) : (f.devError("CSP enabled; cannot embed inline styles"), m.resolve())
                            }), t.override("prependCss", function (t) {
                                var e = this.doc;
                                return this.addCss(t, function (t) {
                                    var n = e.head.firstElementChild;
                                    return n ? e.head.insertBefore(t, n) : e.head.appendChild(t)
                                })
                            }), t.override("appendCss", function (t) {
                                var e = this.doc;
                                return this.addCss(t, function (t) {
                                    return e.head.appendChild(t)
                                })
                            }), t.override("makeVisible", function () {
                                var t = this;
                                return this.styleSelf(E).then(function () {
                                    t._updateCachedDimensions()
                                })
                            }), t.override("injectWidgetEl", function (t) {
                                var e = this;
                                return this.initialized ? this.widgetEl ? m.reject(new Error("widget already injected")) : o.write(function () {
                                    e.doc.body.appendChild(t)
                                }) : m.reject(new Error("sandbox not initialized"))
                            }), t.override("matchHeightToContent", function () {
                                var t, e = this;
                                return o.read(function () {
                                    t = e.widgetEl ? h(e.widgetEl).height : 0
                                }), o.write(function () {
                                    e.sandboxEl.style.height = t + "px"
                                }).then(function () {
                                    return e._updateCachedDimensions()
                                })
                            }), t.override("matchWidthToContent", function () {
                                var t, e = this;
                                return o.read(function () {
                                    t = e.widgetEl ? h(e.widgetEl).width : 0
                                }), o.write(function () {
                                    e.sandboxEl.style.width = t + "px"
                                }).then(function () {
                                    return e._updateCachedDimensions()
                                })
                            }), t.after("initialize", function () {
                                this._iframe = null, this._width = this._height = 0, this._resizeHandlers = []
                            }), t.override("insert", function (t, e, n, r) {
                                var i = this, s = new p, a = this.targetGlobal.document, u = S(t, e, n, a);
                                return o.write(y(r, null, u)), u.addEventListener("load", function () {
                                    (function (t) {
                                        try {
                                            t.contentWindow.document
                                        } catch (t) {
                                            return m.reject(t)
                                        }
                                        return m.resolve(t)
                                    })(u).then(null, y(R, null, t, e, n, u, a)).then(s.resolve, s.reject)
                                }, !1), u.addEventListener("error", s.reject, !1), s.promise.then(function (t) {
                                    var e = d(i._didResize, A, i);
                                    return i._iframe = t, i.win.addEventListener("resize", e, !1), m.all([i._setTargetToBlank(), i.addRootClass(x), i.prependCss(T)])
                                })
                            }), t.override("onResize", function (t) {
                                this._resizeHandlers.push(t)
                            }), t.after("styleSelf", function () {
                                return this._updateCachedDimensions()
                            })
                        })
                    }, function (t, e) {
                        t.exports = function () {
                            throw new Error("unimplemented method")
                        }
                    }, function (t, e, n) {
                        var r = n(2), i = n(7), o = 100, s = 3e3;

                        function a(t, e) {
                            this._inputsQueue = [], this._task = t, this._isPaused = !1, this._flushDelay = e && e.flushDelay || o, this._pauseLength = e && e.pauseLength || s, this._flushTimeout = void 0
                        }

                        a.prototype.add = function (t) {
                            var e = new r;
                            return this._inputsQueue.push({
                                input: t,
                                taskDoneDeferred: e
                            }), this._scheduleFlush(), e.promise
                        }, a.prototype._scheduleFlush = function () {
                            this._isPaused || (clearTimeout(this._flushTimeout), this._flushTimeout = setTimeout(i(this._flush, this), this._flushDelay))
                        }, a.prototype._flush = function () {
                            try {
                                this._task.call(null, this._inputsQueue)
                            } catch (t) {
                                this._inputsQueue.forEach(function (e) {
                                    e.taskDoneDeferred.reject(t)
                                })
                            }
                            this._inputsQueue = [], this._flushTimeout = void 0
                        }, a.prototype.pause = function (t) {
                            clearTimeout(this._flushTimeout), this._isPaused = !0, !t && this._pauseLength && setTimeout(i(this.resume, this), this._pauseLength)
                        }, a.prototype.resume = function () {
                            this._isPaused = !1, this._scheduleFlush()
                        }, t.exports = a
                    }, function (t, e, n) {
                        var r, i = n(72), o = n(30), s = n(2), a = n(4), u = n(19), c = n(21), d = n(31), l = n(8),
                            f = n(12), h = n(114), p = n(59), m = n(9), v = n(11), g = n(115), w = n(3), y = n(0),
                            b = n(1), _ = p(function () {
                                return new s
                            });

                        function E(t) {
                            var e = t || {should_obtain_cookie_consent: !0, experiments: {}};
                            return new g(e.should_obtain_cookie_consent, e.experiments)
                        }

                        t.exports = {
                            load: function () {
                                var t, e, n, s;
                                if (c.ie9() || c.ie10() || "http:" !== l.protocol && "https:" !== l.protocol) return f.devError("Using default settings due to unsupported browser or protocol."), r = E(), void _().resolve();
                                t = {origin: l.origin}, u.settings().indexOf("localhost") > -1 && (t.localSettings = !0), e = v.url(i.resourceBaseUrl + i.widgetIframeHtmlPath, t), n = function (t) {
                                    var n;
                                    if (e.substr(0, t.origin.length) === t.origin && w.isTwitterURL(t.origin)) try {
                                        (n = "string" == typeof t.data ? d.parse(t.data) : t.data).namespace === h.settings && (r = E(n.settings), _().resolve())
                                    } catch (t) {
                                        f.devError(t)
                                    }
                                }, b.addEventListener("message", n), s = o({
                                    src: e,
                                    title: "Twitter settings iframe"
                                }, {display: "none"}), a.body.appendChild(s)
                            }, settingsLoaded: function () {
                                var t, e, n;
                                return t = new s, e = m.get("experimentOverride"), _().promise.then(function () {
                                    e && e.name && e.assignment && ((n = {})[e.name] = {bucket: e.assignment}, r.experiments = y.aug(r.experiments, n)), t.resolve(r)
                                }).catch(function (e) {
                                    t.reject(e)
                                }), t.promise
                            }
                        }
                    }, function (t, e) {
                        t.exports = {settings: "twttr.settings"}
                    }, function (t, e) {
                        t.exports = function (t, e) {
                            this.shouldObtainCookieConsent = t, this.experiments = e || {}
                        }
                    }, function (t, e) {
                        t.exports = function (t) {
                            return t.split("").map(function (t) {
                                return t.charCodeAt(0).toString(16)
                            }).join("")
                        }
                    }, function (t, e, n) {
                        t.exports = [n(118), n(123), n(131), n(133), n(135), n(149), n(152)]
                    }, function (t, e, n) {
                        var r = n(11), i = n(5), o = n(0), s = n(13), a = n(14)(), u = n(60), c = "a.twitter-dm-button";
                        t.exports = function (t) {
                            return a(t, c).map(function (t) {
                                return u(function (t) {
                                    var e = t.getAttribute("data-show-screen-name"), n = s(t),
                                        a = t.getAttribute("href"), u = t.getAttribute("data-screen-name"),
                                        c = e ? i.asBoolean(e) : null, d = t.getAttribute("data-size"),
                                        l = r.decodeURL(a), f = l.recipient_id,
                                        h = t.getAttribute("data-text") || l.text,
                                        p = t.getAttribute("data-welcome-message-id") || l.welcomeMessageId;
                                    return o.aug(n, {
                                        screenName: u,
                                        showScreenName: c,
                                        size: d,
                                        text: h,
                                        userId: f,
                                        welcomeMessageId: p
                                    })
                                }(t), t.parentNode, t)
                            })
                        }
                    }, function (t, e, n) {
                        var r = n(0);
                        t.exports = function t(e) {
                            var n;
                            if (e) return n = e.lang || e.getAttribute("data-lang"), r.isType("string", n) ? n : t(e.parentElement)
                        }
                    }, function (t, e, n) {
                        var r = n(2);
                        t.exports = function (t, e) {
                            var i = new r;
                            return n.e(2).then(function (r) {
                                var o;
                                try {
                                    o = n(86), i.resolve(new o(t, e))
                                } catch (t) {
                                    i.reject(t)
                                }
                            }.bind(null, n)).catch(function (t) {
                                i.reject(t)
                            }), i.promise
                        }
                    }, function (t, e, n) {
                        var r = n(122), i = n(1), o = n(10), s = n(36), a = n(18), u = n(56), c = n(26), d = n(57),
                            l = n(45), f = n(47), h = n(7), p = n(46), m = n(6), v = n(0), g = 50, w = {
                                position: "absolute",
                                visibility: "hidden",
                                display: "block",
                                transform: "rotate(0deg)"
                            }, y = {position: "static", visibility: "visible"}, b = "twitter-widget", _ = "open",
                            E = "SandboxRoot", x = ".SandboxRoot { display: none; max-height: 10000px; }";
                        t.exports = c.couple(n(58), function (t) {
                            t.defineStatic("isSupported", function () {
                                return !!i.HTMLElement.prototype.attachShadow && l.inlineStyle()
                            }), t.overrideProperty("id", {
                                get: function () {
                                    return this.sandboxEl && this.sandboxEl.id
                                }
                            }), t.overrideProperty("initialized", {
                                get: function () {
                                    return !!this._shadowHost
                                }
                            }), t.overrideProperty("width", {
                                get: function () {
                                    return this._width
                                }
                            }), t.overrideProperty("height", {
                                get: function () {
                                    return this._height
                                }
                            }), t.overrideProperty("sandboxEl", {
                                get: function () {
                                    return this._shadowHost
                                }
                            }), t.define("_updateCachedDimensions", function () {
                                var t = this;
                                return a.read(function () {
                                    var e, n = f(t.sandboxEl);
                                    "visible" == t.sandboxEl.style.visibility ? t._width = n.width : (e = f(t.sandboxEl.parentElement).width, t._width = Math.min(n.width, e)), t._height = n.height
                                })
                            }), t.define("_didResize", function () {
                                var t = this, e = this._resizeHandlers.slice(0);
                                return this._updateCachedDimensions().then(function () {
                                    e.forEach(function (e) {
                                        e(t)
                                    })
                                })
                            }), t.override("createElement", function (t) {
                                return this.targetGlobal.document.createElement(t)
                            }), t.override("createFragment", function () {
                                return this.targetGlobal.document.createDocumentFragment()
                            }), t.override("htmlToElement", function (t) {
                                var e;
                                return (e = this.createElement("div")).innerHTML = t, e.firstElementChild
                            }), t.override("hasSelectedText", function () {
                                return !!u.getSelectedText(this.targetGlobal)
                            }), t.override("addRootClass", function (t) {
                                var e = this._shadowRootBody;
                                return t = Array.isArray(t) ? t : [t], this.initialized ? a.write(function () {
                                    t.forEach(function (t) {
                                        o.add(e, t)
                                    })
                                }) : m.reject(new Error("sandbox not initialized"))
                            }), t.override("removeRootClass", function (t) {
                                var e = this._shadowRootBody;
                                return t = Array.isArray(t) ? t : [t], this.initialized ? a.write(function () {
                                    t.forEach(function (t) {
                                        o.remove(e, t)
                                    })
                                }) : m.reject(new Error("sandbox not initialized"))
                            }), t.override("hasRootClass", function (t) {
                                return o.present(this._shadowRootBody, t)
                            }), t.override("addStyleSheet", function (t, e) {
                                return this.addCss('@import url("' + t + '");', e).then(function () {
                                    return d(t)
                                })
                            }), t.override("prependStyleSheet", function (t) {
                                var e = this._shadowRoot;
                                return this.addStyleSheet(t, function (t) {
                                    var n = e.firstElementChild;
                                    return n ? e.insertBefore(t, n) : e.appendChild(t)
                                })
                            }), t.override("appendStyleSheet", function (t) {
                                var e = this._shadowRoot;
                                return this.addStyleSheet(t, function (t) {
                                    return e.appendChild(t)
                                })
                            }), t.override("addCss", function (t, e) {
                                var n;
                                return this.initialized ? l.inlineStyle() ? ((n = this.createElement("style")).type = "text/css", n.appendChild(this.targetGlobal.document.createTextNode(t)), a.write(h(e, null, n))) : m.resolve() : m.reject(new Error("sandbox not initialized"))
                            }), t.override("prependCss", function (t) {
                                var e = this._shadowRoot;
                                return this.addCss(t, function (t) {
                                    var n = e.firstElementChild;
                                    return n ? e.insertBefore(t, n) : e.appendChild(t)
                                })
                            }), t.override("appendCss", function (t) {
                                var e = this._shadowRoot;
                                return this.addCss(t, function (t) {
                                    return e.appendChild(t)
                                })
                            }), t.override("makeVisible", function () {
                                return this.styleSelf(y)
                            }), t.override("injectWidgetEl", function (t) {
                                var e = this;
                                return this.initialized ? this._shadowRootBody.firstElementChild ? m.reject(new Error("widget already injected")) : a.write(function () {
                                    e._shadowRootBody.appendChild(t)
                                }).then(function () {
                                    return e._updateCachedDimensions()
                                }).then(function () {
                                    var t = p(e._didResize, g, e);
                                    new r(e._shadowRootBody, t)
                                }) : m.reject(new Error("sandbox not initialized"))
                            }), t.override("matchHeightToContent", function () {
                                return m.resolve()
                            }), t.override("matchWidthToContent", function () {
                                return m.resolve()
                            }), t.override("insert", function (t, e, n, r) {
                                var i = this.targetGlobal.document, o = this._shadowHost = i.createElement(b),
                                    u = this._shadowRoot = o.attachShadow({mode: _}),
                                    c = this._shadowRootBody = i.createElement("div");
                                return v.forIn(e || {}, function (t, e) {
                                    o.setAttribute(t, e)
                                }), o.id = t, u.appendChild(c), s.delegate(c, "click", "A", function (t, e) {
                                    e.hasAttribute("target") || e.setAttribute("target", "_blank")
                                }), m.all([this.styleSelf(w), this.addRootClass(E), this.prependCss(x), a.write(r.bind(null, o))])
                            }), t.override("onResize", function (t) {
                                this._resizeHandlers.push(t)
                            }), t.after("initialize", function () {
                                this._shadowHost = this._shadowRoot = this._shadowRootBody = null, this._width = this._height = 0, this._resizeHandlers = []
                            }), t.after("styleSelf", function () {
                                return this._updateCachedDimensions()
                            })
                        })
                    }, function (t, e) {
                        var n;
                        (n = function (t, e) {
                            function r(t, e) {
                                if (t.resizedAttached) {
                                    if (t.resizedAttached) return void t.resizedAttached.add(e)
                                } else t.resizedAttached = new function () {
                                    var t, e;
                                    this.q = [], this.add = function (t) {
                                        this.q.push(t)
                                    }, this.call = function () {
                                        for (t = 0, e = this.q.length; t < e; t++) this.q[t].call()
                                    }
                                }, t.resizedAttached.add(e);
                                t.resizeSensor = document.createElement("div"), t.resizeSensor.className = "resize-sensor";
                                var n = "position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;",
                                    r = "position: absolute; left: 0; top: 0; transition: 0s;";
                                t.resizeSensor.style.cssText = n, t.resizeSensor.innerHTML = '<div class="resize-sensor-expand" style="' + n + '"><div style="' + r + '"></div></div><div class="resize-sensor-shrink" style="' + n + '"><div style="' + r + ' width: 200%; height: 200%"></div></div>', t.appendChild(t.resizeSensor), {
                                    fixed: 1,
                                    absolute: 1
                                }[function (t, e) {
                                    return t.currentStyle ? t.currentStyle[e] : window.getComputedStyle ? window.getComputedStyle(t, null).getPropertyValue(e) : t.style[e]
                                }(t, "position")] || (t.style.position = "relative");
                                var i, o, s = t.resizeSensor.childNodes[0], a = s.childNodes[0],
                                    u = t.resizeSensor.childNodes[1], c = (u.childNodes[0], function () {
                                        a.style.width = s.offsetWidth + 10 + "px", a.style.height = s.offsetHeight + 10 + "px", s.scrollLeft = s.scrollWidth, s.scrollTop = s.scrollHeight, u.scrollLeft = u.scrollWidth, u.scrollTop = u.scrollHeight, i = t.offsetWidth, o = t.offsetHeight
                                    });
                                c();
                                var d = function (t, e, n) {
                                    t.attachEvent ? t.attachEvent("on" + e, n) : t.addEventListener(e, n)
                                }, l = function () {
                                    t.offsetWidth == i && t.offsetHeight == o || t.resizedAttached && t.resizedAttached.call(), c()
                                };
                                d(s, "scroll", l), d(u, "scroll", l)
                            }

                            var i = Object.prototype.toString.call(t),
                                o = "[object Array]" === i || "[object NodeList]" === i || "[object HTMLCollection]" === i || "undefined" != typeof jQuery && t instanceof jQuery || "undefined" != typeof Elements && t instanceof Elements;
                            if (o) for (var s = 0, a = t.length; s < a; s++) r(t[s], e); else r(t, e);
                            this.detach = function () {
                                if (o) for (var e = 0, r = t.length; e < r; e++) n.detach(t[e]); else n.detach(t)
                            }
                        }).detach = function (t) {
                            t.resizeSensor && (t.removeChild(t.resizeSensor), delete t.resizeSensor, delete t.resizedAttached)
                        }, void 0 !== t && void 0 !== t.exports ? t.exports = n : window.ResizeSensor = n
                    }, function (t, e, n) {
                        var r = n(3), i = n(0), o = n(13), s = n(14)(), a = n(63), u = n(5),
                            c = "a.twitter-follow-button";
                        t.exports = function (t) {
                            return s(t, c).map(function (t) {
                                return a(function (t) {
                                    var e = o(t), n = {
                                        screenName: r.screenName(t.href),
                                        showScreenName: "false" !== t.getAttribute("data-show-screen-name"),
                                        showCount: "false" !== t.getAttribute("data-show-count"),
                                        size: t.getAttribute("data-size"),
                                        count: t.getAttribute("data-count"),
                                        preview: t.getAttribute("data-preview")
                                    };
                                    return i.forIn(n, function (t, n) {
                                        var r = e[t];
                                        e[t] = u.hasValue(r) ? r : n
                                    }), e.screenName = e.screenName || e.screen_name, e
                                }(t), t.parentNode, t)
                            })
                        }
                    }, function (t, e, n) {
                        var r = n(2);
                        t.exports = function (t, e) {
                            var i = new r;
                            return n.e(3).then(function (r) {
                                var o;
                                try {
                                    o = n(87), i.resolve(new o(t, e))
                                } catch (t) {
                                    i.reject(t)
                                }
                            }.bind(null, n)).catch(function (t) {
                                i.reject(t)
                            }), i.promise
                        }
                    }, function (t, e, n) {
                        var r = n(18), i = n(126), o = n(59), s = n(30), a = n(2), u = n(6), c = n(7), d = n(0),
                            l = {position: "absolute", visibility: "hidden", width: "0px", height: "0px"},
                            f = {position: "static", visibility: "visible"}, h = {};
                        i(function (t, e, n) {
                            var r = h[t];
                            if (r) return e = e || 1, n = n || 1, r.styleSelf({
                                width: e + "px",
                                height: n + "px"
                            }).then(function () {
                                r.didResize()
                            })
                        }), t.exports = function (t) {
                            t.overrideProperty("id", {
                                get: function () {
                                    return this.sandboxEl && this.sandboxEl.id
                                }
                            }), t.overrideProperty("initialized", {
                                get: function () {
                                    return !!this.iframeEl
                                }
                            }), t.overrideProperty("width", {
                                get: function () {
                                    return this._width
                                }
                            }), t.overrideProperty("height", {
                                get: function () {
                                    return this._height
                                }
                            }), t.overrideProperty("sandboxEl", {
                                get: function () {
                                    return this.iframeEl
                                }
                            }), t.defineProperty("iframeEl", {
                                get: function () {
                                    return this._iframe
                                }
                            }), t.define("updateCachedDimensions", function () {
                                var t = this;
                                return this.initialized ? r.read(function () {
                                    t._width = t.sandboxEl.offsetWidth, t._height = t.sandboxEl.offsetHeight
                                }) : u.resolve()
                            }), t.define("setTitle", function (t) {
                                this.iframeEl.title = t
                            }), t.define("makeVisible", function () {
                                return this.styleSelf(f)
                            }), t.define("didResize", function () {
                                var t = this, e = t._resizeHandlers.length > 0;
                                return this.updateCachedDimensions().then(function () {
                                    e && t._resizeHandlers.forEach(function (e) {
                                        e(t)
                                    })
                                })
                            }), t.define("loadDocument", function (t) {
                                var e = new a;
                                return this.initialized ? this.iframeEl.src ? u.reject(new Error("widget already loaded")) : (this.iframeEl.addEventListener("load", e.resolve, !1), this.iframeEl.addEventListener("error", e.reject, !1), this.iframeEl.src = t, e.promise) : u.reject(new Error("sandbox not initialized"))
                            }), t.after("initialize", function () {
                                this._iframe = null, this._width = this._height = 0, this._resizeHandlers = []
                            }), t.override("insert", function (t, e, n, i) {
                                var a = this;
                                return e = d.aug({id: t}, e), n = d.aug({}, l, n), this._iframe = s(e, n), h[t] = this, this.onResize(o(function () {
                                    a.makeVisible()
                                })), r.write(c(i, null, this._iframe))
                            }), t.override("onResize", function (t) {
                                this._resizeHandlers.push(t)
                            }), t.after("styleSelf", function () {
                                return this.updateCachedDimensions()
                            })
                        }
                    }, function (t, e, n) {
                        var r = n(1), i = n(127), o = n(129), s = n(24), a = n(5), u = n(130);
                        t.exports = function (t) {
                            function e(t, e) {
                                var n = u(this);
                                s.trigger(t, {target: n, region: e, type: t, data: {}})
                            }

                            function n(e) {
                                var n = u(this), r = n && n.id, i = a.asInt(e.width), o = a.asInt(e.height);
                                r && void 0 !== i && void 0 !== o && t(r, i, o)
                            }

                            (new i).attachReceiver(new o.Receiver(r, "twttr.button")).bind("twttr.private.trigger", e).bind("twttr.private.resizeButton", n), (new i).attachReceiver(new o.Receiver(r, "twttr.embed")).bind("twttr.private.trigger", e).bind("twttr.private.rendered", n).bind("twttr.private.resize", n)
                        }
                    }, function (t, e, n) {
                        var r = n(31), i = n(128), o = n(0), s = n(6), a = n(22), u = "2.0";

                        function c(t) {
                            this.registry = t || {}
                        }

                        function d(t) {
                            var e, n;
                            return e = o.isType("string", t), n = o.isType("number", t), e || n || null === t
                        }

                        function l(t, e) {
                            return {jsonrpc: u, id: d(t) ? t : null, error: e}
                        }

                        c.prototype._invoke = function (t, e) {
                            var n, r, i;
                            n = this.registry[t.method], r = t.params || [], r = o.isType("array", r) ? r : [r];
                            try {
                                i = n.apply(e.source || null, r)
                            } catch (t) {
                                i = s.reject(t.message)
                            }
                            return a.isPromise(i) ? i : s.resolve(i)
                        }, c.prototype._processRequest = function (t, e) {
                            var n, r;
                            return function (t) {
                                var e, n, r;
                                return !!o.isObject(t) && (e = t.jsonrpc === u, n = o.isType("string", t.method), r = !("id" in t) || d(t.id), e && n && r)
                            }(t) ? (n = "params" in t && (r = t.params, !o.isObject(r) || o.isType("function", r)) ? s.resolve(l(t.id, i.INVALID_PARAMS)) : this.registry[t.method] ? this._invoke(t, {source: e}).then(function (e) {
                                return n = t.id, {jsonrpc: u, id: n, result: e};
                                var n
                            }, function () {
                                return l(t.id, i.INTERNAL_ERROR)
                            }) : s.resolve(l(t.id, i.METHOD_NOT_FOUND)), null != t.id ? n : s.resolve()) : s.resolve(l(t.id, i.INVALID_REQUEST))
                        }, c.prototype.attachReceiver = function (t) {
                            return t.attachTo(this), this
                        }, c.prototype.bind = function (t, e) {
                            return this.registry[t] = e, this
                        }, c.prototype.receive = function (t, e) {
                            var n, a, u, c = this;
                            try {
                                u = t, t = o.isType("string", u) ? r.parse(u) : u
                            } catch (t) {
                                return s.resolve(l(null, i.PARSE_ERROR))
                            }
                            return e = e || null, a = ((n = o.isType("array", t)) ? t : [t]).map(function (t) {
                                return c._processRequest(t, e)
                            }), n ? function (t) {
                                return s.all(t).then(function (t) {
                                    return (t = t.filter(function (t) {
                                        return void 0 !== t
                                    })).length ? t : void 0
                                })
                            }(a) : a[0]
                        }, t.exports = c
                    }, function (t) {
                        t.exports = {
                            PARSE_ERROR: {code: -32700, message: "Parse error"},
                            INVALID_REQUEST: {code: -32600, message: "Invalid Request"},
                            INVALID_PARAMS: {code: -32602, message: "Invalid params"},
                            METHOD_NOT_FOUND: {code: -32601, message: "Method not found"},
                            INTERNAL_ERROR: {code: -32603, message: "Internal error"}
                        }
                    }, function (t, e, n) {
                        var r = n(8), i = n(1), o = n(31), s = n(2), a = n(21), u = n(0), c = n(3), d = n(7),
                            l = a.ie9();

                        function f(t, e, n) {
                            var r;
                            t && t.postMessage && (l ? r = (n || "") + o.stringify(e) : n ? (r = {})[n] = e : r = e, t.postMessage(r, "*"))
                        }

                        function h(t) {
                            return u.isType("string", t) ? t : "JSONRPC"
                        }

                        function p(t, e) {
                            return e ? u.isType("string", t) && 0 === t.indexOf(e) ? t.substring(e.length) : t && t[e] ? t[e] : void 0 : t
                        }

                        function m(t, e) {
                            var n = t.document;
                            this.filter = h(e), this.server = null, this.isTwitterFrame = c.isTwitterURL(n.location.href), t.addEventListener("message", d(this._onMessage, this), !1)
                        }

                        function v(t, e) {
                            this.pending = {}, this.target = t, this.isTwitterHost = c.isTwitterURL(r.href), this.filter = h(e), i.addEventListener("message", d(this._onMessage, this), !1)
                        }

                        u.aug(m.prototype, {
                            _onMessage: function (t) {
                                var e, n = this;
                                this.server && (this.isTwitterFrame && !c.isTwitterURL(t.origin) || (e = p(t.data, this.filter)) && this.server.receive(e, t.source).then(function (e) {
                                    e && f(t.source, e, n.filter)
                                }))
                            }, attachTo: function (t) {
                                this.server = t
                            }, detach: function () {
                                this.server = null
                            }
                        }), u.aug(v.prototype, {
                            _processResponse: function (t) {
                                var e = this.pending[t.id];
                                e && (e.resolve(t), delete this.pending[t.id])
                            }, _onMessage: function (t) {
                                var e;
                                if ((!this.isTwitterHost || c.isTwitterURL(t.origin)) && (e = p(t.data, this.filter))) {
                                    if (u.isType("string", e)) try {
                                        e = o.parse(e)
                                    } catch (t) {
                                        return
                                    }
                                    (e = u.isType("array", e) ? e : [e]).forEach(d(this._processResponse, this))
                                }
                            }, send: function (t) {
                                var e = new s;
                                return t.id ? this.pending[t.id] = e : e.resolve(), f(this.target, t, this.filter), e.promise
                            }
                        }), t.exports = {
                            Receiver: m, Dispatcher: v, _stringifyPayload: function (t) {
                                return arguments.length > 0 && (l = !!t), l
                            }
                        }
                    }, function (t, e, n) {
                        var r = n(4);
                        t.exports = function (t) {
                            for (var e, n = r.getElementsByTagName("iframe"), i = 0; n[i]; i++) if ((e = n[i]).contentWindow === t) return e
                        }
                    }, function (t, e, n) {
                        var r = n(5), i = n(0), o = n(3), s = n(13), a = n(14)(), u = n(64), c = "a.twitter-moment";
                        t.exports = function (t) {
                            return a(t, c).map(function (t) {
                                return u(function (t) {
                                    var e = s(t), n = {
                                        momentId: o.momentId(t.href),
                                        chrome: t.getAttribute("data-chrome"),
                                        limit: t.getAttribute("data-limit")
                                    };
                                    return i.forIn(n, function (t, n) {
                                        var i = e[t];
                                        e[t] = r.hasValue(i) ? i : n
                                    }), e
                                }(t), t.parentNode, t)
                            })
                        }
                    }, function (t, e, n) {
                        var r = n(2);
                        t.exports = function (t, e) {
                            var i = new r;
                            return Promise.all([n.e(0), n.e(4)]).then(function (r) {
                                var o;
                                try {
                                    o = n(88), i.resolve(new o(t, e))
                                } catch (t) {
                                    i.reject(t)
                                }
                            }.bind(null, n)).catch(function (t) {
                                i.reject(t)
                            }), i.promise
                        }
                    }, function (t, e, n) {
                        var r = n(0), i = n(13), o = n(14)(), s = n(65), a = "a.periscope-on-air",
                            u = /^https?:\/\/(?:www\.)?(?:periscope|pscp)\.tv\/@?([a-zA-Z0-9_]+)\/?$/i;
                        t.exports = function (t) {
                            return o(t, a).map(function (t) {
                                return s(function (t) {
                                    var e = i(t), n = t.getAttribute("href"), o = t.getAttribute("data-size"),
                                        s = u.exec(n)[1];
                                    return r.aug(e, {username: s, size: o})
                                }(t), t.parentNode, t)
                            })
                        }
                    }, function (t, e, n) {
                        var r = n(2);
                        t.exports = function (t, e) {
                            var i = new r;
                            return n.e(5).then(function (r) {
                                var o;
                                try {
                                    o = n(89), i.resolve(new o(t, e))
                                } catch (t) {
                                    i.reject(t)
                                }
                            }.bind(null, n)).catch(function (t) {
                                i.reject(t)
                            }), i.promise
                        }
                    }, function (t, e, n) {
                        var r = n(5), i = n(0), o = n(66), s = n(13), a = n(14)(), u = n(67), c = n(3), d = n(12),
                            l = "a.twitter-timeline,div.twitter-timeline,a.twitter-grid",
                            f = "Embedded Search timelines have been deprecated. See https://twittercommunity.com/t/deprecating-widget-settings/102295.",
                            h = "You may have been affected by an update to settings in embedded timelines. See https://twittercommunity.com/t/deprecating-widget-settings/102295.",
                            p = "Embedded grids have been deprecated and will now render as timelines. Please update your embed code to use the twitter-timeline class. More info: https://twittercommunity.com/t/update-on-the-embedded-grid-display-type/119564.";
                        t.exports = function (t) {
                            return a(t, l).map(function (t) {
                                return u(function (t) {
                                    var e = s(t), n = t.getAttribute("data-show-replies"), a = {
                                        isPreconfigured: !!t.getAttribute("data-widget-id"),
                                        chrome: t.getAttribute("data-chrome"),
                                        tweetLimit: t.getAttribute("data-tweet-limit") || t.getAttribute("data-limit"),
                                        ariaLive: t.getAttribute("data-aria-polite"),
                                        theme: t.getAttribute("data-theme"),
                                        linkColor: t.getAttribute("data-link-color"),
                                        borderColor: t.getAttribute("data-border-color"),
                                        showReplies: n ? r.asBoolean(n) : null,
                                        profileScreenName: t.getAttribute("data-screen-name"),
                                        profileUserId: t.getAttribute("data-user-id"),
                                        favoritesScreenName: t.getAttribute("data-favorites-screen-name"),
                                        favoritesUserId: t.getAttribute("data-favorites-user-id"),
                                        likesScreenName: t.getAttribute("data-likes-screen-name"),
                                        likesUserId: t.getAttribute("data-likes-user-id"),
                                        listOwnerScreenName: t.getAttribute("data-list-owner-screen-name"),
                                        listOwnerUserId: t.getAttribute("data-list-owner-id"),
                                        listId: t.getAttribute("data-list-id"),
                                        listSlug: t.getAttribute("data-list-slug"),
                                        customTimelineId: t.getAttribute("data-custom-timeline-id"),
                                        staticContent: t.getAttribute("data-static-content"),
                                        url: t.href
                                    };
                                    return a.isPreconfigured && (c.isSearchUrl(a.url) ? d.publicError(f, t) : d.publicLog(h, t)), "twitter-grid" === t.className && d.publicLog(p, t), (a = i.aug(a, e)).dataSource = o(a), a.id = a.dataSource && a.dataSource.id, a
                                }(t), t.parentNode, t)
                            })
                        }
                    }, function (t, e, n) {
                        var r = n(27);
                        t.exports = r.build([n(28), n(139)])
                    }, function (t, e, n) {
                        var r = n(0), i = n(138);
                        t.exports = function (t) {
                            return "en" === t || r.contains(i, t)
                        }
                    }, function (t, e) {
                        t.exports = ["hi", "zh-cn", "fr", "zh-tw", "msa", "fil", "fi", "sv", "pl", "ja", "ko", "de", "it", "pt", "es", "ru", "id", "tr", "da", "no", "nl", "hu", "fa", "ar", "ur", "he", "th", "cs", "uk", "vi", "ro", "bn", "el", "en-gb", "gu", "kn", "mr", "ta", "bg", "ca", "hr", "sr", "sk"]
                    }, function (t, e, n) {
                        var r = n(3), i = n(0), o = n(19), s = "collection:";

                        function a(t, e) {
                            return r.collectionId(t) || e
                        }

                        t.exports = function (t) {
                            t.params({id: {}, url: {}}), t.overrideProperty("id", {
                                get: function () {
                                    var t = a(this.params.url, this.params.id);
                                    return s + t
                                }
                            }), t.overrideProperty("endpoint", {
                                get: function () {
                                    return o.timeline(["collection"])
                                }
                            }), t.around("queryParams", function (t) {
                                return i.aug(t(), {collection_id: a(this.params.url, this.params.id)})
                            }), t.before("initialize", function () {
                                if (!a(this.params.url, this.params.id)) throw new Error("one of url or id is required")
                            })
                        }
                    }, function (t, e, n) {
                        var r = n(27);
                        t.exports = r.build([n(28), n(141)])
                    }, function (t, e, n) {
                        var r = n(3), i = n(0), o = n(19), s = "event:";

                        function a(t, e) {
                            return r.eventId(t) || e
                        }

                        t.exports = function (t) {
                            t.params({id: {}, url: {}}), t.overrideProperty("id", {
                                get: function () {
                                    var t = a(this.params.url, this.params.id);
                                    return s + t
                                }
                            }), t.overrideProperty("endpoint", {
                                get: function () {
                                    return o.timeline(["event"])
                                }
                            }), t.around("queryParams", function (t) {
                                return i.aug(t(), {event_id: a(this.params.url, this.params.id)})
                            }), t.before("initialize", function () {
                                if (!a(this.params.url, this.params.id)) throw new Error("one of url or id is required")
                            })
                        }
                    }, function (t, e, n) {
                        var r = n(27);
                        t.exports = r.build([n(28), n(143)])
                    }, function (t, e, n) {
                        var r = n(3), i = n(0), o = n(19), s = "likes:";

                        function a(t) {
                            return r.likesScreenName(t.url) || t.screenName
                        }

                        t.exports = function (t) {
                            t.params({
                                screenName: {},
                                userId: {},
                                url: {}
                            }), t.overrideProperty("id", {
                                get: function () {
                                    var t = a(this.params) || this.params.userId;
                                    return s + t
                                }
                            }), t.overrideProperty("endpoint", {
                                get: function () {
                                    return o.timeline(["likes"])
                                }
                            }), t.define("_getLikesQueryParam", function () {
                                var t = a(this.params);
                                return t ? {screen_name: t} : {user_id: this.params.userId}
                            }), t.around("queryParams", function (t) {
                                return i.aug(t(), this._getLikesQueryParam())
                            }), t.before("initialize", function () {
                                if (!a(this.params) && !this.params.userId) throw new Error("screen name or user id is required")
                            })
                        }
                    }, function (t, e, n) {
                        var r = n(27);
                        t.exports = r.build([n(28), n(145)])
                    }, function (t, e, n) {
                        var r = n(3), i = n(0), o = n(19), s = "list:";

                        function a(t) {
                            var e = r.listScreenNameAndSlug(t.url) || t;
                            return i.compact({
                                screen_name: e.ownerScreenName,
                                user_id: e.ownerUserId,
                                list_slug: e.slug
                            })
                        }

                        t.exports = function (t) {
                            t.params({
                                id: {},
                                ownerScreenName: {},
                                ownerUserId: {},
                                slug: {},
                                url: {}
                            }), t.overrideProperty("id", {
                                get: function () {
                                    var t, e, n;
                                    return this.params.id ? s + this.params.id : (e = (t = a(this.params)) && t.list_slug.replace(/-/g, "_"), n = t && (t.screen_name || t.user_id), s + (n + ":") + e)
                                }
                            }), t.overrideProperty("endpoint", {
                                get: function () {
                                    return o.timeline(["list"])
                                }
                            }), t.define("_getListQueryParam", function () {
                                return this.params.id ? {list_id: this.params.id} : a(this.params)
                            }), t.around("queryParams", function (t) {
                                return i.aug(t(), this._getListQueryParam())
                            }), t.before("initialize", function () {
                                var t = a(this.params);
                                if (i.isEmptyObject(t) && !this.params.id) throw new Error("qualified slug or list id required")
                            })
                        }
                    }, function (t, e, n) {
                        var r = n(27);
                        t.exports = r.build([n(28), n(147)])
                    }, function (t, e, n) {
                        var r = n(3), i = n(5), o = n(0), s = n(19), a = "profile:";

                        function u(t, e) {
                            return r.screenName(t) || e
                        }

                        t.exports = function (t) {
                            t.params({
                                showReplies: {fallback: !1, transform: i.asBoolean},
                                screenName: {},
                                userId: {},
                                url: {}
                            }), t.overrideProperty("id", {
                                get: function () {
                                    var t = u(this.params.url, this.params.screenName);
                                    return a + (t || this.params.userId)
                                }
                            }), t.overrideProperty("endpoint", {
                                get: function () {
                                    return s.timeline(["profile"])
                                }
                            }), t.define("_getProfileQueryParam", function () {
                                var t = u(this.params.url, this.params.screenName),
                                    e = t ? {screen_name: t} : {user_id: this.params.userId};
                                return o.aug(e, {with_replies: this.params.showReplies ? "true" : "false"})
                            }), t.around("queryParams", function (t) {
                                return o.aug(t(), this._getProfileQueryParam())
                            }), t.before("initialize", function () {
                                if (!u(this.params.url, this.params.screenName) && !this.params.userId) throw new Error("screen name or user id is required")
                            })
                        }
                    }, function (t, e, n) {
                        var r = n(2);
                        t.exports = function (t, e) {
                            var i = new r;
                            return Promise.all([n.e(0), n.e(6)]).then(function (r) {
                                var o;
                                try {
                                    o = n(90), i.resolve(new o(t, e))
                                } catch (t) {
                                    i.reject(t)
                                }
                            }.bind(null, n)).catch(function (t) {
                                i.reject(t)
                            }), i.promise
                        }
                    }, function (t, e, n) {
                        var r = n(10), i = n(3), o = n(0), s = n(13), a = n(14)(), u = n(68),
                            c = "blockquote.twitter-tweet, blockquote.twitter-video",
                            d = /\btw-align-(left|right|center)\b/;
                        t.exports = function (t, e) {
                            return a(t, c).map(function (t) {
                                return u(function (t) {
                                    var e = s(t), n = t.getElementsByTagName("A"), a = n && n[n.length - 1],
                                        u = a && i.status(a.href), c = t.getAttribute("data-conversation"),
                                        l = "none" == c || "hidden" == c || r.present(t, "tw-hide-thread"),
                                        f = t.getAttribute("data-cards"),
                                        h = "none" == f || "hidden" == f || r.present(t, "tw-hide-media"),
                                        p = t.getAttribute("data-align") || t.getAttribute("align"),
                                        m = t.getAttribute("data-link-color"), v = t.getAttribute("data-theme");
                                    return !p && d.test(t.className) && (p = RegExp.$1), o.aug(e, {
                                        tweetId: u,
                                        hideThread: l,
                                        hideCard: h,
                                        align: p,
                                        linkColor: m,
                                        theme: v,
                                        id: u
                                    })
                                }(t), t.parentNode, t, e)
                            })
                        }
                    }, function (t, e, n) {
                        var r = n(2);
                        t.exports = function (t, e) {
                            var i = new r;
                            return Promise.all([n.e(0), n.e(7)]).then(function (r) {
                                var o;
                                try {
                                    o = n(91), i.resolve(new o(t, e))
                                } catch (t) {
                                    i.reject(t)
                                }
                            }.bind(null, n)).catch(function (t) {
                                i.reject(t)
                            }), i.promise
                        }
                    }, function (t, e, n) {
                        var r = n(2);
                        t.exports = function (t, e) {
                            var i = new r;
                            return Promise.all([n.e(0), n.e(7)]).then(function (r) {
                                var o;
                                try {
                                    o = n(92), i.resolve(new o(t, e))
                                } catch (t) {
                                    i.reject(t)
                                }
                            }.bind(null, n)).catch(function (t) {
                                i.reject(t)
                            }), i.promise
                        }
                    }, function (t, e, n) {
                        var r = n(10), i = n(0), o = n(13), s = n(14)(), a = n(69), u = n(5),
                            c = "a.twitter-share-button, a.twitter-mention-button, a.twitter-hashtag-button",
                            d = "twitter-hashtag-button", l = "twitter-mention-button";
                        t.exports = function (t) {
                            return s(t, c).map(function (t) {
                                return a(function (t) {
                                    var e = o(t), n = {
                                        screenName: t.getAttribute("data-button-screen-name"),
                                        text: t.getAttribute("data-text"),
                                        type: t.getAttribute("data-type"),
                                        size: t.getAttribute("data-size"),
                                        url: t.getAttribute("data-url"),
                                        hashtags: t.getAttribute("data-hashtags"),
                                        via: t.getAttribute("data-via"),
                                        buttonHashtag: t.getAttribute("data-button-hashtag")
                                    };
                                    return i.forIn(n, function (t, n) {
                                        var r = e[t];
                                        e[t] = u.hasValue(r) ? r : n
                                    }), e.screenName = e.screenName || e.screen_name, e.buttonHashtag = e.buttonHashtag || e.button_hashtag || e.hashtag, r.present(t, d) && (e.type = "hashtag"), r.present(t, l) && (e.type = "mention"), e
                                }(t), t.parentNode, t)
                            })
                        }
                    }, function (t, e, n) {
                        var r = n(2);
                        t.exports = function (t, e) {
                            var i = new r;
                            return n.e(3).then(function (r) {
                                var o;
                                try {
                                    o = n(93), i.resolve(new o(t, e))
                                } catch (t) {
                                    i.reject(t)
                                }
                            }.bind(null, n)).catch(function (t) {
                                i.reject(t)
                            }), i.promise
                        }
                    }, function (t, e, n) {
                        var r = n(0);
                        t.exports = r.aug({}, n(155), n(156), n(157), n(158), n(159), n(160), n(161))
                    }, function (t, e, n) {
                        var r = n(60), i = n(17)(["userId"], {}, r);
                        t.exports = {createDMButton: i}
                    }, function (t, e, n) {
                        var r = n(63), i = n(17)(["screenName"], {}, r);
                        t.exports = {createFollowButton: i}
                    }, function (t, e, n) {
                        var r = n(64), i = n(17)(["momentId"], {}, r);
                        t.exports = {createMoment: i}
                    }, function (t, e, n) {
                        var r = n(65), i = n(17)(["username"], {}, r);
                        t.exports = {createPeriscopeOnAirButton: i}
                    }, function (t, e, n) {
                        var r = n(8), i = n(12), o = n(3), s = n(0), a = n(5), u = n(66), c = n(67),
                            d = n(17)([], {}, c), l = n(6),
                            f = "Embedded grids have been deprecated. Please use twttr.widgets.createTimeline instead. More info: https://twittercommunity.com/t/update-on-the-embedded-grid-display-type/119564.",
                            h = {
                                createTimeline: p, createGridFromCollection: function (t) {
                                    var e = s.toRealArray(arguments).slice(1), n = {sourceType: "collection", id: t};
                                    return e.unshift(n), i.publicLog(f), p.apply(this, e)
                                }
                            };

                        function p(t) {
                            var e, n = s.toRealArray(arguments).slice(1);
                            return a.isString(t) || a.isNumber(t) ? l.reject("Embedded timelines with widget settings have been deprecated. See https://twittercommunity.com/t/deprecating-widget-settings/102295.") : s.isObject(t) ? (t = t || {}, n.forEach(function (t) {
                                s.isType("object", t) && function (t) {
                                    t.ariaLive = t.ariaPolite
                                }(e = t)
                            }), e || (e = {}, n.push(e)), t.lang = e.lang, t.tweetLimit = e.tweetLimit, t.showReplies = e.showReplies, e.dataSource = u(t), d.apply(this, n)) : l.reject("data source must be an object.")
                        }

                        o.isTwitterURL(r.href) && (h.createTimelinePreview = function (t, e, n) {
                            var r = {previewParams: t, useLegacyDefaults: !0, isPreviewTimeline: !0};
                            return r.dataSource = u(r), d(e, r, n)
                        }), t.exports = h
                    }, function (t, e, n) {
                        var r, i = n(0), o = n(68), s = n(17), a = (r = s(["tweetId"], {}, o), function () {
                            return i.toRealArray(arguments).slice(1).forEach(function (t) {
                                i.isType("object", t) && (t.hideCard = "none" == t.cards || "hidden" == t.cards, t.hideThread = "none" == t.conversation || "hidden" == t.conversation)
                            }), r.apply(this, arguments)
                        });
                        t.exports = {createTweet: a, createTweetEmbed: a, createVideo: a}
                    }, function (t, e, n) {
                        var r = n(0), i = n(69), o = n(17), s = o(["url"], {type: "share"}, i),
                            a = o(["buttonHashtag"], {type: "hashtag"}, i), u = o(["screenName"], {type: "mention"}, i);

                        function c(t) {
                            return function () {
                                return r.toRealArray(arguments).slice(1).forEach(function (t) {
                                    r.isType("object", t) && (t.screenName = t.screenName || t.screen_name, t.buttonHashtag = t.buttonHashtag || t.button_hashtag || t.hashtag)
                                }), t.apply(this, arguments)
                            }
                        }

                        t.exports = {createShareButton: c(s), createHashtagButton: c(a), createMentionButton: c(u)}
                    }, function (t, e, n) {
                        var r, i, o, s = n(4), a = n(1), u = 0, c = [], d = s.createElement("a");

                        function l() {
                            var t, e;
                            for (u = 1, t = 0, e = c.length; t < e; t++) c[t]()
                        }

                        /^loade|c/.test(s.readyState) && (u = 1), s.addEventListener && s.addEventListener("DOMContentLoaded", i = function () {
                            s.removeEventListener("DOMContentLoaded", i, !1), l()
                        }, !1), d.doScroll && s.attachEvent("onreadystatechange", r = function () {
                            /^c/.test(s.readyState) && (s.detachEvent("onreadystatechange", r), l())
                        }), o = d.doScroll ? function (t) {
                            a.self != a.top ? u ? t() : c.push(t) : function () {
                                try {
                                    d.doScroll("left")
                                } catch (e) {
                                    return setTimeout(function () {
                                        o(t)
                                    }, 50)
                                }
                                t()
                            }()
                        } : function (t) {
                            u ? t() : c.push(t)
                        }, t.exports = o
                    }, function (t, e, n) {
                        var r = n(44), i = n(9);
                        t.exports = function () {
                            i.set("buildVersion", r.version)
                        }
                    }, function (t, e, n) {
                        n(165), n(85), n(168)
                    }, function (t, e, n) {
                        var r = n(166), i = n(29), o = n(70), s = new r, a = function (t) {
                            t.widgets && 1 === t.widgets.length && (s.start(), i.emitter.unbind(i.ALL_WIDGETS_RENDER_START, a))
                        }, u = function (t) {
                            var e;
                            t.widgets && 1 === t.widgets.length && (e = t.widgets[0], s.end(), e.dataset && e.dataset.tweetId && o({
                                duration: s.duration(),
                                namespace: {element: "tweet", action: "render"},
                                widgetIds: [e.dataset.tweetId]
                            })), i.emitter.unbind(i.ALL_WIDGETS_RENDER_END, u)
                        };
                        i.emitter.bind(i.ALL_WIDGETS_RENDER_START, a), i.emitter.bind(i.ALL_WIDGETS_RENDER_END, u)
                    }, function (t, e, n) {
                        var r = n(167);

                        function i() {
                        }

                        i.prototype.start = function () {
                            this._startTime = r()
                        }, i.prototype.end = function () {
                            this._duration = r() - this._startTime
                        }, i.prototype.duration = function () {
                            return this._duration
                        }, t.exports = i
                    }, function (t, e, n) {
                        var r = n(1);
                        t.exports = function () {
                            return r.performance && r.performance.now ? r.performance.now() : Date.now()
                        }
                    }, function (t, e, n) {
                        var r = n(29), i = n(70), o = n(169), s = n(3), a = n(1), u = n(0), c = n(21), d = n(62);

                        function l(t) {
                            return t.performance.getEntriesByType("resource").filter(function (t) {
                                return s.isTwimgURL(t.name) || s.isTwitterURL(t.name)
                            }).reduce(function (t, e) {
                                return t[e.name] = e.duration, t
                            }, {})
                        }

                        r.emitter.bind(r.ALL_WIDGETS_AND_IMAGES_LOADED, function (t) {
                            var e, n, r = [];
                            c.hasPerformanceInformation() && (e = l(a), d.isSupported() || (r = function (t) {
                                return t.reduce(function (t, e) {
                                    return u.aug(t, l(e.contentDocument.defaultView))
                                }, {})
                            }(t)), n = u.aug({}, e, r), Object.keys(o).forEach(function (t) {
                                !function (t, e, n) {
                                    var r = Object.keys(t).reduce(function (e, r) {
                                        return n(r) ? e + t[r] : e
                                    }, 0);
                                    i({duration: r, namespace: {element: e, action: "resource"}})
                                }(n, t, o[t])
                            }))
                        })
                    }, function (t, e, n) {
                        var r = n(3), i = {
                            all: function () {
                                return !0
                            }, image: function (t) {
                                return r.isTwimgURL(t)
                            }, settings: function (t) {
                                return r.isSettingsURL(t)
                            }, widget_iframe: function (t) {
                                return r.isWidgetIframeURL(t)
                            }
                        };
                        t.exports = i
                    }])));
                }
            });


            //Runs every time new tweets are loaded
            function ctfScripts($ctf) {
                $ctf.addClass('ctf_is_initialized');
                //Loop through each newly loaded tweet
                $ctf.find('.ctf-item.ctf-new').each(function () {

                    var $ctfItem = $(this),
                        $ctfTextMedia = $ctfItem.find('.ctf-tweet-text-media-wrap'),
                        $ctfText = $ctfItem.find('.ctf-tweet-text').remove('.ctf-tweet-text-media-wrap'),
                        ctfTextStr = ' ' + $ctfText.html();

                    if ($ctf.attr('data-ctfdisablelinks') != 'true' && typeof ctfTextStr !== 'undefined' && !$ctf.find('.ctf-tweet-text-link').length) {

                        var ctfLinkColor = $ctf.attr('data-ctflinktextcolor'),
                            ctfLinkColorHex = '';
                        if (ctfLinkColor) ctfLinkColorHex = ctfLinkColor.replace(';', '').split("#")[1];

                        //Link URLs
                        window.ctfLinkify = (function () {
                            var k = "[a-z\\d.-]+://",
                                h = "(?:(?:[0-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}(?:[0-9]|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])",
                                c = "(?:(?:[^\\s!@#$%^&*()_=+[\\]{}\\\\|;:'\",.<>/?]+)\\.)+",
                                n = "(?:ac|ad|aero|ae|af|ag|ai|al|am|an|ao|aq|arpa|ar|asia|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|biz|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|cat|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|coop|com|co|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|info|int|in|io|iq|ir|is|it|je|jm|jobs|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mil|mk|ml|mm|mn|mobi|mo|mp|mq|mr|ms|mt|museum|mu|mv|mw|mx|my|mz|name|na|nc|net|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pro|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tel|tf|tg|th|tj|tk|tl|tm|tn|to|tp|travel|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|xn--0zwm56d|xn--11b5bs3a9aj6g|xn--80akhbyknj4f|xn--9t4b11yi5a|xn--deba0ad|xn--g6w251d|xn--hgbk6aj7f53bba|xn--hlcj6aya9esc7a|xn--jxalpdlp|xn--kgbechtv|xn--zckzah|ye|yt|yu|za|zm|zw)",
                                f = "(?:" + c + n + "|" + h + ")", o = "(?:[;/][^#?<>\\s]*)?",
                                e = "(?:\\?[^#<>\\s]*)?(?:#[^<>\\s]*)?", d = "\\b" + k + "[^<>\\s]+",
                                a = "\\b" + f + o + e + "(?!\\w)", m = "mailto:",
                                j = "(?:" + m + ")?[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@" + f + e + "(?!\\w)",
                                l = new RegExp("(?:" + d + "|" + a + "|" + j + ")", "ig"), g = new RegExp("^" + k, "i"),
                                b = {"'": "`", ">": "<", ")": "(", "]": "[", "}": "{", "B;": "B+", "b:": "b9"}, i = {
                                    callback: function (q, p) {
                                        return p ? '<a href="' + p + '" title="' + p + '" target="_blank">' + q + "</a>" : q
                                    },
                                    punct_regexp: /(?:[!?.,:;'"]|(?:&|&amp;)(?:lt|gt|quot|apos|raquo|laquo|rsaquo|lsaquo);)$/
                                };
                            return function (u, z) {
                                z = z || {};
                                var w, v, A, p, x = "", t = [], s, E, C, y, q, D, B, r;
                                for (v in i) {
                                    if (z[v] === undefined) {
                                        z[v] = i[v]
                                    }
                                }
                                while (w = l.exec(u)) {
                                    A = w[0];
                                    E = l.lastIndex;
                                    C = E - A.length;
                                    if (/[\/:]/.test(u.charAt(C - 1))) {
                                        continue
                                    }
                                    do {
                                        y = A;
                                        r = A.substr(-1);
                                        B = b[r];
                                        if (B) {
                                            q = A.match(new RegExp("\\" + B + "(?!$)", "g"));
                                            D = A.match(new RegExp("\\" + r, "g"));
                                            if ((q ? q.length : 0) < (D ? D.length : 0)) {
                                                A = A.substr(0, A.length - 1);
                                                E--
                                            }
                                        }
                                        if (z.punct_regexp) {
                                            A = A.replace(z.punct_regexp, function (F) {
                                                E -= F.length;
                                                return ""
                                            })
                                        }
                                    } while (A.length && A !== y);
                                    p = A;
                                    if (!g.test(p)) {
                                        p = (p.indexOf("@") !== -1 ? (!p.indexOf(m) ? "" : m) : !p.indexOf("irc.") ? "irc://" : !p.indexOf("ftp.") ? "ftp://" : "http://") + p
                                    }
                                    if (s != C) {
                                        t.push([u.slice(s, C)]);
                                        s = E
                                    }
                                    t.push([A, p])
                                }
                                t.push([u.substr(s)]);
                                for (v = 0; v < t.length; v++) {
                                    x += z.callback.apply(window, t[v])
                                }
                                return x || u
                            }
                        })();
                        if (!$ctfText.find('a').length) {
                            $ctfText.find('.emoji').each(function() {
                                $(this).replaceWith($(this).attr('alt'));
                            });
                            ctfTextStr = ' ' +$ctfText.html();
                            ctfTextStr = ctfLinkify(ctfTextStr);
                        }
                        //Link hashtags
                        var ctfHashRegex = /(^|\s)#(\w*[\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]+\w*)/gi;

                        function ctfHashReplacer(hash) {
                            //Remove white space at beginning of hash
                            var replacementString = jQuery.trim(hash);
                            //If the hash is a hex code then don't replace it with a link as it's likely in the style attr, eg: "color: #ff0000"
                            if (/^#[0-9A-F]{6}$/i.test(replacementString)) {
                                return replacementString;
                            } else {
                                return ' <a href="https://twitter.com/hashtag/' + replacementString.substring(1) + '" target="_blank" rel="nofollow">' + replacementString + '</a>';
                            }
                        }

                        //Replace hashtags in text
                        if (ctfTextStr.length > 0) {
                            //Add a space after all <br> tags so that #hashtags immediately after them are also converted to hashtag links. Without the space they aren't captured by the regex.
                            ctfTextStr = ctfTextStr.replace(/<br>/g, "<br> ");
                            ctfTextStr = ctfTextStr.replace(ctfHashRegex, ctfHashReplacer);
                        }

                        //Link @tags
                        function ctfReplaceTags(tag) {
                            var replacementString = jQuery.trim(tag);
                            return ' <a href="https://twitter.com/' + replacementString.substring(1) + '" target="_blank" rel="nofollow">' + replacementString + '</a>';
                        }

                        var tagRegex = /[\s][@]+[A-Za-z0-9-_]+/g;
                        ctfTextStr = ctfTextStr.replace(tagRegex, ctfReplaceTags);


                        //Replace text with linked version
                        $ctfText.html(ctfTextStr.trim());
                        $ctfText.append($ctfTextMedia);

                        //Add link color
                        $ctfText.find('a').css('color', '#' + ctfLinkColorHex);
                        $ctfTextMedia.css('color', '#' + ctfLinkColorHex);

                    } // End "ctfdata-disablelinks" check

                    // shorten long urls in tweets
                    $ctfItem.find('.ctf-tweet-text a').each(function () {
                        if (jQuery(this).text().indexOf('http') > -1 && jQuery(this).text().length > 63) {
                            jQuery(this).text(jQuery(this).text().substring(0, 60) + '...');
                        }
                    });

                }); // End .ctfItem loop

                //Change color of retweet icon to match text
                // $ctf.find('.ctf-retweet-icon').css({'background' : $ctf.find('.ctf-tweet-text a').css('color')}); //This doesn't work well if the link color is set to white as the default color of the icon text is also white

                //Change colors of some items to match tweet text
                $ctf.find('.ctf-author-name, .ctf-tweet-date, .ctf-author-screenname, .ctf-twitterlink, .ctf-author-box-link, .ctf-retweet-text, .ctf-quoted-tweet').css('color', $ctf.find('.ctf-tweet-text').css('color'));

                //Header profile pic hover
                $ctf.find('.ctf-header .ctf-header-link').hover(function () {
                    $ctf.find('.ctf-header .ctf-header-img-hover').fadeIn(200);
                }, function () {
                    $ctf.find('.ctf-header .ctf-header-img-hover').stop().fadeOut(600);
                });

                $ctf.find('.ctf_more').unbind('click').bind('click', function (e) {
                    e.preventDefault();
                    $(this).hide().next('.ctf_remaining').show();
                });

                // Call Custom JS if it exists
                if (typeof ctf_custom_js == 'function') ctf_custom_js($);

                $ctf.find('.ctf-author-box-link p:empty').remove();
            } // end ctfScripts()

            function ctfLoadTweets(lastIDData, shortcodeData, $ctf, $ctfMore, numNeeded, persistentIndex) {

                //Display loader
                $ctfMore.addClass('ctf-loading').append('<div class="ctf-loader"></div>');
                $ctfMore.find('.ctf-loader').css('background-color', $ctfMore.css('color'));

                jQuery.ajax({
                    url: ctf.ajax_url,
                    type: 'post',
                    data: {
                        action: 'ctf_get_more_posts',
                        last_id_data: lastIDData,
                        shortcode_data: shortcodeData,
                        num_needed: numNeeded,
                        persistent_index: persistentIndex
                    },
                    success: function (data) {
                        if (lastIDData !== '') {
                            // appends the html echoed out in ctf_get_new_posts() to the last post element
                            if (data.indexOf('<meta charset') == -1) {
                                $ctf.find('.ctf-item').removeClass('ctf-new').last().after(data);
                            }

                            if ($ctf.find('.ctf-out-of-tweets').length) {
                                $ctfMore.hide();
                                //Fade in the no more tweets message
                                $ctf.find('.ctf-out-of-tweets p').eq(0).fadeIn().end().eq(1).delay(500).fadeIn();
                            }
                        } else {
                            $ctf.find('.ctf-tweets').append(data);
                        }


                        //Remove loader
                        $ctfMore.removeClass('ctf-loading').find('.ctf-loader').remove();

                        //Re-run JS code
                        ctfScripts($ctf);

                    }
                }); // ajax call
            }

            $('.ctf').each(function () {

                var $ctf = $(this),
                    numNeeded = parseInt($ctf.attr('data-ctfneeded'));

                //Adds a class if the feed is in a narrow column or on mobile so we can make styling adjustments
                if ($ctf.width() <= 480) $ctf.addClass('ctf-narrow');
                if ($ctf.width() <= 320) $ctf.addClass('ctf-super-narrow');

                if (!$(this).hasClass('ctf_is_initialized')) {
                    ctfScripts($ctf);
                }

                // delay added to prevent strange issue with ajax themes returning the entire page
                setTimeout(function () {
                    if (numNeeded > 0) {
                        var $ctfMore = $ctf.find('.ctf-more'),
                            lastIDData = $ctf.find('.ctf-item').last().attr('id'),
                            persistentIndex = $ctf.find('.ctf-item').length,
                            shortcodeData = $ctf.attr('data-ctfshortcode');

                        ctfLoadTweets(lastIDData, shortcodeData, $ctf, $ctfMore, numNeeded, persistentIndex);
                    }
                }, 500);

                // add the load more button and input to simulate a dynamic json file call
                $ctf.find('.ctf-more').on('click', function () {
                    // read the json that is in the ctf-shortcode-data that contains all of the shortcode arguments
                    var $ctfMore = $(this),
                        lastIDData = $ctf.find('.ctf-item').last().attr('id'),
                        persistentIndex = $ctf.find('.ctf-item').length,
                        shortcodeData = $ctf.attr('data-ctfshortcode');

                    ctfLoadTweets(lastIDData, shortcodeData, $ctf, $ctfMore, 0, persistentIndex);

                });

                $ctf.find('.ctf-author-box-link p:empty').remove();
            }); // end .cff each loop
        }

        jQuery(document).ready(function($) {
            ctf_init();
        });
    })(jQuery);


} //End ctf_js_exists check