function isArray(e) { return "[object Array]" === Object.prototype.toString.call(e) } function isBoolean(e) { return "boolean" == typeof e } function isDate(e) { return "[object Date]" === Object.prototype.toString.call(e) } function isDefined(e) { return void 0 !== e } function isFunction(e) { return "function" == typeof e } function isNull(e) { return null === e } function isNumber(e) { return "number" == typeof e } function isObject(e) { return null !== e && "object" == typeof e } function isString(e) { return "string" == typeof e } function isUndefined(e) { return void 0 === e } function convertToBoolean(e) { return isBoolean(e) ? e : null !== e && "" !== e && "false" !== e } function hasProperty(e, t) { return e.hasOwnProperty(t) } function isStringEmpty(e) { return isNull(e) || isUndefined(e) || isString(e) && 0 == e.length } function isStringNonempty(e) { return isString(e) && e.length > 0 } function upperCaseFirstLetter(e) { return e.charAt(0).toUpperCase() + e.slice(1) } function areEqual(e, t) { return angular.equals(e, t) } function min(e, t) { return e < t ? e : t } function max(e, t) { return e > t ? e : t } function beginsWith(e, t) { return isString(e) && 0 == e.lastIndexOf(t, 0) } function endsWith(e, t) { return isString(e) && -1 !== e.indexOf(t, e.length - t.length) } function copy(e, t) { return angular.copy(e, t) } function removeProperty(e, t) { delete e[t] } function removeProperties(e, t) { for (var n = 0; n < t.length; ++n) delete e[t[n]] } function forEach(e, t, n) { return angular.forEach(e, t, n) } function defineScalyrJsLibrary(e, t) { var n = []; if (t instanceof Array) for (var r = 0; r < t.length - 1; ++r) n.push(t[r]); return angular.module(e, n).factory(e, t) } function defineScalyrAngularModule(e, t) { return angular.module(e, t) } function isArray(e) { return "[object Array]" === Object.prototype.toString.call(e) } function isBoolean(e) { return "boolean" == typeof e } function isDate(e) { return "[object Date]" === Object.prototype.toString.call(e) } function isDefined(e) { return void 0 !== e } function isFunction(e) { return "function" == typeof e } function isNull(e) { return null === e } function isNumber(e) { return "number" == typeof e } function isObject(e) { return null !== e && "object" == typeof e } function isString(e) { return "string" == typeof e } function isUndefined(e) { return void 0 === e } function convertToBoolean(e) { return isBoolean(e) ? e : null !== e && "" !== e && "false" !== e } function hasProperty(e, t) { return e.hasOwnProperty(t) } function isStringEmpty(e) { return isNull(e) || isUndefined(e) || isString(e) && 0 == e.length } function isStringNonempty(e) { return isString(e) && e.length > 0 } function upperCaseFirstLetter(e) { return e.charAt(0).toUpperCase() + e.slice(1) } function areEqual(e, t) { return angular.equals(e, t) } function min(e, t) { return e < t ? e : t } function max(e, t) { return e > t ? e : t } function beginsWith(e, t) { return isString(e) && 0 == e.lastIndexOf(t, 0) } function endsWith(e, t) { return isString(e) && -1 !== e.indexOf(t, e.length - t.length) } function copy(e, t) { return angular.copy(e, t) } function removeProperty(e, t) { delete e[t] } function removeProperties(e, t) { for (var n = 0; n < t.length; ++n) delete e[t[n]] } function forEach(e, t, n) { return angular.forEach(e, t, n) } function defineScalyrJsLibrary(e, t) { var n = []; if (t instanceof Array) for (var r = 0; r < t.length - 1; ++r) n.push(t[r]); return angular.module(e, n).factory(e, t) } function defineScalyrAngularModule(e, t) { return angular.module(e, t) } function getLang() { var e = localStorage.lang || "en"; return Langs[e] || Langs.en } function log10(e) { return Math.log(e) / Math.LN10 } function millitime() { return (new Date).getTime() / 1e3 } function hms_from_epoch_ms(e, t) { var n, r, o, i = "", a = null; try { a = new Date(e), t ? (n = a.getHours(), r = a.getMinutes(), o = a.getSeconds()) : (n = a.getUTCHours(), r = a.getUTCMinutes(), o = a.getUTCSeconds()), i += (n < 10 ? "0" + n : n) + ":", i += (r < 10 ? "0" + r : r) + ":", i += o < 10 ? "0" + o : o } catch (e) { i = "00:00:00" } return i } function formatted_date(e, t, n) { var r = new Date(1e3 * e), o = ""; return !0 === n ? (t && (o = r.getFullYear() + "-"), o += r.getMonth() + 1 < 10 ? "0" : "", o += r.getMonth() + 1 + "-", o += r.getDate() < 10 ? "0" : "", o += r.getDate()) : (t && (o = r.getUTCFullYear() + "-"), o += r.getUTCMonth() + 1 < 10 ? "0" : "", o += r.getUTCMonth() + 1 + "-", o += r.getUTCDate() < 10 ? "0" : "", o += r.getUTCDate()), o } function timestamp(e) { null != e && void 0 !== e || (e = !0); var t, n, r, o = new Date, i = ""; return e ? (t = o.getHours(), n = o.getMinutes(), r = o.getSeconds()) : (t = o.getUTCHours(), n = o.getUTCMinutes(), r = o.getUTCSeconds()), i += (t < 10 ? "0" + t : t) + ":", i += (n < 10 ? "0" + n : n) + ":", i += r < 10 ? "0" + r : r } function hms_from_sec(e) { var t = "", n = e % 60, r = (e - n) / 60 % 60, o = (e - 60 * r - n) / 3600 % 3600; return t += (o < 10 ? "0" + o : o) + ":", t += (r < 10 ? "0" + r : r) + ":", t += n < 10 ? "0" + n : n } function dhms_from_sec(e) { var t, n, r, o, i = "", a = e; return t = Math.floor(a / 86400), a -= 86400 * t, n = Math.floor(a / 3600), a -= 3600 * n, r = Math.floor(a / 60), o = a - 60 * r, i += t > 0 ? t + ":" : "", i += (n < 10 ? "0" + n : n) + ":", i += (r < 10 ? "0" + r : r) + ":", i += o < 10 ? "0" + o : o } function time_delta_print(e) { var t = "", n = 0, r = 0, o = 0, i = 0, a = e; return a |= 0, n = Math.floor(a / 86400), a -= 86400 * n, r = Math.floor(a / 3600), a -= 3600 * r, o = Math.floor(a / 60), i = a - 60 * o, n >= 2 ? t = n + " days" : n >= 1 ? (t = n + " day, " + r + " hour", r > 1 && (t += "s")) : r >= 1 ? (t = r + " hour", r > 1 && (t += "s")) : t = o >= 1 ? o + " min" : i + " sec", t + " ago" } function numberWithCommas(e) { var t = e.toString().split("."); return t[0] = t[0].replace(/\B(?=(\d{3})+(?!\d))/g, ","), t.join(".") } function delayClass(e, t, n) { window.setTimeout(function () { $(e).removeClass(t) }, n) } function deepCopy(e) { return $.extend(!0, {}, e) } function AssertException(e) { this.message = e } function assert(e, t) { if (!e) throw new AssertException(t) } function stopEvent(e) { try { e.preventDefault(), e.stopPropagation() } catch (e) { } } function NoBreak(e) { return e.replace(/ /g, " ") } function HTMLEncode(e) { return $("
").text(e).html() } function HTMLDecode(e) { return $("
").html(e).text() } function clearingSpan() { return $("").addClass("clear").html(" ") } function clearingSpanHTML() { return ' ' } function uniqueID() { return "id" + lastUniqueID++ } function randInt(e) { return Math.floor(Math.random() * e) } function randRange(e, t) { return Math.floor(Math.random() * (t - e)) + e } function randomString(e) { "number" != typeof e && (e = 10); var t = 0, n = ""; for (t = 0; t < e; t++) n += alphabet[randInt(alphalen)]; return n } function storageSupport() { try { return "localStorage" in window && null !== window.localStorage } catch (e) { return !1 } } function wsSupport() { try { return !!window.WebSocket } catch (e) { return !1 } } function locationOf(e, t, n, r, o) { null == n && (n = 0), null == r && (r = t.length - 1), "string" == typeof o && ("gt" == o ? o = function (e, t) { return e > t } : "lt" == o && (o = function (e, t) { return e < t })); var i = parseInt(n + (r - n) / 2); return t[i] == e ? {index: i, exact: !0} : r - n <= 1 ? { index: i + 1, exact: !1 } : o(t[i], e) ? locationOf(e, t, i, r, o) : locationOf(e, t, n, i, o) } function has_worker() { return !!window.Worker } function pixel_ratio() { return window.hasOwnProperty("devicePixelRatio") ? window.devicePixelRatio : 1 } function _(e, t) { return e } function PtInPolygon(e, t) { for (var n = 0, r = 0; r < t.length; r++) p1 = t[r], p2 = t[(r + 1) % t.length], p1[1] != p2[1] && (e[1] < Math.min(p1[1], p2[1]) || e[1] >= Math.max(p1[1], p2[1]) || (e[1] - p1[1]) * (p2[0] - p1[0]) / (p2[1] - p1[1]) + p1[0] > e[0] && n++); return n % 2 == 1 } function chackRate() { var e = 0; for (timesList.length >= times && timesList.pop(), timesList.splice(0, 0, (new Date).getTime()), e = 0; e < timesList.length && !(timesList[e] + timeLimit < (new Date).getTime()); e++) ; return !(e >= times) || (console.log("@@@@@@按钮点击频率太快"), !1) } function Graph(e) { this.vertices = e, this.edges = 0, this.adj = [], this.edgeTo = []; for (var t = 0; t < this.vertices; t++) ; this.marked = {}, this.addEdge = function (e, t) { this.adj[e] || (this.adj[e] = []), this.adj[t] || (this.adj[t] = []), this.adj[e].push(t), this.adj[t].push(e), this.edges++ }, this.bfs = function (e) { this.source = e; for (var t in this.marked) this.marked[t] = !1; var n = []; for (this.marked[e] = !0, n.push(e); n.length > 0;) { var r = n.shift(); if (this.adj[r]) for (var o = 0; o < this.adj[r].length; o++) for (var i = this.adj[r], a = 0; a < i.length; a++) this.marked[i[a]] || (this.edgeTo[i[a]] = r, this.marked[i[a]] = !0, n.push(i[a])) } }, this.pathTo = function (e) { var t = this.source, n = 0, r = []; if (!this.edgeTo[e]) return 0; for (var o = e; o != t; o = this.edgeTo[o]) { if (!this.edgeTo[o]) return 0; if (r.push([this.edgeTo[o], o]), ++n > 100) break } return r } } !function (e) { var t = function (e) { var t = e.backingStorePixelRatio || e.mozBackingStorePixelRatio || e.msBackingStorePixelRatio || e.oBackingStorePixelRatio || e.backingStorePixelRatio || 1; return (window.devicePixelRatio || 1) / t }(e); 1 !== t && (!function (e, t) { for (var n in e) e.hasOwnProperty(n) && t(e[n], n) }({ fillRect: "all", clearRect: "all", strokeRect: "all", moveTo: "all", lineTo: "all", arc: [0, 1, 2], arcTo: "all", bezierCurveTo: "all", isPointinPath: "all", isPointinStroke: "all", quadraticCurveTo: "all", rect: "all", translate: "all", createRadialGradient: "all", createLinearGradient: "all" }, function (n, r) { e[r] = function (e) { return function () { var r, o, i = Array.prototype.slice.call(arguments); if ("all" === n) i = i.map(function (e) { return e * t }); else if (Array.isArray(n)) for (r = 0, o = n.length; r < o; r++) i[n[r]] *= t; return e.apply(this, i) } }(e[r]) }), e.stroke = function (e) { return function () { this.lineWidth *= t, e.apply(this, arguments), this.lineWidth /= t } }(e.stroke), e.fillText = function (e) { return function () { var n = Array.prototype.slice.call(arguments); n[1] *= t, n[2] *= t, this.font = this.font.replace(/(\d+)(px|em|rem|pt)/g, function (e, n, r) { return n * t + r }), n.length >= 4 && t > 1 && (n[3] *= t), e.apply(this, n), this.font = this.font.replace(/(\d+)(px|em|rem|pt)/g, function (e, n, r) { return n / t + r }) } }(e.fillText), e.strokeText = function (e) { return function () { var n = Array.prototype.slice.call(arguments); n[1] *= t, n[2] *= t, this.font = this.font.replace(/(\d+)(px|em|rem|pt)/g, function (e, n, r) { return n * t + r }), e.apply(this, n), this.font = this.font.replace(/(\d+)(px|em|rem|pt)/g, function (e, n, r) { return n / t + r }) } }(e.strokeText)) }(CanvasRenderingContext2D.prototype), function (e) { e.getContext = function (e) { return function (t) { var n, r, o = e.call(this, t); return "2d" === t && (n = o.backingStorePixelRatio || o.mozBackingStorePixelRatio || o.msBackingStorePixelRatio || o.oBackingStorePixelRatio || o.backingStorePixelRatio || 1, (r = (window.devicePixelRatio || 1) / n) > 1 && "true" != $(this).attr("val") && !($(this).attr("class") || "").match("geetest_absolute") && ("" != this.style.height && Number(this.style.height.replace("px", "")) * r == this.height || (this.style.height = this.height + "px", this.style.width = this.width + "px", this.width *= r, this.height *= r, $(this).attr("val", !0)))), o } }(e.getContext) }(HTMLCanvasElement.prototype), function (e, t) { function n(e) { var t = e.length, n = ce.type(e); return !ce.isWindow(e) && (!(1 !== e.nodeType || !t) || ("array" === n || "function" !== n && (0 === t || "number" == typeof t && t > 0 && t - 1 in e))) } function r(e) { var t = Te[e] = {}; return ce.each(e.match(fe) || [], function (e, n) { t[n] = !0 }), t } function o(e, n, r, o) { if (ce.acceptData(e)) { var i, a, s = ce.expando, l = e.nodeType, c = l ? ce.cache : e, u = l ? e[s] : e[s] && s; if (u && c[u] && (o || c[u].data) || r !== t || "string" != typeof n) return u || (u = l ? e[s] = ee.pop() || ce.guid++ : s), c[u] || (c[u] = l ? {} : {toJSON: ce.noop}), ("object" == typeof n || "function" == typeof n) && (o ? c[u] = ce.extend(c[u], n) : c[u].data = ce.extend(c[u].data, n)), a = c[u], o || (a.data || (a.data = {}), a = a.data), r !== t && (a[ce.camelCase(n)] = r), "string" == typeof n ? null == (i = a[n]) && (i = a[ce.camelCase(n)]) : i = a, i } } function i(e, t, n) { if (ce.acceptData(e)) { var r, o, i = e.nodeType, a = i ? ce.cache : e, l = i ? e[ce.expando] : ce.expando; if (a[l]) { if (t && (r = n ? a[l] : a[l].data)) { ce.isArray(t) ? t = t.concat(ce.map(t, ce.camelCase)) : t in r ? t = [t] : (t = ce.camelCase(t), t = t in r ? [t] : t.split(" ")), o = t.length; for (; o--;) delete r[t[o]]; if (n ? !s(r) : !ce.isEmptyObject(r)) return } (n || (delete a[l].data, s(a[l]))) && (i ? ce.cleanData([e], !0) : ce.support.deleteExpando || a != a.window ? delete a[l] : a[l] = null) } } } function a(e, n, r) { if (r === t && 1 === e.nodeType) { var o = "data-" + n.replace(Ce, "-$1").toLowerCase(); if ("string" == typeof(r = e.getAttribute(o))) { try { r = "true" === r || "false" !== r && ("null" === r ? null : +r + "" === r ? +r : Se.test(r) ? ce.parseJSON(r) : r) } catch (e) { } ce.data(e, n, r) } else r = t } return r } function s(e) { var t; for (t in e) if (("data" !== t || !ce.isEmptyObject(e[t])) && "toJSON" !== t) return !1; return !0 } function l() { return !0 } function c() { return !1 } function u() { try { return X.activeElement } catch (e) { } } function f(e, t) { do { e = e[t] } while (e && 1 !== e.nodeType); return e } function d(e, t, n) { if (ce.isFunction(t)) return ce.grep(e, function (e, r) { return !!t.call(e, r, e) !== n }); if (t.nodeType) return ce.grep(e, function (e) { return e === t !== n }); if ("string" == typeof t) { if (qe.test(t)) return ce.filter(t, e, n); t = ce.filter(t, e) } return ce.grep(e, function (e) { return ce.inArray(e, t) >= 0 !== n }) } function p(e) { var t = ze.split("|"), n = e.createDocumentFragment(); if (n.createElement) for (; t.length;) n.createElement(t.pop()); return n } function h(e, t) { return ce.nodeName(e, "table") && ce.nodeName(1 === t.nodeType ? t : t.firstChild, "tr") ? e.getElementsByTagName("tbody")[0] || e.appendChild(e.ownerDocument.createElement("tbody")) : e } function g(e) { return e.type = (null !== ce.find.attr(e, "type")) + "/" + e.type, e } function m(e) { var t = rt.exec(e.type); return t ? e.type = t[1] : e.removeAttribute("type"), e } function v(e, t) { for (var n, r = 0; null != (n = e[r]); r++) ce._data(n, "globalEval", !t || ce._data(t[r], "globalEval")) } function b(e, t) { if (1 === t.nodeType && ce.hasData(e)) { var n, r, o, i = ce._data(e), a = ce._data(t, i), s = i.events; if (s) { delete a.handle, a.events = {}; for (n in s) for (r = 0, o = s[n].length; o > r; r++) ce.event.add(t, n, s[n][r]) } a.data && (a.data = ce.extend({}, a.data)) } } function y(e, t) { var n, r, o; if (1 === t.nodeType) { if (n = t.nodeName.toLowerCase(), !ce.support.noCloneEvent && t[ce.expando]) { o = ce._data(t); for (r in o.events) ce.removeEvent(t, r, o.handle); t.removeAttribute(ce.expando) } "script" === n && t.text !== e.text ? (g(t).text = e.text, m(t)) : "object" === n ? (t.parentNode && (t.outerHTML = e.outerHTML), ce.support.html5Clone && e.innerHTML && !ce.trim(t.innerHTML) && (t.innerHTML = e.innerHTML)) : "input" === n && et.test(e.type) ? (t.defaultChecked = t.checked = e.checked, t.value !== e.value && (t.value = e.value)) : "option" === n ? t.defaultSelected = t.selected = e.defaultSelected : ("input" === n || "textarea" === n) && (t.defaultValue = e.defaultValue) } } function x(e, n) { var r, o, i = 0, a = typeof e.getElementsByTagName !== G ? e.getElementsByTagName(n || "*") : typeof e.querySelectorAll !== G ? e.querySelectorAll(n || "*") : t; if (!a) for (a = [], r = e.childNodes || e; null != (o = r[i]); i++) !n || ce.nodeName(o, n) ? a.push(o) : ce.merge(a, x(o, n)); return n === t || n && ce.nodeName(e, n) ? ce.merge([e], a) : a } function w(e) { et.test(e.type) && (e.defaultChecked = e.checked) } function $(e, t) { if (t in e) return t; for (var n = t.charAt(0).toUpperCase() + t.slice(1), r = t, o = $t.length; o--;) if ((t = $t[o] + n) in e) return t; return r } function k(e, t) { return e = t || e, "none" === ce.css(e, "display") || !ce.contains(e.ownerDocument, e) } function T(e, t) { for (var n, r, o, i = [], a = 0, s = e.length; s > a; a++) (r = e[a]).style && (i[a] = ce._data(r, "olddisplay"), n = r.style.display, t ? (i[a] || "none" !== n || (r.style.display = ""), "" === r.style.display && k(r) && (i[a] = ce._data(r, "olddisplay", A(r.nodeName)))) : i[a] || (o = k(r), (n && "none" !== n || !o) && ce._data(r, "olddisplay", o ? n : ce.css(r, "display")))); for (a = 0; s > a; a++) (r = e[a]).style && (t && "none" !== r.style.display && "" !== r.style.display || (r.style.display = t ? i[a] || "" : "none")); return e } function S(e, t, n) { var r = gt.exec(t); return r ? Math.max(0, r[1] - (n || 0)) + (r[2] || "px") : t } function C(e, t, n, r, o) { for (var i = n === (r ? "border" : "content") ? 4 : "width" === t ? 1 : 0, a = 0; 4 > i; i += 2) "margin" === n && (a += ce.css(e, n + wt[i], !0, o)), r ? ("content" === n && (a -= ce.css(e, "padding" + wt[i], !0, o)), "margin" !== n && (a -= ce.css(e, "border" + wt[i] + "Width", !0, o))) : (a += ce.css(e, "padding" + wt[i], !0, o), "padding" !== n && (a += ce.css(e, "border" + wt[i] + "Width", !0, o))); return a } function E(e, t, n) { var r = !0, o = "width" === t ? e.offsetWidth : e.offsetHeight, i = lt(e), a = ce.support.boxSizing && "border-box" === ce.css(e, "boxSizing", !1, i); if (0 >= o || null == o) { if ((0 > (o = ct(e, t, i)) || null == o) && (o = e.style[t]), mt.test(o)) return o; r = a && (ce.support.boxSizingReliable || o === e.style[t]), o = parseFloat(o) || 0 } return o + C(e, t, n || (a ? "border" : "content"), r, i) + "px" } function A(e) { var t = X, n = bt[e]; return n || ("none" !== (n = N(e, t)) && n || (st = (st || ce("