Created
May 9, 2017 13:45
-
-
Save jcanfield/452d9f3d77c2eb7186c952b999034b08 to your computer and use it in GitHub Desktop.
Google Chrome Extension: Honey (Refer Ext errors with: This extension failed to modify the request header "Referer" of a network request because the modification conflicted with another extension (Honey).)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<body> | |
<script src="h0.js"></script> |
This file has been truncated, but you can view the full file.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
null == window.honey && (window.honey = { | |
version: "9.8.6", | |
environment: "production", | |
platform: "ch", | |
context: "background", | |
_native: {} | |
}), null == window.env && (window.env = {}), | |
function() { | |
var e, t, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}, | |
a = [].indexOf || function(e) { | |
for (var t = 0, a = this.length; a > t; t++) | |
if (t in this && this[t] === e) return t; | |
return -1 | |
}; | |
null == (t = honey._native).MessagesBase && (t.MessagesBase = e = function() { | |
function e() { | |
this._deliver = bind(this._deliver, this), this.removeListener = bind(this.removeListener, this), this.addListener = bind(this.addListener, this), this._listeners = {} | |
} | |
return e.prototype.addListener = function(e, t) { | |
var o; | |
return null == (o = this._listeners)[e] && (o[e] = []), a.call(this._listeners[e], t) >= 0 ? !1 : (this._listeners[e].push(t), !0) | |
}, e.prototype.removeListener = function(e, t) { | |
var a, o, n; | |
return (a = null != (o = this._listeners) && null != (n = o[e]) ? n.indexOf(t) : void 0) >= 0 ? (this._listeners[e].splice(a, 1), this._listeners[e].length || delete this._listeners[e], !0) : !1 | |
}, e.prototype._deliver = function(e, t, a) { | |
var o, n, i; | |
return o = null != (n = this._listeners) && null != (i = n[e]) ? i.map(function(o) { | |
return Promise.resolve().then(function() { | |
return o(e, t, a) | |
}) | |
}) : void 0, (null != o ? o.length : void 0) ? Promise.any(o)["catch"](function(e) { | |
var t, a; | |
throw (null != e ? e[0] : void 0) instanceof Error ? null != e ? e[0] : void 0 : new MessageListenerError((null != e && null != (t = e[0]) ? t.message : void 0) || (null != e && null != (a = e[0]) ? a.name : void 0) || "listener_failure") | |
}) : Promise.reject(new NoMessageListenersError("No listeners for message of type " + e)) | |
}, e | |
}()) | |
}.call(this), | |
function() { | |
var e; | |
null == (e = honey._native).storage && (e.storage = { | |
local: { | |
isAvailable: function() { | |
return !0 | |
}, | |
get: function(e, t) { | |
return new Promise(function(a, o) { | |
return chrome.storage.local.get(e, function(n) { | |
var i, r; | |
return chrome.runtime.lastError ? o(new StorageError(JSON.stringify(null != (i = chrome.runtime.lastError) ? i.message : void 0))) : void 0 === (r = null != n ? n[e] : void 0) ? o(new NotFoundError) : a((null != t ? t.raw : void 0) ? r : JSON.parse(r)) | |
}) | |
}) | |
}, | |
set: function(e, t, a) { | |
return new Promise(function(a, o) { | |
var n; | |
return chrome.storage.local.set((n = {}, n["" + e] = JSON.stringify(t), n), function() { | |
var e; | |
return chrome.runtime.lastError ? o(new StorageError(JSON.stringify(null != (e = chrome.runtime.lastError) ? e.message : void 0))) : a(t) | |
}) | |
}) | |
}, | |
del: function(e, t) { | |
return new Promise(function(t, a) { | |
return chrome.storage.local.remove(e, function(e) { | |
var o; | |
return chrome.runtime.lastError ? a(new StorageError(JSON.stringify(null != (o = chrome.runtime.lastError) ? o.message : void 0))) : t() | |
}) | |
}) | |
} | |
}, | |
sync: { | |
isAvailable: function() { | |
return !0 | |
}, | |
get: function(e, t) { | |
return new Promise(function(a, o) { | |
return chrome.storage.sync.get(e, function(n) { | |
var i, r; | |
return chrome.runtime.lastError ? o(new StorageError(JSON.stringify(null != (i = chrome.runtime.lastError) ? i.message : void 0))) : void 0 === (r = null != n ? n[e] : void 0) ? o(new NotFoundError) : a((null != t ? t.raw : void 0) ? r : JSON.parse(r)) | |
}) | |
}) | |
}, | |
set: function(e, t, a) { | |
return new Promise(function(a, o) { | |
var n; | |
return chrome.storage.sync.set((n = {}, n["" + e] = JSON.stringify(t), n), function() { | |
var e; | |
return chrome.runtime.lastError ? o(new StorageError(JSON.stringify(null != (e = chrome.runtime.lastError) ? e.message : void 0))) : a(t) | |
}) | |
}) | |
}, | |
del: function(e, t) { | |
return new Promise(function(t, a) { | |
return chrome.storage.sync.remove(e, function(e) { | |
var o; | |
return chrome.runtime.lastError ? a(new StorageError(JSON.stringify(null != (o = chrome.runtime.lastError) ? o.message : void 0))) : t() | |
}) | |
}) | |
} | |
}, | |
bundled: { | |
isAvailable: function() { | |
return !0 | |
}, | |
getAssetURL: function(e) { | |
return chrome.extension.getURL(e) | |
} | |
} | |
}) | |
}.call(this), | |
function() { | |
var e, t, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
null == (t = honey._native).button && (t.button = new(e = function() { | |
function e() { | |
this._onMessage = bind(this._onMessage, this), this._onClicked = bind(this._onClicked, this), this._setBadgeColor = bind(this._setBadgeColor, this), this._setBadgeText = bind(this._setBadgeText, this), this._setTitle = bind(this._setTitle, this), this._setIcon = bind(this._setIcon, this), this.setButtonInfo = bind(this.setButtonInfo, this), this.getLastSetIcon = bind(this.getLastSetIcon, this), chrome.runtime.onMessage.addListener(this._onMessage), chrome.browserAction.onClicked.addListener(this._onClicked), this._lastIconForTab = {} | |
} | |
return e.prototype.getLastSetIcon = function(e) { | |
return this._lastIconForTab[e] | |
}, e.prototype.setButtonInfo = function(e, t, a) { | |
if (null == a && (a = 2), !(null != e ? e.icon : void 0)) throw new InvalidParametersError("button info must be provided with at least an icon"); | |
return Promise["try"](function(o) { | |
return function() { | |
return o._setIcon(e.icon, t, a) | |
} | |
}(this)).then(function(o) { | |
return function() { | |
return Promise.all([null != e.title ? o._setTitle(e.title, t, a).reflect() : void 0, null != e.badgeColor ? o._setBadgeColor(e.badgeColor, t, a).reflect() : void 0, null != e.badgeText ? o._setBadgeText(e.badgeText, t, a).reflect() : void 0]) | |
} | |
}(this)).then(function(e) { | |
return e.filter(function(e) { | |
return e | |
}).forEach(function(e) { | |
return e.isFulfilled() ? void 0 : honey.logger.warn(e.reason()) | |
}) | |
})["catch"](function(e) { | |
return honey.logger.warn(e) | |
}) | |
}, e.prototype._setIcon = function(e, t, a) { | |
return null == a && (a = 2), Promise["try"](function(o) { | |
return function() { | |
return new Promise(function(n, i) { | |
return chrome.browserAction.setIcon({ | |
path: { | |
19: "icons/" + e + "-19.png", | |
38: "icons/" + e + "-38.png" | |
}, | |
tabId: t || void 0 | |
}, function() { | |
return chrome.runtime.lastError ? a > 0 ? n(o._setIcon(e, t, a - 1)) : i(new Error(chrome.runtime.lastError.message)) : (o._lastIconForTab[t] = e, n()) | |
}) | |
}) | |
} | |
}(this)) | |
}, e.prototype._setTitle = function(e, t, a) { | |
return null == a && (a = 2), Promise["try"](function() { | |
return chrome.browserAction.setTitle({ | |
title: e, | |
tabId: t || void 0 | |
}) | |
})["catch"](function(o) { | |
return function(n) { | |
if (a > 0) return o._setTitle(e, t, a - 1); | |
throw n | |
} | |
}(this)) | |
}, e.prototype._setBadgeText = function(e, t, a) { | |
return null == a && (a = 2), Promise["try"](function() { | |
return chrome.browserAction.setBadgeText({ | |
text: "" + e, | |
tabId: t || void 0 | |
}) | |
})["catch"](function(o) { | |
return function(n) { | |
if (a > 0) return o._setBadgeText(e, t, a - 1); | |
throw n | |
} | |
}(this)) | |
}, e.prototype._setBadgeColor = function(e, t, a) { | |
return null == a && (a = 2), Promise["try"](function() { | |
return chrome.browserAction.setBadgeBackgroundColor({ | |
color: e, | |
tabId: t || void 0 | |
}) | |
})["catch"](function(o) { | |
return function(n) { | |
if (a > 0) return o._setBadgeColor(e, t, a - 1); | |
throw n | |
} | |
}(this)) | |
}, e.prototype._onClicked = function(e) { | |
return (null != e ? e.id : void 0) ? honey.messages.send("button:bg:clicked", {}, { | |
tab: e.id, | |
ignoreResponse: !0 | |
}) : void 0 | |
}, e.prototype._onMessage = function(e, t, a) { | |
var o, n; | |
return "button:cs" !== (null != e ? e.service : void 0) ? !1 : (n = null != t && null != (o = t.tab) ? o.id : void 0) ? (Promise.resolve().then(function(t) { | |
return function() { | |
switch (e.type) { | |
case "getLastSetIcon": | |
return t.getLastSetIcon(n); | |
case "setButtonInfo": | |
return t.setButtonInfo(e.info, n); | |
default: | |
throw new InvalidParametersError("type") | |
} | |
} | |
}(this)).then(function(e) { | |
return a(honey.util.assign({ | |
result: e | |
}, { | |
success: !0 | |
})) | |
})["catch"](function(e) { | |
return a({ | |
success: !1, | |
error: (null != e ? e.message : void 0) || (null != e ? e.name : void 0) | |
}) | |
}), !0) : a({ | |
success: !1, | |
error: "invalid_tab" | |
}) | |
}, e | |
}())) | |
}.call(this), | |
function() { | |
var e, t, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
null == (t = honey._native).clipboard && (t.clipboard = new(e = function() { | |
function e() { | |
this._onMessage = bind(this._onMessage, this), this.copy = bind(this.copy, this), chrome.runtime.onMessage.addListener(this._onMessage) | |
} | |
return e.prototype.isAvailable = function() { | |
return !0 | |
}, e.prototype.copy = function(e) { | |
return Promise.resolve().then(function(t) { | |
return function() { | |
var t; | |
return t = document.createElement("textarea"), document.body.appendChild(t), t.value = e, t.focus(), t.select(), document.execCommand("copy"), t.remove(), !0 | |
} | |
}(this)) | |
}, e.prototype._onMessage = function(e, t, a) { | |
return "clipboard:cs" !== (null != e ? e.service : void 0) ? !1 : (Promise.resolve().then(function(t) { | |
return function() { | |
switch (e.type) { | |
case "copy": | |
return t.copy(e.text); | |
default: | |
throw new InvalidParametersError("type") | |
} | |
} | |
}(this)).then(function() { | |
return a({ | |
success: !0 | |
}) | |
})["catch"](function(e) { | |
return a({ | |
success: !1, | |
error: (null != e ? e.message : void 0) || (null != e ? e.name : void 0) | |
}) | |
}), !0) | |
}, e | |
}())) | |
}.call(this), | |
function() { | |
var e, t, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
null == (t = honey._native).cookies && (t.cookies = new(e = function() { | |
function e() { | |
this._onMessage = bind(this._onMessage, this), this._postProcessCookie = bind(this._postProcessCookie, this), this.getAllForDomain = bind(this.getAllForDomain, this), chrome.runtime.onMessage.addListener(this._onMessage) | |
} | |
return e.prototype.getAllForDomain = function(e) { | |
return new Promise(function(t) { | |
return function(a, o) { | |
return chrome.cookies.getAll({ | |
domain: e | |
}, function(e) { | |
return a((e || []).map(t._postProcessCookie)) | |
}) | |
} | |
}(this)) | |
}, e.prototype._postProcessCookie = function(e) { | |
return { | |
name: ("" + (e.name || "")).trim(), | |
value: ("" + (e.value || "")).trim(), | |
domain: ("" + (e.domain || "")).trim(), | |
path: ("" + (e.path || "")).trim() || "/", | |
expires: parseInt(1e3 * e.expirationDate) || 0, | |
secure: !!e.secure, | |
httpOnly: !!e.httpOnly, | |
hostOnly: !!e.hostOnly, | |
session: !!e.session | |
} | |
}, e.prototype._onMessage = function(e, t, a) { | |
return "cookies:cs" !== (null != e ? e.service : void 0) ? !1 : (Promise.resolve().then(function(t) { | |
return function() { | |
switch (e.type) { | |
case "getAllForDomain": | |
return t.getAllForDomain(e.domain); | |
default: | |
throw new InvalidParametersError("type") | |
} | |
} | |
}(this)).then(function(e) { | |
return a({ | |
success: !0, | |
data: e | |
}) | |
})["catch"](function(e) { | |
return a({ | |
success: !1, | |
error: (null != e ? e.message : void 0) || (null != e ? e.name : void 0) | |
}) | |
}), !0) | |
}, e | |
}())) | |
}.call(this), | |
function() { | |
var e, t; | |
null == (t = honey._native).globalEvents && (t.globalEvents = new(e = function() { | |
function e() {} | |
return e.prototype.addOnInstallListener = function(e) { | |
return chrome.runtime.onInstalled.addListener(e) | |
}, e.prototype.setUninstallURL = function(e, t) { | |
return null == t && (t = 2), chrome.runtime.setUninstallURL(e, function(a) { | |
return function() { | |
var o; | |
return (o = chrome.runtime.lastError) && (honey.logger.warn(new Error(o.message)), t > 0) ? a.setUninstallURL(e, t - 1) : void 0 | |
} | |
}(this)) | |
}, e | |
}())) | |
}.call(this), | |
function() { | |
var e, t, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}, | |
a = function(e, t) { | |
function a() { | |
this.constructor = e | |
} | |
for (var n in t) o.call(t, n) && (e[n] = t[n]); | |
return a.prototype = t.prototype, e.prototype = new a, e.__super__ = t.prototype, e | |
}, | |
o = {}.hasOwnProperty; | |
null == (t = honey._native).messages && (t.messages = new(e = function(e) { | |
function t() { | |
this._onMessage = bind(this._onMessage, this), this._dispatchToAllTabs = bind(this._dispatchToAllTabs, this), this._dispatchToMultipleTabs = bind(this._dispatchToMultipleTabs, this), this._dispatchToTab = bind(this._dispatchToTab, this), this._dispatch = bind(this._dispatch, this), this.send = bind(this.send, this), t.__super__.constructor.apply(this, arguments), chrome.runtime.onMessage.addListener(this._onMessage) | |
} | |
return a(t, e), t.prototype.send = function(e, t, a) { | |
return Promise.resolve().then(function(o) { | |
return function() { | |
return o._dispatch(e, t, { | |
type: "bg" | |
}, a) | |
} | |
}(this))["catch"](function(e) { | |
return function(e) { | |
if (!(null != a ? a.ignoreResponse : void 0)) throw e | |
} | |
}(this)) | |
}, t.prototype._dispatch = function(e, t, a, o) { | |
var n, i; | |
return i = [], (null != o ? o.allTabs : void 0) ? i.push(this._dispatchToAllTabs(e, t, a, !!o.ignoreResponse, !!o.allFrames)) : Array.isArray(null != o ? o.tabs : void 0) && o.tabs.length ? i.push(this._dispatchToMultipleTabs(e, t, a, o.tabs, !!o.ignoreResponse, !!o.allFrames)) : (null != o ? o.tab : void 0) && i.push(this._dispatchToTab(e, t, a, o.tab, !!o.ignoreResponse, !!o.allFrames)), ((null != o ? o.background : void 0) || !i.length) && (n = "bg" === a.type ? null : a, i.push(this._deliver(e, t, n))), Promise.any(i)["catch"](function(e) { | |
return function(e) { | |
var t, a, o, n, i; | |
for (n = null, i = e || [], a = 0, o = i.length; o > a; a++) | |
if (t = i[a], t instanceof NoMessageListenersError) n = t; | |
else if (t) throw t; | |
throw n || new MessageListenerError("listener_failed") | |
} | |
}(this)) | |
}, t.prototype._dispatchToTab = function(e, t, a, o, n, i) { | |
return new Promise(function(r) { | |
return function(r, u) { | |
var s; | |
return s = { | |
service: "messages:bg", | |
type: e, | |
allFrames: i, | |
content: JSON.stringify(t), | |
src: "tab" === a.type && a.tabId === o ? null : a | |
}, chrome.tabs.sendMessage(o, s, null, n ? (r(), null) : function(t) { | |
var a, o, n, i, s; | |
return !t || t.noListeners ? u(new NoMessageListenersError("No listeners for message of type " + e)) : t.success ? r(t.data) : (a = (null != t && null != (o = t.error) ? o.name : void 0) ? new window[t.error.name](t.error.message) : new MessageListenerError((null != t && null != (n = t.error) ? n.message : void 0) || "listener_failure"), null == a.stack && (a.stack = ""), (null != t && null != (i = t.error) ? i.stack : void 0) && (a.stack += t.error.stack), (null != t && null != (s = t.error) ? s.data : void 0) && (a.data = t.error.data), u(a)) | |
}) | |
} | |
}(this)) | |
}, t.prototype._dispatchToMultipleTabs = function(e, t, a, o, n, i) { | |
return (null != o ? o.length : void 0) ? Promise.any(o.map(function(o) { | |
return function(r) { | |
return o._dispatchToTab(e, t, a, r, n, i) | |
} | |
}(this)))["catch"](function(e) { | |
return function(e) { | |
var t, a, o, n, i; | |
for (n = null, i = e || [], a = 0, o = i.length; o > a; a++) | |
if (t = i[a], t instanceof NoMessageListenersError) n = t; | |
else if (t) throw t; | |
throw n || new MessageListenerError("listener_failed") | |
} | |
}(this)) : Promise.resolve(null) | |
}, t.prototype._dispatchToAllTabs = function(e, t, a, o, n) { | |
return new Promise(function(i) { | |
return function(r, u) { | |
return chrome.tabs.query({}, function(s) { | |
var c, l, m; | |
return (c = null != (l = chrome.runtime.lastError) ? l.message : void 0) ? u(new Error(c)) : (m = s.map(function(e) { | |
return e.id | |
}), r(i._dispatchToMultipleTabs(e, t, a, m, o, n))) | |
}) | |
} | |
}(this)) | |
}, t.prototype._onMessage = function(e, t, a) { | |
var o; | |
return (null != t && null != (o = t.tab) ? o.id : 0) && "messages:cs" === (null != e ? e.service : void 0) ? (Promise.resolve().then(function(a) { | |
return function() { | |
var o, n, i; | |
return null == e.dest && (e.dest = {}), e.dest.background || e.dest.tab || (null != (i = e.dest.tabs) ? i.length : void 0) || (e.dest.currentTab = !0), e.dest.currentTab && (null == (o = e.dest).tabs && (o.tabs = []), e.dest.tabs.push(t.tab.id)), n = { | |
type: "tab", | |
tabId: t.tab.id, | |
tabUrl: t.tab.url | |
}, a._dispatch(e.type, JSON.parse(null != e ? e.content : void 0), n, e.dest) | |
} | |
}(this)).then(function(e) { | |
return a({ | |
success: !0, | |
data: e | |
}) | |
})["catch"](NoMessageListenersError, function() { | |
return a({ | |
success: !1, | |
noListeners: !0 | |
}) | |
})["catch"](function(e) { | |
return a({ | |
success: !1, | |
error: { | |
name: null != e ? e.name : void 0, | |
message: null != e ? e.message : void 0, | |
stack: null != e ? e.stack : void 0, | |
data: null != e ? e.data : void 0 | |
} | |
}) | |
})["catch"](function() {}), !0) : !1 | |
}, t | |
}(honey._native.MessagesBase))) | |
}.call(this), | |
function() { | |
var e, t, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
null == (t = honey._native).tabs && (t.tabs = new(e = function() { | |
function e() { | |
this._cleanPendingTabs = bind(this._cleanPendingTabs, this), this._waitReady = bind(this._waitReady, this), this._refreshUrl = bind(this._refreshUrl, this), this._onTabReplaced = bind(this._onTabReplaced, this), this._onTabRemoved = bind(this._onTabRemoved, this), this._onTabUpdated = bind(this._onTabUpdated, this), this._onTabCreated = bind(this._onTabCreated, this), this._onMessage = bind(this._onMessage, this), this.getUrlSync = bind(this.getUrlSync, this), this.getAllIds = bind(this.getAllIds, this), this.getAll = bind(this.getAll, this), this._isOneOfPrevId = bind(this._isOneOfPrevId, this), this.isCurrentTabId = bind(this.isCurrentTabId, this), this.get = bind(this.get, this), this.close = bind(this.close, this), this.openFBAuthWindow = bind(this.openFBAuthWindow, this), this.open = bind(this.open, this), this._tabIdMappings = {}, this._tabUrls = {}, this._tabsPending = [], setInterval(this._cleanPendingTabs, 6e4), chrome.runtime.onMessage.addListener(this._onMessage), chrome.tabs.onCreated.addListener(this._onTabCreated), chrome.tabs.onUpdated.addListener(this._onTabUpdated), chrome.tabs.onRemoved.addListener(this._onTabRemoved), chrome.tabs.onReplaced.addListener(this._onTabReplaced) | |
} | |
return e.prototype.open = function(e) { | |
return new Promise(function(t, a) { | |
return chrome.tabs.create({ | |
url: null != e ? e.url : void 0, | |
active: "active" in e ? !!e.active : !0 | |
}, function(e) { | |
var o, n; | |
return (o = null != (n = chrome.runtime.lastError) ? n.message : void 0) ? a(new Error(o)) : t(e.id) | |
}) | |
}) | |
}, e.prototype.openFBAuthWindow = function(e) { | |
return new Promise(function(t, a) { | |
var o, n; | |
return n = window.open(e, "Facebook | Honey", "height=360,width=420"), n.focus(), o = setInterval(function() { | |
return n.closed ? honey.user.getLoggedInUser().then(function(e) { | |
return t(e) | |
})["catch"](function(e) { | |
return a(e) | |
})["finally"](function() { | |
return clearInterval(o) | |
}) : void 0 | |
}, 200) | |
}) | |
}, e.prototype.close = function(e) { | |
return new Promise(function(t, a) { | |
return chrome.tabs.remove(e, function() { | |
var e, o; | |
return (e = null != (o = chrome.runtime.lastError) ? o.message : void 0) ? a(new Error(e)) : t() | |
}) | |
}) | |
}, e.prototype.get = function(e) { | |
return new Promise(function(t) { | |
return function(t, a) { | |
return chrome.tabs.get(e, function(e) { | |
var o, n; | |
return e ? t(e) : a((o = null != (n = chrome.runtime.lastError) ? n.message : void 0) ? new Error(o) : new NotFoundError) | |
}) | |
} | |
}(this)) | |
}, e.prototype.isCurrentTabId = function(e, t) { | |
return new Promise(function(a) { | |
return function(o, n) { | |
var i; | |
try { | |
return o(a._isOneOfPrevId(a._tabIdMappings, t, e)) | |
} catch (r) { | |
return i = r, n(new Error(i)) | |
} | |
} | |
}(this)) | |
}, e.prototype._isOneOfPrevId = function(e, t, a, o) { | |
return t && t === a ? !0 : a && t ? this._isOneOfPrevId(e, t, e[a], a) : !1 | |
}, e.prototype.getAll = function() { | |
return new Promise(function(e, t) { | |
return chrome.windows.getAll({ | |
populate: !0 | |
}, function(a) { | |
var o, n, i; | |
return i = [], (o = null != (n = chrome.runtime.lastError) ? n.message : void 0) ? t(new Error(o)) : (a.forEach(function(e) { | |
return i = i.concat(e.tabs) | |
}), e(i)) | |
}) | |
}) | |
}, e.prototype.getAllIds = function() { | |
return new Promise(function(e, t) { | |
return chrome.tabs.query({}, function(a) { | |
var o, n; | |
return (o = null != (n = chrome.runtime.lastError) ? n.message : void 0) ? t(new Error(o)) : e((a || []).map(function(e) { | |
return e.id | |
})) | |
}) | |
}) | |
}, e.prototype.getUrlSync = function(e) { | |
return this._tabUrls[e] | |
}, e.prototype._onMessage = function(e, t, a) { | |
return "tabs:cs" !== (null != e ? e.service : void 0) ? !1 : (Promise.resolve().then(function(a) { | |
return function() { | |
var o, n, i; | |
switch (null != e ? e.type : void 0) { | |
case "open": | |
return a.open(e.params); | |
case "close": | |
return a.close(e.tabId); | |
case "closeCurrent": | |
return a.close(null != (o = t.tab) ? o.id : void 0); | |
case "get": | |
return a.get(e.tabId); | |
case "getCurrent": | |
return a.get(null != (n = t.tab) ? n.id : void 0); | |
case "getAll": | |
return a.getAll(); | |
case "getAllIds": | |
return a.getAllIds(); | |
case "waitReady": | |
return a._waitReady(t.tab); | |
case "isCurrentTabId": | |
return a.isCurrentTabId(null != (i = t.tab) ? i.id : void 0, e.tabId); | |
default: | |
throw new InvalidParametersError("type") | |
} | |
} | |
}(this)).then(function(e) { | |
return function(e) { | |
return a({ | |
success: !0, | |
data: e | |
}) | |
} | |
}(this))["catch"](function(e) { | |
return a({ | |
success: !1, | |
error: (null != e ? e.message : void 0) || (null != e ? e.name : void 0) | |
}) | |
})["catch"](function() {}), !0) | |
}, e.prototype._onTabCreated = function(e) { | |
return this._refreshUrl(null != e ? e.id : void 0), honey.messages.send("tabs:created", { | |
tabId: null != e ? e.id : void 0 | |
}, { | |
background: !0, | |
allTabs: !0, | |
ignoreResponse: !0 | |
}) | |
}, e.prototype._onTabUpdated = function(e, t, a) { | |
return this._refreshUrl(e), honey.messages.send("tabs:updated", { | |
tabId: null != a ? a.id : void 0, | |
status: null != a ? a.status : void 0 | |
}, { | |
background: !0, | |
allTabs: !0, | |
ignoreResponse: !0 | |
}) | |
}, e.prototype._onTabRemoved = function(e) { | |
return delete this._tabUrls[e], honey.messages.send("tabs:removed", { | |
tabId: e | |
}, { | |
background: !0, | |
allTabs: !0, | |
ignoreResponse: !0 | |
}) | |
}, e.prototype._onTabReplaced = function(e, t) { | |
return this._tabIdMappings[e] = t, this._tabsPending = this._tabsPending.filter(function(t) { | |
return function(t) { | |
if (t.id === e) { | |
try { | |
"function" == typeof t.resolve && t.resolve(!0) | |
} catch (a) {} | |
return !1 | |
} | |
return !0 | |
} | |
}(this)) | |
}, e.prototype._refreshUrl = function(e) { | |
return e ? new Promise(function(t) { | |
return function(a, o) { | |
return chrome.tabs.get(e, function(a) { | |
var o, n; | |
return (null != a ? a.url : void 0) ? t._tabUrls[e] = a.url : ((o = null != (n = chrome.runtime.lastError) ? n.message : void 0) && honey.logger.warn(new Error(o)), delete t._tabUrls[e]) | |
}) | |
} | |
}(this)) : void 0 | |
}, e.prototype._waitReady = function(e) { | |
if (!((null != e ? e.id : void 0) >= 0)) throw new InvalidParametersError("Invalid tab"); | |
return e.index >= 0 ? !0 : new Promise(function(t) { | |
return function(a, o) { | |
var n, i; | |
if (n = t._tabsPending.push({ | |
id: e.id, | |
resolve: a, | |
reject: o, | |
expires: Moment().add(6, "hours").unix() | |
}), n > 2e4) try { | |
return null != (i = t._tabsPending.shift()) && "function" == typeof i.reject ? i.reject(new CancellationError) : void 0 | |
} catch (r) {} | |
} | |
}(this)) | |
}, e.prototype._cleanPendingTabs = function() { | |
var e; | |
return e = Moment().unix(), this._tabsPending = this._tabsPending.filter(function(t) { | |
return function(t) { | |
if ((null != t ? t.expires : void 0) > e) return !0; | |
try { | |
"function" == typeof t.reject && t.reject(new CancellationError) | |
} catch (a) {} | |
return !1 | |
} | |
}(this)) | |
}, e | |
}())) | |
}.call(this), | |
function() { | |
var e, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
null == (e = honey._native).webHooks && (e.webHooks = new(function() { | |
function e() { | |
this.removeErrorOccurredListener = bind(this.removeErrorOccurredListener, this), this.addErrorOccurredListener = bind(this.addErrorOccurredListener, this), this.removeCompleteListener = bind(this.removeCompleteListener, this), this.addCompleteListener = bind(this.addCompleteListener, this), this.removeResponseStartedListener = bind(this.removeResponseStartedListener, this), this.addResponseStartedListener = bind(this.addResponseStartedListener, this), this.removeBeforeRedirectListener = bind(this.removeBeforeRedirectListener, this), this.addBeforeRedirectListener = bind(this.addBeforeRedirectListener, this), this.removeAuthRequiredListener = bind(this.removeAuthRequiredListener, this), this.addAuthRequiredListener = bind(this.addAuthRequiredListener, this), this.removeHeadersReceivedListener = bind(this.removeHeadersReceivedListener, this), this.addHeadersReceivedListener = bind(this.addHeadersReceivedListener, this), this.removeSendHeadersListener = bind(this.removeSendHeadersListener, this), this.addSendHeadersListener = bind(this.addSendHeadersListener, this), this.removeBeforeSendHeadersListener = bind(this.removeBeforeSendHeadersListener, this), this.addBeforeSendHeadersListener = bind(this.addBeforeSendHeadersListener, this), this.removeBeforeRequestListener = bind(this.removeBeforeRequestListener, this), this.addBeforeRequestListener = bind(this.addBeforeRequestListener, this) | |
} | |
return e.prototype.addBeforeRequestListener = function(e, t) { | |
var a; | |
return a = ["requestBody"], (null != t ? t.blocking : void 0) && a.unshift("blocking"), chrome.webRequest.onBeforeRequest.addListener(e, { | |
urls: (null != t ? t.urls : void 0) || ["<all_urls>"], | |
types: null != t ? t.types : void 0, | |
tabId: null != t ? t.tabId : void 0 | |
}, a) | |
}, e.prototype.removeBeforeRequestListener = function(e) { | |
return chrome.webRequest.onBeforeRequest.removeListener(e) | |
}, e.prototype.addBeforeSendHeadersListener = function(e, t) { | |
var a; | |
return a = ["requestHeaders"], (null != t ? t.blocking : void 0) && a.unshift("blocking"), chrome.webRequest.onBeforeSendHeaders.addListener(e, { | |
urls: (null != t ? t.urls : void 0) || ["<all_urls>"], | |
types: null != t ? t.types : void 0, | |
tabId: null != t ? t.tabId : void 0 | |
}, a) | |
}, e.prototype.removeBeforeSendHeadersListener = function(e) { | |
return chrome.webRequest.onBeforeSendHeaders.removeListener(e) | |
}, e.prototype.addSendHeadersListener = function(e, t) { | |
var a; | |
return a = ["requestHeaders"], chrome.webRequest.onSendHeaders.addListener(e, { | |
urls: (null != t ? t.urls : void 0) || ["<all_urls>"], | |
types: null != t ? t.types : void 0, | |
tabId: null != t ? t.tabId : void 0 | |
}, a) | |
}, e.prototype.removeSendHeadersListener = function(e) { | |
return chrome.webRequest.onSendHeaders.removeListener(e) | |
}, e.prototype.addHeadersReceivedListener = function(e, t) { | |
var a; | |
return a = ["responseHeaders"], (null != t ? t.blocking : void 0) && a.unshift("blocking"), chrome.webRequest.onHeadersReceived.addListener(e, { | |
urls: (null != t ? t.urls : void 0) || ["<all_urls>"], | |
types: null != t ? t.types : void 0, | |
tabId: null != t ? t.tabId : void 0 | |
}, a) | |
}, e.prototype.removeHeadersReceivedListener = function(e) { | |
return chrome.webRequest.onHeadersReceived.removeListener(e) | |
}, e.prototype.addAuthRequiredListener = function(e, t) { | |
var a; | |
return a = ["responseHeaders"], (null != t ? t.blocking : void 0) && a.unshift("blocking"), chrome.webRequest.onAuthRequired.addListener(e, { | |
urls: (null != t ? t.urls : void 0) || ["<all_urls>"], | |
types: null != t ? t.types : void 0, | |
tabId: null != t ? t.tabId : void 0 | |
}, a) | |
}, e.prototype.removeAuthRequiredListener = function(e) { | |
return chrome.webRequest.onAuthRequired.removeListener(e) | |
}, e.prototype.addBeforeRedirectListener = function(e, t) { | |
var a; | |
return a = ["responseHeaders"], chrome.webRequest.onBeforeRedirect.addListener(e, { | |
urls: (null != t ? t.urls : void 0) || ["<all_urls>"], | |
types: null != t ? t.types : void 0, | |
tabId: null != t ? t.tabId : void 0 | |
}, a) | |
}, e.prototype.removeBeforeRedirectListener = function(e) { | |
return chrome.webRequest.onBeforeRedirect.removeListener(e) | |
}, e.prototype.addResponseStartedListener = function(e, t) { | |
var a; | |
return a = ["responseHeaders"], chrome.webRequest.onResponseStarted.addListener(e, { | |
urls: (null != t ? t.urls : void 0) || ["<all_urls>"], | |
types: null != t ? t.types : void 0, | |
tabId: null != t ? t.tabId : void 0 | |
}, a) | |
}, e.prototype.removeResponseStartedListener = function(e) { | |
return chrome.webRequest.onResponseStarted.removeListener(e) | |
}, e.prototype.addCompleteListener = function(e, t) { | |
var a; | |
return a = ["responseHeaders"], chrome.webRequest.onCompleted.addListener(e, { | |
urls: (null != t ? t.urls : void 0) || ["<all_urls>"], | |
types: null != t ? t.types : void 0, | |
tabId: null != t ? t.tabId : void 0 | |
}, a) | |
}, e.prototype.removeCompleteListener = function(e) { | |
return chrome.webRequest.onCompleted.removeListener(e) | |
}, e.prototype.addErrorOccurredListener = function(e, t) { | |
return chrome.webRequest.onErrorOccurred.addListener(e, { | |
urls: (null != t ? t.urls : void 0) || ["<all_urls>"], | |
types: null != t ? t.types : void 0, | |
tabId: null != t ? t.tabId : void 0 | |
}) | |
}, e.prototype.removeErrorOccurredListener = function(e) { | |
return chrome.webRequest.onErrorOccurred.removeListener(e) | |
}, e | |
}())) | |
}.call(this), | |
function e(t, a, o) { | |
function n(r, u) { | |
if (!a[r]) { | |
if (!t[r]) { | |
var s = "function" == typeof require && require; | |
if (!u && s) return s(r, !0); | |
if (i) return i(r, !0); | |
var c = new Error("Cannot find module '" + r + "'"); | |
throw c.code = "MODULE_NOT_FOUND", c | |
} | |
var l = a[r] = { | |
exports: {} | |
}; | |
t[r][0].call(l.exports, function(e) { | |
var a = t[r][1][e]; | |
return n(a ? a : e) | |
}, l, l.exports, e, t, a, o) | |
} | |
return a[r].exports | |
} | |
for (var i = "function" == typeof require && require, r = 0; r < o.length; r++) n(o[r]); | |
return n | |
}({ | |
1: [function(e, t, a) { | |
"use strict"; | |
function o(e, t) { | |
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") | |
} | |
Object.defineProperty(a, "__esModule", { | |
value: !0 | |
}); | |
var n = function() { | |
function e(e, t) { | |
for (var a = 0; a < t.length; a++) { | |
var o = t[a]; | |
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o) | |
} | |
} | |
return function(t, a, o) { | |
return a && e(t.prototype, a), o && e(t, o), t | |
} | |
}(), | |
i = function() { | |
function e() { | |
var t = this; | |
o(this, e), this.storage = honey.storage.local.prefixed("stores"), this.pendingTags = {}, this.pendingRequests = {}, this.goldActivations = {}, honey.webHooks.addBeforeSendHeadersListener(this.onBeforeSendHeadersWebHook.bind(this), { | |
types: ["sub_frame"], | |
blocking: !0 | |
}), honey.webHooks.addHeadersReceivedListener(this.onHeadersReceivedWebHook.bind(this), { | |
types: ["sub_frame"], | |
blocking: !0 | |
}), this.ready = this.storage.get("goldActivations")["catch"](function() {}).then(function(e) { | |
return t.goldActivations = e || {}, t.cleanup() | |
}), setInterval(this.cleanup.bind(this), 6e4) | |
} | |
return n(e, [{ | |
key: "onBeforeSendHeadersWebHook", | |
value: function(e) { | |
var t = e.url, | |
a = e.requestId, | |
o = e.requestHeaders, | |
n = t.match(/^https?\:\/\/(?:o|out)\.joinhoney\.com\/store\/\d+\/([^\/\?]+).*[\?&]turl=([^&#]*)/); | |
n && "website" != n[1] && (this.pendingRequests[a] = { | |
url: decodeURIComponent(n[2] || "").trim(), | |
expires: Moment().add(3, "minutes").unix() | |
}); | |
var i = this.pendingRequests[a]; | |
if (i) { | |
var r = !1; | |
return o = o.filter(function(e) { | |
switch (honey.util.cleanStringLower(e && e.name)) { | |
case "referrer": | |
return e.value = i.url, r = !0, !0; | |
case "x-requested-with": | |
return !1; | |
default: | |
return !0 | |
} | |
}), r || o.push({ | |
name: "Referer", | |
value: i.url | |
}), { | |
requestHeaders: o | |
} | |
} | |
} | |
}, { | |
key: "onHeadersReceivedWebHook", | |
value: function(e) { | |
var t = e.tabId, | |
a = e.responseHeaders; | |
if (0 > t) { | |
var o = a.length; | |
if (a = a.filter(function(e) { | |
return "x-frame-options" !== honey.util.cleanStringLower(e && e.name) | |
}), o !== a.length) return { | |
responseHeaders: a | |
} | |
} | |
} | |
}, { | |
key: "activateStoreGold", | |
value: function(e, t) { | |
var a = this; | |
return honey.user.getUserId().then(function(o) { | |
var n = Moment().unix(); | |
t = t || {}, t.userId = o, e.gold.activated = a.goldActivations[e.id + ":" + o] = { | |
ttl: e.gold.activateTTL || 3600, | |
timestamp: n | |
}; | |
var i = { | |
store: e, | |
cashback_claim: { | |
succeeded: !0 | |
}, | |
cashback_offer: { | |
claimed: n | |
} | |
}; | |
return t.standUp && (i.stand_up = !0), Promise.all([a.tag(e.id, "offer_claim", null, t), honey.stats.sendEvent("ext008002", i).reflect(), a.storage.set("goldActivations", a.goldActivations).reflect()]) | |
}).then(function() { | |
return e | |
}) | |
} | |
}, { | |
key: "deactivateStoreGold", | |
value: function(e) { | |
var t = this; | |
return honey.user.getUserId().then(function(a) { | |
delete t.goldActivations[e + ":" + a] | |
}) | |
} | |
}, { | |
key: "getStoreGoldActivated", | |
value: function(e, t) { | |
var a = this; | |
return Promise["try"](function() { | |
return t || honey.user.getUserId() | |
}).then(function(t) { | |
var o = a.goldActivations[e + ":" + t]; | |
return o && o.timestamp + o.ttl > Moment().unix() ? { | |
ttl: o.ttl, | |
timestamp: o.timestamp | |
} : void 0 | |
}) | |
} | |
}, { | |
key: "tag", | |
value: function(e, t, a, o) { | |
var n = this; | |
if (t = honey.util.cleanStringLower(t), ["hbc", "offer_claim", "extension_links"].indexOf(t) < 0) throw new InvalidParametersError("Invalid tag type: " + t); | |
return o = o || {}, Promise.all([honey.stores.getStoreById(e), o.userId || honey.user.getUserId()]).spread(function(e, t) { | |
return Promise.all([e, t, honey.user.getExv(), n.getStoreGoldActivated(e.id, t)]) | |
}).spread(function(e, i, r, u) { | |
var s = "" + (u ? "g" : "u") + i, | |
c = "https://o.joinhoney.com/store/" + e.id + "/" + t + "?exv=" + r + "¶m0=" + s + "&turl=" + encodeURIComponent(honey.util.cleanString(a)); | |
if (n.pendingTags[c] > Moment().unix()) throw new OperationSkippedError; | |
var l = void 0; | |
return l = o.forceHidden ? !1 : e.metadata.pns_tagInTab ? !0 : n.shouldTagInTab(e), Promise.all([c, l]) | |
}).spread(function(a, i) { | |
var r = i ? n.tagInTab(a, e) : n.tagInFrame(a, e, o.forceHidden); | |
honey.stores.setSessionAttribute(e, "tagged", !0); | |
var u = Moment().unix(); | |
return o.standUp && honey.stores.setSessionAttribute(e, "standUpTs", u), honey.stores.setSessionAttribute(e, "taggedTs", u), r.then(function() { | |
return honey.stats.sendEvent("ext300002", { | |
store: { | |
id: e | |
}, | |
aff_url: a, | |
type: t | |
}) | |
})["catch"](function() {}) | |
}) | |
} | |
}, { | |
key: "shouldTagInTab", | |
value: function(e) { | |
if ("sf" !== honey.platform) return Promise.resolve(!1); | |
var t = $.ajax({ | |
type: "get", | |
url: e.url | |
}); | |
Promise.resolve(t).then(function() { | |
return !!t.getResponseHeader("X-Frame-Options") | |
})["catch"](function() { | |
return !1 | |
}) | |
} | |
}, { | |
key: "checkIframePossible", | |
value: function() { | |
return new Promise(function(e, t) { | |
var a = "ready", | |
o = $("#check-iframe"); | |
o.length || (a = "load", o = $('<iframe id="check-iframe" src="https://www.joinhoney.com/hz/alive" />').appendTo("body")), o[a](function() { | |
try { | |
return o.contents(), t() | |
} catch (a) { | |
return e() | |
} | |
}) | |
}) | |
} | |
}, { | |
key: "tagInTab", | |
value: function(e, t) { | |
var a = this; | |
return honey.tabs.open({ | |
url: e, | |
active: !1 | |
}).then(function(t) { | |
a.pendingTags[e] = Moment().add(5, "seconds").unix(); | |
var o = Moment().add(2, "minutes"), | |
n = function i(n) { | |
return Promise.delay(n).then(function() { | |
return honey.tabs.get(t) | |
}).then(function(e) { | |
return !e || "complete" !== e.readyState && "complete" !== e.status ? o.isAfter() ? i(2e3) : void 0 : Promise.delay(2e3).then(function() { | |
return honey.tabs.close(t) | |
}) | |
}).reflect()["finally"](function() { | |
delete a.pendingTags[e] | |
}) | |
}; | |
n(5e3) | |
}) | |
} | |
}, { | |
key: "tagInFrame", | |
value: function(e, t, a) { | |
var o = this; | |
return this.checkIframePossible().then(function() { | |
var t = $('<iframe src="' + e + '" />').appendTo("body"); | |
o.pendingTags[e] = Moment().add(5, "seconds").unix(), setTimeout(function() { | |
delete o.pendingTags[e], t.remove(), "production" === honey.environment && console.clear() | |
}, 9e4) | |
})["catch"](function() { | |
if (honey.stats.sendEvent("ext000011", { | |
store: { | |
id: t | |
}, | |
aff_url: e | |
}).reflect(), a) throw new OperationSkippedError("Unable to tag: forceHidden with no iframe available"); | |
return o.tagInTab(e, t) | |
}) | |
} | |
}, { | |
key: "cleanup", | |
value: function() { | |
var e = Moment().unix(), | |
t = !1; | |
for (var a in this.goldActivations) { | |
var o = this.goldActivations[a]; | |
o && o.timestamp + o.ttl > e || (delete this.goldActivations[a], t = !0) | |
} | |
t && this.storage.set("goldActivations", this.goldActivations).reflect() | |
} | |
}]), e | |
}(); | |
a["default"] = i | |
}, {}], | |
2: [function(e, t, a) { | |
"use strict"; | |
function o(e) { | |
return e && e.__esModule ? e : { | |
"default": e | |
} | |
} | |
function n(e, t) { | |
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") | |
} | |
Object.defineProperty(a, "__esModule", { | |
value: !0 | |
}); | |
var i = function() { | |
function e(e, t) { | |
for (var a = 0; a < t.length; a++) { | |
var o = t[a]; | |
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o) | |
} | |
} | |
return function(t, a, o) { | |
return a && e(t.prototype, a), o && e(t, o), t | |
} | |
}(), | |
r = e("change-case"), | |
u = o(r), | |
s = e("clone"), | |
c = o(s), | |
l = function() { | |
function e() { | |
n(this, e), this.storage = honey.storage.local.prefixed("stores"), this.fetchingDetails = {} | |
} | |
return i(e, [{ | |
key: "getStoreInfo", | |
value: function(e) { | |
var t = this; | |
return this.fetchingDetails[e] ? this.fetchingDetails[e] : this.fetchingDetails[e] = this.storage.get("id:" + e).then(function(a) { | |
var o = Moment().unix(); | |
if (!(a && a.id && a.expiresHard > o)) throw new NotFoundError; | |
return a.expiresSoft > o || t.fetchStoreInfoFromServer(e).reflect(), a | |
})["catch"](NotFoundError, function() { | |
return Promise["try"](function() { | |
return t.fetchStoreInfoFromServer(e) | |
})["catch"](UnavailableError, function() { | |
return t.storage.get("id:" + e) | |
})["catch"](NotFoundError, function() { | |
return { | |
id: e, | |
supported: !1 | |
} | |
}) | |
}).then(function(e) { | |
return e = c["default"](e), delete e.expiresSoft, delete e.expiresHard, e | |
})["finally"](function() { | |
delete t.fetchingDetails[e] | |
}) | |
} | |
}, { | |
key: "fetchStoreInfoFromServer", | |
value: function(e) { | |
var t = this, | |
a = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 2; | |
return Promise["try"](function() { | |
if (t.serverFetchBackoff && t.serverFetchBackoff.nextTs > Moment().unix()) throw new UnavailableError; | |
return delete t.serverFetchBackoff, $.getAsync(DATA_API_URL + "/stores/" + e, { | |
coupons: 1, | |
meta: 1, | |
affiliate: 1, | |
stats: 1, | |
ugc: 1, | |
gold: 1 | |
}) | |
}).then(function(a) { | |
if (!a || !a.id) throw new NotFoundError; | |
var o = {}; | |
for (var n in a) o[u["default"].camel(n)] = a[n]; | |
return o.expiresSoft = Moment().add(10, "minutes").unix(), o.expiresHard = Moment().add(15, "minutes").unix(), t.storage.set("id:" + e, o).reflect(), o | |
})["catch"](NotFoundError, function() { | |
return { | |
id: e, | |
supported: !1, | |
expiresSoft: Moment().add(10, "minutes").unix(), | |
expiresHard: Moment().add(15, "minutes").unix() | |
} | |
})["catch"](function(o) { | |
if (a > 0) return honey.logger.debug("Failed to fetch information for store " + e + " from the server (" + a + " retries left)"), Promise.delay(500).then(function() { | |
return t.fetchStoreInfoFromServer(e, a - 1) | |
}); | |
throw t.serverFetchBackoff = t.serverFetchBackoff || {}, t.serverFetchBackoff.delay = Math.min(2 * t.serverFetchBackoff.delay, 30) || 4, t.serverFetchBackoff.nextTs = Moment().unix() + t.serverFetchBackoff.delay, honey.logger.debug("Failed to fetch information for store " + e + " from the server: " + ("backing off for " + t.serverFetchBackoff.delay + " seconds")), new UnavailableError | |
}) | |
} | |
}]), e | |
}(); | |
a["default"] = l | |
}, { | |
"change-case": 92, | |
clone: 93 | |
}], | |
3: [function(e, t, a) { | |
"use strict"; | |
function o(e) { | |
return e && e.__esModule ? e : { | |
"default": e | |
} | |
} | |
function n(e, t) { | |
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") | |
} | |
Object.defineProperty(a, "__esModule", { | |
value: !0 | |
}); | |
var i = function() { | |
function e(e, t) { | |
for (var a = 0; a < t.length; a++) { | |
var o = t[a]; | |
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o) | |
} | |
} | |
return function(t, a, o) { | |
return a && e(t.prototype, a), o && e(t, o), t | |
} | |
}(), | |
r = e("clone"), | |
u = o(r), | |
s = function() { | |
function e() { | |
n(this, e), this.storage = honey.storage.local.prefixed("stores") | |
} | |
return i(e, [{ | |
key: "getPopularOffers", | |
value: function() { | |
var e = this; | |
return this.fetchingPopularOffers ? this.fetchingPopularOffers : this.fetchingPopularOffers = Promise["try"](function() { | |
return e.storage.get("popularOffers") | |
}).then(function(t) { | |
return t && t.expires > Moment().unix() ? t.offers : e.fetchRemotePopularOffers() | |
})["catch"](NotFoundError, function() { | |
return e.fetchRemotePopularOffers() | |
})["finally"](function() { | |
delete e.fetchingPopularOffers | |
}) | |
} | |
}, { | |
key: "fetchRemotePopularOffers", | |
value: function() { | |
var e = this; | |
return $.getAsync(DATA_API_URL + "/csbk/offers?mode=popular").then(function(t) { | |
var a = { | |
offers: t, | |
expires: Moment().add(1, "hour").unix() | |
}; | |
return e.storage.set("popularOffers", a).reflect(), u["default"](t) | |
}) | |
} | |
}]), e | |
}(); | |
a["default"] = s | |
}, { | |
clone: 93 | |
}], | |
4: [function(e, t, a) { | |
"use strict"; | |
function o(e) { | |
return e && e.__esModule ? e : { | |
"default": e | |
} | |
} | |
function n(e, t) { | |
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") | |
} | |
Object.defineProperty(a, "__esModule", { | |
value: !0 | |
}); | |
var i = function() { | |
function e(e, t) { | |
for (var a = 0; a < t.length; a++) { | |
var o = t[a]; | |
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o) | |
} | |
} | |
return function(t, a, o) { | |
return a && e(t.prototype, a), o && e(t, o), t | |
} | |
}(), | |
r = e("clone"), | |
u = (o(r), function() { | |
function e() { | |
n(this, e), this.storage = honey.storage.local.prefixed("stores"), this.searches = {} | |
} | |
return i(e, [{ | |
key: "searchStores", | |
value: function(e) { | |
var t = this, | |
a = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : !1, | |
o = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 10; | |
if (e = honey.util.cleanString(e), !e) throw new InvalidParametersError("stores search query"); | |
return this.searches[e] ? this.searches[e] : this.searches[e] = $.getAsync(DATA_API_URL + "/stores/search", { | |
search: e, | |
limit: o, | |
stats: a ? 1 : 0, | |
gold: 1 | |
}).then(function(e) { | |
return e && e.stores && e.stores.length ? e.stores : [] | |
})["finally"](function() { | |
delete t.searches[e] | |
}) | |
} | |
}]), e | |
}()); | |
a["default"] = u | |
}, { | |
clone: 93 | |
}], | |
5: [function(e, t, a) { | |
"use strict"; | |
function o(e) { | |
return e && e.__esModule ? e : { | |
"default": e | |
} | |
} | |
function n(e, t) { | |
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") | |
} | |
Object.defineProperty(a, "__esModule", { | |
value: !0 | |
}); | |
var i = function() { | |
function e(e, t) { | |
for (var a = 0; a < t.length; a++) { | |
var o = t[a]; | |
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o) | |
} | |
} | |
return function(t, a, o) { | |
return a && e(t.prototype, a), o && e(t, o), t | |
} | |
}(), | |
r = e("clone"), | |
u = o(r), | |
s = { | |
tagged: !0, | |
activated: !0, | |
applyCodesDuration: !0, | |
applyCodesShown: !0, | |
applyCodesComplete: !0, | |
applyCodesCancelled: !0, | |
applyCodesClick: !0, | |
userInitiated: !0, | |
userHBC: !0, | |
startPrice: !0, | |
finalPrice: !0, | |
applyCodesData: !0, | |
taggedTs: !0, | |
standUpTs: !0, | |
standDownTs: !0, | |
standDownMethod: !0, | |
standUpTabId: !0, | |
standDownValue: !0, | |
hasStoodUp: !0, | |
manualCoupon: !0 | |
}, | |
c = function() { | |
function e() { | |
var t = this; | |
n(this, e), this.storage = honey.storage.local.prefixed("stores"), this.sessions = {}, this.ready = this.storage.get("sessions")["catch"](NotFoundError, function() {}).then(function(e) { | |
return t.sessions = e || {}, t.cleanup() | |
}), setInterval(this.cleanup.bind(this), 6e4) | |
} | |
return i(e, [{ | |
key: "getSession", | |
value: function(e) { | |
var t = this.sessions[e]; | |
return t && t.expires > Moment().unix() ? u["default"](t) : null | |
} | |
}, { | |
key: "upsertSession", | |
value: function(e) { | |
var t = this; | |
e = honey.util.cleanString(e); | |
var a = this.sessions[e]; | |
return Promise["try"](function() { | |
var o = Moment().add(3, "hours").unix(); | |
if (!(a && a.expires > Moment().unix())) { | |
a = t.sessions[e] = { | |
id: Moment().valueOf(), | |
expires: o, | |
attributes: {}, | |
tagged: !1 | |
}; | |
var n = honey.messages.send("stores:session:started", { | |
storeId: e, | |
sessionId: a.id | |
}, { | |
allTabs: !0, | |
background: !0, | |
ignoreResponse: !0 | |
}).reflect(), | |
i = honey.stats.sendEvent("ext004001", { | |
store: { | |
id: e, | |
session_id: a.id | |
} | |
}).reflect(); | |
return honey.logger.debug("Started session " + a.id + " for store " + e), Promise.all([n, i]) | |
} | |
a.expires = o | |
}).then(function() { | |
return t.storage.set("sessions", t.sessions).reflect(), u["default"](a) | |
}) | |
} | |
}, { | |
key: "activateSession", | |
value: function(e) { | |
var t = this.sessions[e]; | |
return t && t.expires > Moment().unix() && !t.activated ? (t.activated = Moment().unix(), honey.stats.sendEvent("ext004002", { | |
store: { | |
id: e, | |
sessionId: t.id | |
} | |
}).reflect(), this.storage.set("sessions", this.sessions).reflect(), !0) : !1 | |
} | |
}, { | |
key: "setSessionAttribute", | |
value: function(e, t, a) { | |
if (!s[t]) throw new InvalidParametersError("Invalid session attribute"); | |
var o = this.sessions[e]; | |
o && o.expires > Moment().unix() && (o.attributes[t] = a, this.storage.set("sessions", this.sessions).reflect()) | |
} | |
}, { | |
key: "cleanup", | |
value: function() { | |
var e = Moment().unix(); | |
for (var t in this.sessions) { | |
var a = this.sessions[t]; | |
a && a.expires > e || delete this.sessions[t] | |
} | |
this.storage.set("sessions", this.sessions).reflect() | |
} | |
}]), e | |
}(); | |
a["default"] = c | |
}, { | |
clone: 93 | |
}], | |
6: [function(e, t, a) { | |
"use strict"; | |
function o(e, t) { | |
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") | |
} | |
Object.defineProperty(a, "__esModule", { | |
value: !0 | |
}); | |
var n = function() { | |
function e(e, t) { | |
for (var a = 0; a < t.length; a++) { | |
var o = t[a]; | |
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o) | |
} | |
} | |
return function(t, a, o) { | |
return a && e(t.prototype, a), o && e(t, o), t | |
} | |
}(), | |
i = function() { | |
function e() { | |
var t = this; | |
o(this, e), this.storage = honey.storage.local.prefixed("stores"), this.standDownTypes = { | |
base: 1, | |
stdn: 2, | |
nopopup: 3, | |
suspend: 4 | |
}, this.honeyOutUrlRegex = /^https?\:\/\/(?:o|out)\.joinhoney\.com\//i, this.standDownRules = {}, this.standDownStatus = {}, this.pendingRequests = {}, honey.webHooks.addHeadersReceivedListener(this.onHeadersReceivedNonBlocking.bind(this), { | |
blocking: !1, | |
types: ["main_frame"] | |
}), this.ready = Promise["try"](function() { | |
t.storage.get("standDownStatus")["catch"](function() {}) | |
}).then(function(e) { | |
return t.standDownStatus = e || {}, Promise.all([t.cleanup(), t.checkForRulesUpdates()]) | |
}), setInterval(this.cleanup.bind(this), 3e4), setInterval(this.checkForRulesUpdates.bind(this), 3e4) | |
} | |
return n(e, [{ | |
key: "getStoreTabStandDownStatus", | |
value: function(e, t) { | |
if (!(e && t >= 0)) return !1; | |
var a = this.standDownStatus[e + ":" + t]; | |
return a && a.expires > Moment().unix() ? a.status : !1 | |
} | |
}, { | |
key: "getStoreTabStandDownValue", | |
value: function(e, t) { | |
return this.standDownTypes[this.getStoreTabStandDownStatus(e, t)] | |
} | |
}, { | |
key: "setStoreTabStandDownStatus", | |
value: function(e, t, a) { | |
var o = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : Moment.duration(1, "hour").asSeconds(); | |
if (!(parseInt(e) > 0)) throw new InvalidParametersError("Invalid store identifier"); | |
if (!(parseInt(t) > 0)) throw new InvalidParametersError("Invalid tab identifier"); | |
if (!(o > 0)) throw new InvalidParametersError("Invalid TTL"); | |
if (a !== !1 && !this.standDownTypes[a]) throw new InvalidParametersError("Invalid stand down status: " + a); | |
a ? (this.standDownStatus[e + ":" + t] = { | |
status: a, | |
expires: Moment().add(o, "seconds").unix() | |
}, honey.stores.setSessionAttribute(e, "tagged", !1), honey.stores.setSessionAttribute(e, "standDownTs", Moment().unix()), honey.stores.setSessionAttribute(e, "standDownMethod", a), honey.stores.setSessionAttribute(e, "standDownValue", this.standDownTypes[a]), honey.stores.setSessionAttribute(e, "hasStoodUp", !1), "suspend" === a && honey.button.setButtonInactive(t)) : delete this.standDownStatus[e + ":" + t], this.storage.set("standDownStatus", this.standDownStatus).reflect() | |
} | |
}, { | |
key: "isStoreActiveInOtherTabs", | |
value: function(e, t) { | |
return new Promise(function(a, o) { | |
honey.user.getUserId().then(function(o) { | |
honey.stores.getClaimedOffers(o, [e]).then(function(o) { | |
o.length <= 0 && a(!1), honey.tabs.getAll().then(function(o) { | |
Promise.filter(o, function(a) { | |
return a && a.url && a.id !== t ? honey.stores.getStoreByUrl(a.url).then(function(t) { | |
return t && t.id === e | |
})["catch"](function() { | |
return !1 | |
}) : !1 | |
}).then(function(e) { | |
a(!!e.length) | |
}) | |
}) | |
}) | |
})["catch"](function() { | |
return a(!1) | |
}) | |
}) | |
} | |
}, { | |
key: "checkForRulesUpdates", | |
value: function() { | |
var e = this, | |
t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : !1, | |
a = Moment().unix(); | |
return !t && this.standDownRules.expires > a ? void 0 : this.checkingForRulesUpdates ? this.checkingForRulesUpdates : this.checkingForRulesUpdates = $.getAsync(DATA_API_URL + "/extdata/stdnrules").then(function(t) { | |
if (!t || !t.rules) throw new InvalidDataError("stand down rule set"); | |
var a = Math.max(Moment.duration(30, "minutes").asSeconds(), Math.min(Moment.duration(6, "hours").asSeconds(), parseInt(t.ttl))) || Moment.duration(30, "minutes").asSeconds(), | |
o = { | |
rules: [], | |
expires: Moment().add(a, "seconds").unix() | |
}; | |
Object.keys(e.standDownTypes).forEach(function(e) { | |
var a = t.rules[e] || []; | |
for (var n in a) { | |
var i = a[n]; | |
if (!i || "string" != typeof i.regex) throw new InvalidDataError("stand down rule regex"); | |
var r = i.regex.trim(); | |
if (!r) throw new InvalidDataError("stand down rule regex"); | |
o.rules.push({ | |
type: e, | |
regex: new RegExp(r, "i"), | |
ttl: Math.max(1, Math.min(Moment.duration(1, "day").asSeconds(), parseInt(i.ttl))) || null | |
}) | |
} | |
}), e.standDownRules = o | |
})["catch"](function(t) { | |
honey.logger.error(t), e.standDownRules.rules || (e.standDownRules.rules = []), e.standDownRules.expires = Moment().add(5, "minutes").unix() | |
})["finally"](function() { | |
delete e.checkingForRulesUpdates | |
}) | |
} | |
}, { | |
key: "onHeadersReceivedNonBlocking", | |
value: function(e) { | |
var t = this, | |
a = e.tabId, | |
o = e.statusCode, | |
n = e.url; | |
if (a >= 0 && o > 0 && this.standDownRules.rules && this.standDownRules.rules.length > 0) { | |
var i = Moment().unix(), | |
r = this.pendingRequests[a]; | |
if ((o >= 300 && 399 >= o || "sf" === honey.platform) && n.match(this.honeyOutUrlRegex)) r && r.expires >= i || (r = this.pendingRequests[a] = {}), r.isHoney = !0, r.expires = i + 5; | |
else if (!r || !(r.expires >= i && r.isHoney) || r.url !== n) { | |
for (var u in this.standDownRules.rules) { | |
var s = this.standDownRules.rules[u]; | |
n.match(s.regex) && (r && r.expires >= i || (r = this.pendingRequests[a] = {}), this.standDownTypes[r.standDownType] > this.standDownTypes[s.type] || (r.rule = s.regex.toString(), r.standDownType = s.type, r.standDownTtl = s.ttl, r.expires = i + 5, r.url = n)) | |
} | |
if (300 > o || o > 399) { | |
var c = this.pendingRequests[a]; | |
c && c.standDownType && !c.isHoney && c.expires >= Moment().unix() && honey.stores.getStoreByUrl(n).then(function(e) { | |
var o = t.getStoreTabStandDownStatus(e.id, a); | |
return t.standDownTypes[o] > t.standDownTypes[c.standDownType] || (t.setStoreTabStandDownStatus(e.id, a, c.standDownType, c.standDownTtl), c.standDownType && t.isStoreActiveInOtherTabs(e.id, a).then(function(t) { | |
honey.stats.sendEvent("ext300004", { | |
method: c.standDownType, | |
store: { | |
id: e.id | |
}, | |
honey_tab_open: t, | |
tagged: e.tagged, | |
rule: c.rule, | |
referral_url: c.url | |
}) | |
})), "sf" !== honey.platform && delete t.pendingRequests[a], e | |
})["finally"](function(e) { | |
(200 > o || o > 399) && honey.stats.sendEvent("ext300404", { | |
url: n, | |
status_code: o, | |
store: { | |
id: e ? e.id : void 0 | |
} | |
}) | |
}).reflect() | |
} | |
} | |
} | |
} | |
}, { | |
key: "cleanup", | |
value: function() { | |
var e = Moment().unix(), | |
t = !1; | |
for (var a in this.standDownStatus) { | |
var o = this.standDownStatus[a]; | |
o && o.expires > e || (delete this.standDownStatus[a], t = !0) | |
} | |
t && this.storage.set("standDownStatus", this.standDownStatus).reflect(); | |
for (var n in this.pendingRequests) { | |
var i = this.pendingRequests[n]; | |
i && i.expires > e || delete this.pendingRequests[n] | |
} | |
} | |
}]), e | |
}(); | |
a["default"] = i | |
}, {}], | |
7: [function(e, t, a) { | |
"use strict"; | |
function o(e) { | |
return e && e.__esModule ? e : { | |
"default": e | |
} | |
} | |
function n(e, t) { | |
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") | |
} | |
Object.defineProperty(a, "__esModule", { | |
value: !0 | |
}); | |
var i = function() { | |
function e(e, t) { | |
for (var a = 0; a < t.length; a++) { | |
var o = t[a]; | |
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o) | |
} | |
} | |
return function(t, a, o) { | |
return a && e(t.prototype, a), o && e(t, o), t | |
} | |
}(), | |
r = e("clone"), | |
u = o(r), | |
s = function() { | |
function e() { | |
n(this, e), this.storage = honey.storage.local.prefixed("stores"), this.fetchingTrendingPage = {} | |
} | |
return i(e, [{ | |
key: "getTrendingStores", | |
value: function(e) { | |
var t = this; | |
if (!(e >= 0 && 9 >= e)) throw new InvalidParametersError("Invalid trending stores page"); | |
return this.fetchingTrendingPage[e] ? this.fetchingTrendingPage[e] : this.fetchingTrendingPage[e] = Promise["try"](function() { | |
return t.storage.get("trendingStores") | |
}).then(function(a) { | |
return a && a[e] && a[e].expires > Moment().unix() ? a[e].stores : t.fetchRemoteTrendingStores(a, e) | |
})["catch"](NotFoundError, function() { | |
return t.fetchRemoteTrendingStores({}, e) | |
})["finally"](function() { | |
delete t.fetchingTrendingPage[e] | |
}) | |
} | |
}, { | |
key: "fetchRemoteTrendingStores", | |
value: function(e, t) { | |
var a = this; | |
return $.getAsync(DATA_API_URL + "/storesstats/trending", { | |
gold: 1, | |
page: t | |
}).then(function(o) { | |
return e[t] = o, a.storage.set("trendingStores", e).reflect(), u["default"](o.stores) | |
}) | |
} | |
}]), e | |
}(); | |
a["default"] = s | |
}, { | |
clone: 93 | |
}], | |
8: [function(e, t, a) { | |
"use strict"; | |
function o(e) { | |
return e && e.__esModule ? e : { | |
"default": e | |
} | |
} | |
function n(e, t) { | |
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") | |
} | |
Object.defineProperty(a, "__esModule", { | |
value: !0 | |
}); | |
var i = function() { | |
function e(e, t) { | |
for (var a = 0; a < t.length; a++) { | |
var o = t[a]; | |
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o) | |
} | |
} | |
return function(t, a, o) { | |
return a && e(t.prototype, a), o && e(t, o), t | |
} | |
}(), | |
r = e("parse-domain"), | |
u = o(r), | |
s = e("url"), | |
c = o(s), | |
l = function() { | |
function e() { | |
n(this, e), this.storage = honey.storage.local.prefixed("stores") | |
} | |
return i(e, [{ | |
key: "findStoreIdForUrl", | |
value: function(e) { | |
var t = this; | |
return Promise.resolve().then(function() { | |
e = honey.util.cleanStringLower(e); | |
var a = c["default"].parse(e) || {}, | |
o = a.protocol, | |
n = a.hostname, | |
i = a.pathname; | |
if (!n || !i || "http:" !== o && "https:" !== o) throw new NotFoundError("Invalid store URL"); | |
var r = u["default"](n); | |
if (!r) throw new NotFoundError("Invalid store URL"); | |
var s = r.domain, | |
l = r.tld; | |
if (!s || !l) throw new NotFoundError("Invalid store URL"); | |
var m = { | |
host: "." + n, | |
path: i.endsWith("/") ? i : i + "/", | |
domain: s + "." + l | |
}; | |
return t.getPartialDomainsMap().then(function(e) { | |
var t = e[m.domain] || {}, | |
a = Object.keys(t).reduce(function(e, a) { | |
var o = void 0, | |
n = void 0, | |
i = a.indexOf("/"); | |
return i >= 0 ? (o = "." + a.substr(0, i), n = a.substr(i) + "/") : (o = "." + a, n = "/"), e.lengthHost > o.length || e.lengthHost === o.length && e.lengthPath > n.length || !m.host.endsWith(o) || !m.path.startsWith(n) ? e : { | |
storeId: t[a].id, | |
lengthHost: o.length, | |
lengthPath: n.length | |
} | |
}, {}); | |
if (a.storeId) return a.storeId; | |
throw new NotFoundError | |
}) | |
}) | |
} | |
}, { | |
key: "getPartialDomainsMap", | |
value: function() { | |
var e = this; | |
return Promise.resolve(this.partialsData).then(function(t) { | |
return t || e.storage.get("partials") | |
}).then(function(t) { | |
var a = Moment().unix(); | |
if (!(t && t.perDomain && t.expiresHard > a)) throw new NotFoundError; | |
return t.expiresSoft > a || e.fetchRemotePartialsData().reflect(), t | |
})["catch"](NotFoundError, function() { | |
return e.fetchRemotePartialsData() | |
}).then(function(t) { | |
return (e.partialsData = t).perDomain | |
}) | |
} | |
}, { | |
key: "fetchRemotePartialsData", | |
value: function() { | |
var e = this; | |
if (this.fetchingPartialsData) return this.fetchingPartialsData; | |
var t = void 0; | |
return this.fetchingPartialsData = Promise["try"](function() { | |
return e.storage.get("partials") | |
})["catch"](NotFoundError, function() { | |
return {} | |
}).then(function(e) { | |
return t = e, $.getAsync(DATA_API_URL + "/partials", { | |
version: t.perDomain && t.version | |
}) | |
})["catch"](function() { | |
return {} | |
}).then(function(a) { | |
a = a || {}; | |
var o = a.version ? Math.max(1800, Math.min(259200, parseInt(a.ttl))) || 21600 : 3600; | |
return e.partialsData = { | |
version: a.version || t.version, | |
perDomain: a.partial_urls || t.perDomain || {}, | |
expiresSoft: Moment().add(.8 * o, "seconds").unix(), | |
expiresHard: Moment().add(o, "seconds").unix() | |
}, e.storage.set("partials", e.partialsData), e.partialsData | |
})["finally"](function() { | |
delete e.fetchingPartialsData | |
}) | |
} | |
}]), e | |
}(); | |
a["default"] = l | |
}, { | |
"parse-domain": 139, | |
url: 177 | |
}], | |
9: [function(e, t, a) { | |
"use strict"; | |
function o(e) { | |
return e && e.__esModule ? e : { | |
"default": e | |
} | |
} | |
function n(e, t) { | |
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") | |
} | |
Object.defineProperty(a, "__esModule", { | |
value: !0 | |
}); | |
var i = function() { | |
function e(e, t) { | |
for (var a = 0; a < t.length; a++) { | |
var o = t[a]; | |
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o) | |
} | |
} | |
return function(t, a, o) { | |
return a && e(t.prototype, a), o && e(t, o), t | |
} | |
}(), | |
r = e("./AffManager"), | |
u = o(r), | |
s = e("./InfoManager"), | |
c = o(s), | |
l = e("./PopularOffersManager"), | |
m = o(l), | |
p = e("./SearchManager"), | |
h = o(p), | |
d = e("./SessionManager"), | |
g = o(d), | |
f = e("./StandDownManager"), | |
k = o(f), | |
y = e("./TrendingManager"), | |
j = o(y), | |
v = e("./UrlMatcher"), | |
b = o(v), | |
w = function() { | |
function e() { | |
n(this, e), this.storage = honey.storage.local.prefixed("stores"), this.affManager = new u["default"], this.infoManager = new c["default"], this.popularOffersManager = new m["default"], this.searchManager = new h["default"], this.sessionManager = new g["default"], this.standDownManager = new k["default"], this.trendingManager = new j["default"], this.urlMatcher = new b["default"], honey.messages.addListener("page:load", this.onPageLoad.bind(this)), honey.messages.addListener("stores:action", this.onStoreActionMessage.bind(this)), honey.messages.addListener("ui:interaction", this.onUIInteraction.bind(this)), this.ready = Promise.all([this.affManager.ready, this.infoManager.ready, this.popularOffersManager.ready, this.searchManager.ready, this.sessionManager.ready, this.standDownManager.ready, this.trendingManager.ready, this.urlMatcher.ready]) | |
} | |
return i(e, [{ | |
key: "onStoreActionMessage", | |
value: function(e, t, a) { | |
if (t) { | |
var o = t.data || {}; | |
switch (t.action) { | |
case "getStoreById": | |
return this.getStoreById(o.storeId, a.tabId); | |
case "getStoreByUrl": | |
return this.getStoreByUrl(o.storeUrl, a.tabId); | |
case "search": | |
return this.search(o.query, o.stats, o.limit); | |
case "getTrending": | |
return this.getTrending(o.page); | |
case "getPopularOffers": | |
return this.getPopularOffers(); | |
case "setSessionAttribute": | |
return this.setSessionAttribute(o.storeId, o.attribute, o.value); | |
case "tag": | |
return this.tag(o.storeId, o.type, o.targetUrl, o.options, a.tabId); | |
case "activateStoreGold": | |
return this.activateStoreGold(o.storeId, o.taggingOptions, a.tabId); | |
case "deactivateStoreGold": | |
return this.deactivateStoreGold(o.storeId); | |
case "getClaimedOffers": | |
return this.getClaimedOffers(o.userId, o.stores); | |
case "getStoreTabStandDownStatus": | |
return this.getStoreTabStandDownStatus(o.storeId, a.tabId); | |
case "setStoreTabStandDownStatus": | |
return this.setStoreTabStandDownStatus(o.storeId, a.tabId, o.standDownStatus, o.ttlSeconds); | |
case "showTabStandUpMessage": | |
return this.showTabStandUpMessage(a.tabId, o.tabId); | |
case "hideTabStandUpMessage": | |
return this.hideTabStandUpMessage(a.tabId, o.tabId) | |
} | |
} | |
} | |
}, { | |
key: "showTabStandUpMessage", | |
value: function(e, t) { | |
e !== t && honey.messages.send("stores:action", { | |
action: "showTabStandUpMessage" | |
}, { | |
tab: t | |
})["catch"](function(e) {}) | |
} | |
}, { | |
key: "hideTabStandUpMessage", | |
value: function(e, t) { | |
e !== t && honey.messages.send("stores:action", { | |
action: "hideTabStandUpMessage" | |
}, { | |
tab: t | |
})["catch"](function(e) {}) | |
} | |
}, { | |
key: "onPageLoad", | |
value: function(e, t, a) { | |
var o = this; | |
t && t.url && a && a.tabId >= 0 && Promise["try"](function() { | |
return o.getStoreByUrl(t.url) | |
}).then(function(e) { | |
return Promise.all([e, o.sessionManager.getSession(e.id), honey.messages.send("stores:action", { | |
action: "getSubIds" | |
}, { | |
tab: a.tabId | |
})["catch"](function(e) {})]) | |
}).spread(function(e, a, o) { | |
o = o || [], honey.stats.sendEvent("ext001001", { | |
referrerUrl: t.url, | |
store: { | |
id: e.id, | |
sessionId: a.id, | |
subid1: o[0], | |
subid2: o[1], | |
subid3: o[2] | |
} | |
}, { | |
immediate: !0 | |
}) | |
}).reflect() | |
} | |
}, { | |
key: "onUIInteraction", | |
value: function(e, t, a) { | |
t && t.store && t.store.id && this.sessionManager.activateSession(t.store.id) | |
} | |
}, { | |
key: "getStoreById", | |
value: function(e, t) { | |
var a = this; | |
return Promise.all([this.infoManager.getStoreInfo(e), this.sessionManager.upsertSession(e), this.affManager.getStoreGoldActivated(e)]).spread(function(o, n, i) { | |
if (n) { | |
o.sessionId = n.id, o.tagged = n.tagged; | |
for (var r in n.attributes) o[r] = n.attributes[r] | |
} | |
return o.gold && o.gold.max > 0 && (o.gold.activated = i), t >= 0 && (o.standDown = a.standDownManager.getStoreTabStandDownStatus(e, t), o.standDownValue = a.standDownManager.getStoreTabStandDownValue(e, t), o.standDownValue > 1 && a.removeGold(o)), o | |
})["catch"](function() { | |
return { | |
id: e, | |
supported: !1 | |
} | |
}) | |
} | |
}, { | |
key: "removeGold", | |
value: function(e) { | |
var t = e.gold; | |
delete e.gold, e.hadGold = t || e.hadGold | |
} | |
}, { | |
key: "getStoreByUrl", | |
value: function(e, t) { | |
var a = this; | |
return this.urlMatcher.findStoreIdForUrl(e).then(function(e) { | |
return a.getStoreById(e, t) | |
}) | |
} | |
}, { | |
key: "getTrending", | |
value: function() { | |
var e = this, | |
t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0; | |
return this.trendingManager.getTrendingStores(t).each(function(t) { | |
return t.gold && t.gold.min > 0 ? e.affManager.getStoreGoldActivated(t.id).then(function(e) { | |
t.gold.activated = e | |
}) : void 0 | |
}) | |
} | |
}, { | |
key: "search", | |
value: function(e, t, a) { | |
var o = this; | |
return this.searchManager.searchStores(e, t, a).each(function(e) { | |
return e.gold && e.gold.min > 0 ? o.affManager.getStoreGoldActivated(e.id).then(function(t) { | |
e.gold.activated = t | |
}) : void 0 | |
}) | |
} | |
}, { | |
key: "tag", | |
value: function(e, t, a, o, n) { | |
var i = this.standDownManager.getStoreTabStandDownValue(e, n); | |
if (i > 1) throw new UnauthorizedError("Cannot tag: stand down is set to " + i); | |
return this.affManager.tag(e, t, a, o) | |
} | |
}, { | |
key: "activateStoreGold", | |
value: function(e, t, a) { | |
var o = this, | |
n = this.standDownManager.getStoreTabStandDownValue(e, a); | |
if (n > 1) throw new UnauthorizedError("Cannot activate Gold: stand down is set to " + n); | |
return this.getStoreById(e).then(function(e) { | |
if (!(e && e.gold && e.gold.max > 0)) throw new InvalidParametersError("Cannot activate Gold: offer not available"); | |
return o.affManager.activateStoreGold(e, t) | |
}) | |
} | |
}, { | |
key: "deactivateStoreGold", | |
value: function(e) { | |
return e ? this.affManager.deactivateStoreGold(e) : void 0 | |
} | |
}, { | |
key: "getClaimedOffers", | |
value: function(e) { | |
var t = this, | |
a = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : []; | |
return Promise.filter(a, function(e) { | |
return t.affManager.getStoreGoldActivated(e) | |
}) | |
} | |
}, { | |
key: "getPopularOffers", | |
value: function() { | |
return this.popularOffersManager.getPopularOffers() | |
} | |
}, { | |
key: "setSessionAttribute", | |
value: function(e, t, a) { | |
this.sessionManager.setSessionAttribute(e, t, a) | |
} | |
}, { | |
key: "getStoreTabStandDownStatus", | |
value: function(e, t) { | |
return this.standDownManager.getStoreTabStandDownStatus(e, t) | |
} | |
}, { | |
key: "setStoreTabStandDownStatus", | |
value: function(e, t, a, o) { | |
return this.standDownManager.setStoreTabStandDownStatus(e, t, a, o) | |
} | |
}]), e | |
}(); | |
a["default"] = w | |
}, { | |
"./AffManager": 1, | |
"./InfoManager": 2, | |
"./PopularOffersManager": 3, | |
"./SearchManager": 4, | |
"./SessionManager": 5, | |
"./StandDownManager": 6, | |
"./TrendingManager": 7, | |
"./UrlMatcher": 8 | |
}], | |
10: [function(e, t, a) { | |
var o, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
o = e("./hxmlhttprequest"), t.exports = function() { | |
function e() { | |
this._onHXMLHttpRequestAction = bind(this._onHXMLHttpRequestAction, this), this._onTabRemoved = bind(this._onTabRemoved, this), this._delActiveHXMLHttpRequest = bind(this._delActiveHXMLHttpRequest, this), this._addActiveHXMLHttpRequest = bind(this._addActiveHXMLHttpRequest, this), this._activeHXMLHttpRequestsPerId = {}, this._activeHXMLHttpRequestsPerTab = {}, honey.messages.addListener("tabs:removed", this._onTabRemoved), honey.messages.addListener("adbbp:hxmlhttprequest:action", this._onHXMLHttpRequestAction) | |
} | |
return e.prototype._addActiveHXMLHttpRequest = function(e) { | |
var t; | |
if (e) return this._activeHXMLHttpRequestsPerId[e.reqId] = e, (t = this._activeHXMLHttpRequestsPerTab[e.tabId]) || (t = this._activeHXMLHttpRequestsPerTab[e.tabId] = {}), t[e.reqId] = e | |
}, e.prototype._delActiveHXMLHttpRequest = function(e) { | |
var t; | |
if (e) return delete this._activeHXMLHttpRequestsPerId[e.reqId], (t = this._activeHXMLHttpRequestsPerTab[e.tabId]) && (delete t[e.reqId], !Object.keys(t).length) ? delete this._activeHXMLHttpRequestsPerTab[e.tabId] : void 0 | |
}, e.prototype._onTabRemoved = function(e, t, a) { | |
var o, n; | |
if (n = this._activeHXMLHttpRequestsPerTab[data.tabId]) { | |
for (o in n) delete this._activeHXMLHttpRequestsPerId[o]; | |
return delete this._activeHXMLHttpRequestsPerTab[tabId] | |
} | |
}, e.prototype._onHXMLHttpRequestAction = function(e, t, a) { | |
var n, i; | |
if ((null != t ? t.reqId : void 0) && "tab" === (null != a ? a.type : void 0) && a.tabId && "responseType" !== t.action) return n = this._activeHXMLHttpRequestsPerId[t.reqId], n || "open" !== t.action || (n = new o(this, t.reqId, a.tabId, null != (i = t.data) ? i.ctorOptions : void 0), this._addActiveHXMLHttpRequest(n)), n && t.action in n ? "function" == typeof n[t.action] ? n[t.action](t.data) : n[t.action] = t.data : void 0 | |
}, e | |
}() | |
}, { | |
"./hxmlhttprequest": 12 | |
}], | |
11: [function(e, t, a) { | |
var bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
t.exports = function() { | |
function e() { | |
this._getFiltersMessageListener = bind(this._getFiltersMessageListener, this), this.getFiltersForUrl = bind(this.getFiltersForUrl, this), this.fetchFilters = bind(this.fetchFilters, this), this.MIN_FETCH_PERIOD = 3600, this.MAX_FETCH_PERIOD = 259200, this.DEFAULT_FETCH_PERIOD = 21600, this.DEFAULT_FETCH_BACKOFF = 600, this._filters = [], this._fetchPeriod = this.DEFAULT_FETCH_PERIOD, this.fetchFilters(), honey.messages.addListener("adbbp:getfilters", this._getFiltersMessageListener) | |
} | |
return e.prototype.fetchFilters = function() { | |
return this._fetchingPromise ? this._fetchingPromise : (this._fetchTimeout && (clearTimeout(this._fetchTimeout), this._fetchTimeout = null), this._fetchingPromise = $.ajaxAsync({ | |
url: DATA_API_URL + "/adb/bpfilters", | |
timeout: 6e4, | |
dataType: "json" | |
}).then(function(e) { | |
return function(t) { | |
var a, o, n, i, r, u, s, c, l, m; | |
for (e._fetchPeriod = Math.min(e.MAX_FETCH_PERIOD, Math.max(e.MIN_FETCH_PERIOD, honey.util.parsePositiveInt(null != t ? t.period : void 0, e.DEFAULT_FETCH_PERIOD))), s = [], l = (null != t ? t.filters : void 0) || [], o = 0, i = l.length; i > o; o++) | |
if (a = l[o], Array.isArray(null != a ? a.partial_urls : void 0)) try { | |
for (u = { | |
origins: [], | |
targets: {} | |
}, m = a.partial_urls, n = 0, r = m.length; r > n; n++) c = m[n], u.origins.push(new RegExp("^https?\\:\\/\\/(?:[^\\/\\?]+\\.)*" + c.slice(1).replace(/(\W)/g, "\\$1"), "i")); | |
if (!u.origins.length) continue; | |
u.targets.ajax = ((null != a ? a.targets_aj : void 0) || []).map(function(e) { | |
return t.targets[e] | |
}).filter(function(e) { | |
return e | |
}), u.targets.script = ((null != a ? a.targets_st : void 0) || []).map(function(e) { | |
return t.targets[e] | |
}).filter(function(e) { | |
return e | |
}), u.exclusions = ((null != a ? a.exclusions : void 0) || []).filter(function(e) { | |
return e | |
}), (u.targets.ajax.length || u.targets.script.length) && s.push(u) | |
} catch (p) {} | |
return e._filters = s, e._fetchBackoff = e.DEFAULT_FETCH_BACKOFF, e._fetchTimeout = setTimeout(e.fetchFilters, 1e3 * e._fetchPeriod) | |
} | |
}(this))["catch"](function(e) { | |
return function() { | |
return e._fetchBackoff = Math.max(Math.min(2 * e._fetchBackoff, e._fetchPeriod) || 0, e.DEFAULT_FETCH_BACKOFF), e._fetchTimeout = setTimeout(e.fetchFilters, 1e3 * e._fetchBackoff) | |
} | |
}(this))["finally"](function(e) { | |
return function() { | |
return delete e._fetchingPromise | |
} | |
}(this))) | |
}, e.prototype.getFiltersForUrl = function(e) { | |
var t, a, o, n, i, r, u, s, c, l, m, p, h, d, g, f; | |
if (f = { | |
ajax: [], | |
script: [] | |
}, !e) return f; | |
for (m = this._filters, n = 0, u = m.length; u > n; n++) { | |
for (a = m[n], o = !1, p = (null != a ? a.exclusions : void 0) || [], i = 0, s = p.length; s > i; i++) | |
if (t = p[i], e.match(t)) return null; | |
for (h = (null != a ? a.origins : void 0) || [], r = 0, c = h.length; c > r; r++) | |
if (l = h[r], e.match(l)) { | |
o = !0; | |
break | |
} | |
o && (Array.prototype.push.apply(f.ajax, (null != (d = a.targets) ? d.ajax : void 0) || []), Array.prototype.push.apply(f.script, (null != (g = a.targets) ? g.script : void 0) || [])) | |
} | |
return f | |
}, e.prototype._getFiltersMessageListener = function(e, t, a) { | |
return this.getFiltersForUrl(a.tabUrl) | |
}, e | |
}() | |
}, {}], | |
12: [function(e, t, a) { | |
var bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
t.exports = function() { | |
function e(e, t, a, o) { | |
this._parent = e, this._reqId = t, this._tabId = a, this._base64ArrayBuffer = bind(this._base64ArrayBuffer, this), this._uploadEventHandler = bind(this._uploadEventHandler, this), this._requestEventHandler = bind(this._requestEventHandler, this), this.withCredentials = bind(this.withCredentials, this), this.timeout = bind(this.timeout, this), this.setRequestHeader = bind(this.setRequestHeader, this), this.overrideMimeType = bind(this.overrideMimeType, this), this.abort = bind(this.abort, this), this.send = bind(this.send, this), this.open = bind(this.open, this), this._req = new XMLHttpRequest(o), this._req.responseType = "arraybuffer", this._req.onload = this._requestEventHandler, this._req.onloadstart = this._requestEventHandler, this._req.onloadend = this._requestEventHandler, this._req.onprogress = this._requestEventHandler, this._req.ontimeout = this._requestEventHandler, this._req.onabort = this._requestEventHandler, this._req.onerror = this._requestEventHandler, this._req.onreadystatechange = this._requestEventHandler, this._req.upload.onload = this._uploadEventHandler, this._req.upload.onloadstart = this._uploadEventHandler, this._req.upload.onloadend = this._uploadEventHandler, this._req.upload.onprogress = this._uploadEventHandler, this._req.upload.ontimeout = this._uploadEventHandler, this._req.upload.onabort = this._uploadEventHandler, this._req.upload.onerror = this._uploadEventHandler, Object.defineProperty(this, "reqId", { | |
get: function(e) { | |
return function() { | |
return e._reqId | |
} | |
}(this) | |
}), Object.defineProperty(this, "tabId", { | |
get: function(e) { | |
return function() { | |
return e._tabId | |
} | |
}(this) | |
}) | |
} | |
return e.prototype.open = function(e) { | |
return this._req.open(e.method, e.url, !0, e.username, e.password), this._req.setRequestHeader("X-Honey-HXMLHttpRequest-Origin", e.location.origin), this._req.setRequestHeader("X-Honey-HXMLHttpRequest-Referer", "" + e.location.origin + e.location.pathname), this._req.setRequestHeader("X-Honey-HXMLHttpRequest-ParentUrl", e.parentUrl) | |
}, e.prototype.send = function(e) { | |
return this._req.send(e.data) | |
}, e.prototype.abort = function(e) { | |
return this._req.abort(), this._parent._delActiveHXMLHttpRequest(this) | |
}, e.prototype.overrideMimeType = function(e) { | |
return this._req.overrideMimeType(e.mimeType) | |
}, e.prototype.setRequestHeader = function(e) { | |
return this._req.setRequestHeader(e.header, e.value) | |
}, e.prototype.timeout = function(e) { | |
return this._req.timeout = honey.util.parsePositiveInt(e) | |
}, e.prototype.withCredentials = function(e) { | |
return this._req.withCredentials = !!e | |
}, e.prototype._requestEventHandler = function(e) { | |
var t, a; | |
return ("loadend" === (a = e.type) || "abort" === a) && this._parent._delActiveHXMLHttpRequest(this), t = { | |
reqId: this._reqId, | |
event: e.type, | |
data: { | |
readyState: this._req.readyState, | |
response: this._base64ArrayBuffer(this._req.response), | |
responseURL: this._req.responseURL, | |
responseHeaders: this._req.getAllResponseHeaders(), | |
status: this._req.status, | |
statusText: this._req.statusText | |
} | |
}, ("undefined" != typeof ProgressEvent && e instanceof ProgressEvent || "undefined" != typeof XMLHttpRequestProgressEvent && e instanceof XMLHttpRequestProgressEvent) && (t.progress = { | |
loaded: null != e ? e.loaded : void 0, | |
total: null != e ? e.total : void 0, | |
lengthComputable: null != e ? e.lengthComputable : void 0 | |
}), honey.messages.send("adbbp:hxmlhttprequest:requestevent", t, { | |
tab: this._tabId, | |
allFrames: !0, | |
ignoreResponse: !0 | |
}) | |
}, e.prototype._uploadEventHandler = function(e) { | |
return honey.messages.send("adbbp:hxmlhttprequest:uploadevent", { | |
reqId: this._reqId, | |
event: e.type, | |
progress: { | |
loaded: e.loaded, | |
total: e.total, | |
lengthComputable: e.lengthComputable | |
} | |
}, { | |
tab: this._tabId, | |
allFrames: !0, | |
ignoreResponse: !0 | |
}) | |
}, e.prototype._base64ArrayBuffer = function(e) { | |
var t, a, o, n, i, r, u, s, c, l, m, p, h, d; | |
if (!e) return null; | |
for (t = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", | |
n = "", u = new Uint8Array(e), i = u.byteLength, r = i % 3, h = i - r, m = p = 0, d = h; d > p; m = p += 3) c = u[m] << 16 | u[m + 1] << 8 | u[m + 2], a = (16515072 & c) >> 18, o = (258048 & c) >> 12, s = (4032 & c) >> 6, l = 63 & c, n += t[a] + t[o] + t[s] + t[l]; | |
return 1 === r ? (c = u[h], a = (252 & c) >> 2, o = (3 & c) << 4, n += t[a] + t[o] + "==") : 2 === r && (c = u[h] << 8 | u[h + 1], a = (64512 & c) >> 10, o = (1008 & c) >> 4, s = (15 & c) << 2, n += t[a] + t[o] + t[s] + "="), n | |
}, e | |
}() | |
}, {}], | |
13: [function(e, t, a) { | |
var o, n, i, r, u, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
i = e("./filter_manager"), n = e("./ajax_proxy"), u = e("./script_replayer"), r = e("./req_replayer"), t.exports = o = function() { | |
function e() { | |
this._onWebHookBeforeSendHeaders = bind(this._onWebHookBeforeSendHeaders, this), honey.ready.then(function(e) { | |
return function() { | |
return e._filterManager = new i, e._ajaxProxy = new n, e._scriptReplayer = new u, e._reqReplayer = new r, honey.webHooks.addBeforeSendHeadersListener(e._onWebHookBeforeSendHeaders, { | |
types: ["xmlhttprequest"], | |
blocking: !0 | |
}) | |
} | |
}(this)) | |
} | |
return e.prototype._onWebHookBeforeSendHeaders = function(e) { | |
var t, a, o, n, i, r, u, s, c, l, m; | |
if (c = e.tabId, i = e.method, l = e.url, u = e.requestHeaders, !(c > 0) && (s = null, t = {}, u = u.filter(function(e) { | |
var a; | |
return (a = e.name.match(/^X-Honey-HXMLHttpRequest-(\w+)$/)) ? (s = "HXMLHttpRequest", t[a[1]] = e.value, !1) : (a = e.name.match(/^X-Honey-HScriptTags-(\w+)$/)) ? (s = "HScriptTags", t[a[1]] = e.value, !1) : !0 | |
}), s)) { | |
for (o = 0, n = u.length; n > o; o++) a = u[o], a.name in t && (a.value = t[a.name], delete t[a.name]); | |
if (delete t.ParentUrl, Object.keys(t).length) { | |
for (r in t) m = t[r], u.push({ | |
name: r, | |
value: m | |
}); | |
return { | |
requestHeaders: u | |
} | |
} | |
} | |
}, e | |
}() | |
}, { | |
"./ajax_proxy": 10, | |
"./filter_manager": 11, | |
"./req_replayer": 14, | |
"./script_replayer": 15 | |
}], | |
14: [function(e, t, a) { | |
var o, n, i, r, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
r = e("url"), i = 1800, n = 259200, o = 21600, t.exports = function() { | |
function e() { | |
this._onWebHookBeforeSendHeaders = bind(this._onWebHookBeforeSendHeaders, this), this._replayRequest = bind(this._replayRequest, this), this._onWebHookErrorOccurred = bind(this._onWebHookErrorOccurred, this), this._onWebHookComplete = bind(this._onWebHookComplete, this), this._onWebHookBeforeRequest = bind(this._onWebHookBeforeRequest, this), this._cleanupPendingReqs = bind(this._cleanupPendingReqs, this), this._resetWebHooks = bind(this._resetWebHooks, this), this._onStoreTag = bind(this._onStoreTag, this), this._fetchRemoteBaseFilter = bind(this._fetchRemoteBaseFilter, this), this._updateFilters = bind(this._updateFilters, this), this._loadFilters = bind(this._loadFilters, this), this._storage = honey.storage.local.prefixed("adb_bp:reqreplayer"), this._filters = { | |
stores: {} | |
}, this._loadFilters(), this._pendingReqs = {}, setInterval(this._cleanupPendingReqs, Moment.duration(1, "minute").asMilliseconds()), honey.messages.addListener("stores:tag", this._onStoreTag) | |
} | |
return e.prototype._loadFilters = function() { | |
return Promise.resolve().then(function(e) { | |
return function() { | |
return e._storage.get("filters") | |
} | |
}(this))["catch"](NotFoundError, function(e) { | |
return function() { | |
return null | |
} | |
}(this)).then(function(e) { | |
return function(t) { | |
var a, o, n, i, r; | |
e._filters.base = { | |
urls: Array.isArray(null != t && null != (o = t.base) ? o.urls : void 0) ? t.base.urls : [], | |
expires: null != t && null != (n = t.base) ? n.expires : void 0 | |
}, e._filters.stores = {}, i = null != t ? t.stores : void 0; | |
for (r in i) a = i[r], parseInt(r) && Array.isArray(null != a ? a.urls : void 0) && (null != a ? a.expires : void 0) > Moment().unix() && (e._filters.stores[r] = { | |
urls: a.urls, | |
expires: a.expires | |
}); | |
return e._updateFilters() | |
} | |
}(this))["catch"](function(e) { | |
return function(e) { | |
return honey.logger.error("Failed to load AdbBp req replayer filters: " + ((null != e ? e.message : void 0) || e)) | |
} | |
}(this)) | |
}, e.prototype._updateFilters = function() { | |
return this._updateFiltersPromise = (this._updateFiltersPromise || Promise.resolve()).then(function(e) { | |
return function() { | |
var t, a; | |
return Array.isArray(null != (t = e._filters.base) ? t.urls : void 0) && (null != (a = e._filters.base) ? a.expires : void 0) > Moment().unix() ? e._filters.base : e._fetchRemoteBaseFilter() | |
} | |
}(this)).then(function(e) { | |
return function(t) { | |
var a, o, n, i, r, u, s, c, l, m, p, h; | |
for (e._filters.base = t, a = {}, c = e._filters.base.urls, n = 0, r = c.length; r > n; n++) h = c[n], a[h] = !0; | |
l = e._filters.stores || {}; | |
for (p in l) | |
if (o = l[p], Array.isArray(null != o ? o.urls : void 0) && (null != o ? o.expires : void 0) > Moment().unix()) | |
for (m = o.urls, i = 0, u = m.length; u > i; i++) h = m[i], a[h] = !0; | |
else delete e._filters.stores[p]; | |
return s = e._filters.hash, e._filters.all = Object.keys(a), e._filters.hash = CryptoJS.MD5(JSON.stringify(e._filters.all)).toString(), e._filters.hash !== s ? (e._resetWebHooks(), e._storage.set("filters", e._filters)) : void 0 | |
} | |
}(this))["catch"](function(e) { | |
return function(e) { | |
return honey.logger.error("Failed to update AdbBp req replayer filters: " + ((null != e ? e.message : void 0) || e)) | |
} | |
}(this)) | |
}, e.prototype._fetchRemoteBaseFilter = function() { | |
return $.ajaxAsync(window.DATA_API_URL + "/adb/filter").then(function(e) { | |
return function(e) { | |
var t; | |
return t = Math.max(i, Math.min(n, parseInt(null != e ? e.ttl : void 0))), { | |
urls: Array.isArray(null != e ? e.urls : void 0) ? e.urls : [], | |
expires: Moment().add(t || o, "seconds").unix() | |
} | |
} | |
}(this)) | |
}, e.prototype._onStoreTag = function(e, t, a) { | |
var o, n; | |
return (null != t && null != (o = t.store) ? o.id : void 0) && Array.isArray(null != t && null != (n = t.store) ? n.partialUrls : void 0) ? (this._filters.stores[t.store.id] = { | |
urls: t.store.partialUrls.map(function(e) { | |
return "*://*." + e + "/*" | |
}), | |
expires: Moment().add(12, "hours").unix() | |
}, this._updateFilters()["catch"](function() {})) : void 0 | |
}, e.prototype._resetWebHooks = function() { | |
var e; | |
return honey.webHooks.removeBeforeRequestListener(this._onWebHookBeforeRequest), honey.webHooks.removeCompleteListener(this._onWebHookComplete), honey.webHooks.removeErrorOccurredListener(this._onWebHookErrorOccurred), honey.webHooks.removeBeforeSendHeadersListener(this._onWebHookBeforeSendHeaders), (null != (e = this._filters.all) ? e.length : void 0) ? (honey.webHooks.addBeforeRequestListener(this._onWebHookBeforeRequest, { | |
urls: this._filters.all | |
}), honey.webHooks.addCompleteListener(this._onWebHookComplete, { | |
urls: this._filters.all | |
}), honey.webHooks.addErrorOccurredListener(this._onWebHookErrorOccurred, { | |
urls: this._filters.all | |
}), honey.webHooks.addBeforeSendHeadersListener(this._onWebHookBeforeSendHeaders, { | |
urls: this._filters.all, | |
types: ["xmlhttprequest"], | |
blocking: !0 | |
})) : void 0 | |
}, e.prototype._cleanupPendingReqs = function() { | |
var e, t, a, o, n; | |
t = Moment().unix(), a = this._pendingReqs, n = []; | |
for (o in a) e = a[o].expires, e > t ? n.push(void 0) : n.push(delete this._pendingReqs[o]); | |
return n | |
}, e.prototype._onWebHookBeforeRequest = function(e) { | |
var t, a, o, n, i; | |
return n = e.requestId, a = e.method, i = e.url, o = e.requestBody, t = Moment().add(1, "minute").unix(), void(this._pendingReqs[n] = { | |
method: a, | |
url: i, | |
requestBody: o, | |
expires: t | |
}) | |
}, e.prototype._onWebHookComplete = function(e) { | |
var t; | |
return t = e.requestId, void delete this._pendingReqs[t] | |
}, e.prototype._onWebHookErrorOccurred = function(e) { | |
var t, a, o, n, i, r, u; | |
return u = e.tabId, r = e.requestId, t = e.error, (i = this._pendingReqs[r]) ? ("net::ERR_BLOCKED_BY_CLIENT" === t && (a = { | |
method: i.method, | |
url: i.url | |
}, (null != (o = i.requestBody) ? o.raw : void 0) ? (a.processData = !1, a.data = i.requestBody.raw) : (null != (n = i.requestBody) ? n.formData : void 0) && (a.processData = !0, a.data = i.requestBody.formData), this._replayRequest(u, a)["catch"](function() {})), void delete this._pendingReqs[r]) : void 0 | |
}, e.prototype._replayRequest = function(e, t) { | |
return honey.tabs.get(e).then(function(e) { | |
return function(e) { | |
var a, o, n, i; | |
return i = e.url, n = r.parse(i), o = n.protocol, a = n.host, t.headers = { | |
"X-Honey-AdbBp-Origin": o + "//" + a, | |
"X-Honey-AdbBp-Referer": i | |
}, $.ajaxAsync(t) | |
} | |
}(this))["catch"](function() {}) | |
}, e.prototype._onWebHookBeforeSendHeaders = function(e) { | |
var t, a, o, n, i; | |
if (i = e.tabId, n = e.requestHeaders, !(i > 0)) { | |
o = {}, n = n.filter(function(e) { | |
var t, a; | |
return (t = null != (a = e.name.match(/^X-Honey-AdbBp-([^\s]+)/)) ? a[1] : void 0) ? (o[t.toLowerCase()] = { | |
name: t, | |
value: e.value | |
}, !1) : !0 | |
}).filter(function(e) { | |
return !(honey.util.cleanStringLower(e.name) in o) | |
}); | |
for (t in o) a = o[t], n.push(a); | |
return { | |
requestHeaders: n | |
} | |
} | |
}, e | |
}() | |
}, { | |
url: 177 | |
}], | |
15: [function(e, t, a) { | |
var bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
t.exports = function() { | |
function e() { | |
this._onWebHookErrorOccurred = bind(this._onWebHookErrorOccurred, this), this._onHScriptTagFetch = bind(this._onHScriptTagFetch, this), honey.messages.addListener("adbbp:hscripttag:fetch", this._onHScriptTagFetch), honey.webHooks.addErrorOccurredListener(this._onWebHookErrorOccurred) | |
} | |
return e.prototype._onHScriptTagFetch = function(e, t, a) { | |
if (!(null != t ? t.url : void 0)) throw new InvalidParametersError("url"); | |
return $.ajaxAsync({ | |
method: "GET", | |
url: t.url, | |
dataType: "text", | |
headers: { | |
"X-Honey-HScriptTags-Referer": t.referrerUrl | |
} | |
}) | |
}, e.prototype._onWebHookErrorOccurred = function(e) { | |
return "net::ERR_BLOCKED_BY_CLIENT" === (null != e ? e.error : void 0) && e.url && e.tabId && "script" === e.type ? honey.messages.send("adbbp:hscripttags:blockedscript", { | |
url: e.url | |
}, { | |
tab: e.tabId, | |
allFrames: !0, | |
ignoreResponse: !0 | |
}) : void 0 | |
}, e | |
}() | |
}, {}], | |
16: [function(e, t, a) { | |
var o, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
t.exports = o = function() { | |
function e() { | |
this._onUtilsActionMessage = bind(this._onUtilsActionMessage, this), honey.messages.addListener("utils:action", this._onUtilsActionMessage) | |
} | |
return e.prototype._onUtilsActionMessage = function(e, t, a) { | |
switch (null != t ? t.action : void 0) { | |
case "ajaxAsync": | |
return this._ajaxAsync(t.data, null != a ? a.tabId : void 0) | |
} | |
}, e.prototype._ajaxAsync = function(e) { | |
return $.ajaxAsync(e) | |
}, e | |
}() | |
}, {}], | |
17: [function(e, t, a) { | |
var o, n, i, r, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
o = "#88c987", n = "active", r = { | |
icon: "default", | |
badgeText: "" | |
}, t.exports = i = function() { | |
function e() { | |
this._onPageLoad = bind(this._onPageLoad, this), this.setButtonInactive = bind(this.setButtonInactive, this), this.setButtonInfo = bind(this.setButtonInfo, this), honey.messages.addListener("page:load", this._onPageLoad) | |
} | |
return e.prototype.getLastSetIcon = function(e) { | |
return honey._native.button.getLastSetIcon(e) | |
}, e.prototype.setButtonInfo = function(e, t) { | |
return honey._native.button.setButtonInfo(e, t) | |
}, e.prototype.setButtonInactive = function(e) { | |
return this.setButtonInfo(r, e) | |
}, e.prototype._onPageLoad = function(e, t, a) { | |
return (null != a ? a.tabId : void 0) >= 0 ? Promise["try"](function(e) { | |
return function() { | |
return honey.stores.getStoreByUrl(null != t ? t.url : void 0, a.tabId) | |
} | |
}(this)).then(function(e) { | |
return function(t) { | |
var i; | |
return (null != t ? t.supported : void 0) && "suspend" !== t.standDown && "nopopup" !== t.standDown ? (i = { | |
badgeColor: o, | |
badgeText: t.numCoupons > 0 ? t.numCoupons : void 0, | |
icon: n | |
}, e.setButtonInfo(i, a.tabId)) : e.setButtonInfo(r, a.tabId) | |
} | |
}(this))["catch"](function(e) { | |
return function() { | |
return e.setButtonInfo(r, a.tabId) | |
} | |
}(this)) : void 0 | |
}, e | |
}() | |
}, {}], | |
18: [function(e, t, a) { | |
"use strict"; | |
function o() { | |
function e(e) { | |
var t = e.requestHeaders, | |
a = t.reduce(function(e, t) { | |
var a = Object.assign({}, t); | |
return "object" === ("undefined" == typeof t ? "undefined" : n(t)) && "referer" === honey.util.cleanStringLower(t.name) && (a.value = "https://match.amazonbrowserapp.com/pcomp/pcomp-process.html?locale=US"), e.push(a), e | |
}, []); | |
return { | |
requestHeaders: a | |
} | |
} | |
function t(e) { | |
var t = e.tabId, | |
a = e.url, | |
o = i.parse(a, !0); | |
("AddToCart" === o.query.ev || "Purchase" === o.query.ev) && honey.tabs.get(t).then(function(e) { | |
return honey.stores.getStoreByUrl(e.url) | |
}).then(function(e) { | |
var t = e.id, | |
a = null, | |
n = null; | |
try { | |
var i = JSON.parse(o.query["cd[content_ids]"]); | |
i.length > 1 ? n = i.filter(function(e) { | |
return e | |
}) : a = i[0] | |
} catch (r) { | |
a = o.query["cd[content_ids]"] | |
} | |
var u = { | |
merch_id: a, | |
ids_arr: n, | |
title: o.query["cd[content_name]"], | |
currency: o.query["cd[currency]"], | |
prod_type: o.query.content_type, | |
type: "FB", | |
price: { | |
sale: honey.util.cleanPrice(o.query["cd[value]"]) || null | |
}, | |
store: { | |
id: t | |
} | |
}; | |
"AddToCart" === o.query.ev ? honey.stats.sendEvent("prd001002", u) : "Purchase" === o.query.ev && honey.stats.sendEvent("ext009003", u) | |
})["catch"](function() {}) | |
} | |
return honey.webHooks.addBeforeSendHeadersListener(e, { | |
blocking: !0, | |
urls: ["*://*.amazonbrowserapp.com/*"] | |
}), { | |
onAzMessage: e, | |
onTag: t | |
} | |
} | |
Object.defineProperty(a, "__esModule", { | |
value: !0 | |
}); | |
var n = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { | |
return typeof e | |
} : function(e) { | |
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e | |
}; | |
a["default"] = o; | |
var i = e("url") | |
}, { | |
url: 177 | |
}], | |
19: [function(e, t, a) { | |
var o, n, i, r, u, s, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
s = e("./tough_cookie"), u = 1800, r = 259200, i = 21600, o = 3e4, t.exports = n = function() { | |
function e() { | |
this._onWebHookWriteCookies = bind(this._onWebHookWriteCookies, this), this._onWebHookReadCookies = bind(this._onWebHookReadCookies, this), this._refreshWebHooks = bind(this._refreshWebHooks, this), this._loadSystemCookies = bind(this._loadSystemCookies, this), this._startPersistingJarInStorage = bind(this._startPersistingJarInStorage, this), this._loadJarFromStorage = bind(this._loadJarFromStorage, this), this._fetchRemoteFilter = bind(this._fetchRemoteFilter, this), this._updateFilter = bind(this._updateFilter, this), this._loadFilterFromStorage = bind(this._loadFilterFromStorage, this), this._storage = honey.storage.local.prefixed("ck_bp"), honey.ready.then(function(e) { | |
return function() { | |
return Promise.all([e._loadFilterFromStorage(), e._loadJarFromStorage()]).reflect() | |
} | |
}(this)).then(function(e) { | |
return function() { | |
return e._updateFilter() | |
} | |
}(this)).then(function(e) { | |
return function() { | |
return e._loadSystemCookies() | |
} | |
}(this))["catch"](function() {}) | |
} | |
return e.prototype._loadFilterFromStorage = function() { | |
return this._storage.get("filter").then(function(e) { | |
return function(t) { | |
return Array.isArray((null != t ? t.urls : void 0) && (null != t ? t.expires : void 0) > Moment().unix()) ? e._filter = { | |
urls: t.urls, | |
expires: t.expires | |
} : void 0 | |
} | |
}(this))["catch"](NotFoundError, function(e) { | |
return function() { | |
return null | |
} | |
}(this)) | |
}, e.prototype._updateFilter = function() { | |
return Promise.resolve().then(function(e) { | |
return function() { | |
var t, a; | |
return Array.isArray((null != (t = e._filter) ? t.urls : void 0) && (null != (a = e._filter) ? a.expires : void 0) > Moment().unix()) ? e._filter : e._fetchRemoteFilter() | |
} | |
}(this)).then(function(e) { | |
return function(t) { | |
var a, o, n; | |
return a = null != (o = e._filter) ? o.hash : void 0, e._filter = t, e._filter.hash = CryptoJS.MD5(JSON.stringify(null != (n = e._filter) ? n.urls : void 0)).toString(), Promise.all([e._storage.set("filter", e._filter), e._filter.hash !== a ? e._refreshWebHooks() : void 0]) | |
} | |
}(this))["catch"](function(e) { | |
return function(e) { | |
return honey.logger.error("Failed to update ck_bp filter: " + ((null != e ? e.message : void 0) || e), e) | |
} | |
}(this)) | |
}, e.prototype._fetchRemoteFilter = function() { | |
return $.ajaxAsync(window.DATA_API_URL + "/extdata/ckfilter").then(function(e) { | |
return function(t) { | |
var a; | |
return a = Math.max(e.FILTERS_TTL_MIN, Math.min(e.FILTERS_TTL_MAX, parseInt(null != t ? t.ttl : void 0))), { | |
urls: Array.isArray(null != t ? t.urls : void 0) ? t.urls : [], | |
expires: Moment().add(a || e.FILTERS_TTL_DEFAULT, "seconds").unix() | |
} | |
} | |
}(this)) | |
}, e.prototype._loadJarFromStorage = function() { | |
return this._storage.get("jarData").then(function(e) { | |
return function(t) { | |
return e._jar = s.CookieJar.deserializeSync(t) | |
} | |
}(this))["catch"](function(e) { | |
return function() { | |
return e._jar = new s.CookieJar | |
} | |
}(this))["finally"](function(e) { | |
return function() { | |
return e._startPersistingJarInStorage() | |
} | |
}(this)) | |
}, e.prototype._startPersistingJarInStorage = function() { | |
return this._persistJarInterval && clearInterval(this._persistJarInterval), this._persistJarInterval = setInterval(function(e) { | |
return function() { | |
var t, a; | |
try { | |
if (!e._cookiesChanged) return; | |
return t = e._jar.serializeSync(), t.cookies = null != (a = t.cookies) ? a.filter(function(e) { | |
return new Date(e.expires).getTime() > 0 | |
}) : void 0, e._storage.set("jarData", t)["catch"](function() {}) | |
} catch (o) {} | |
} | |
}(this), o) | |
}, e.prototype._loadSystemCookies = function() { | |
var e; | |
return Promise.resolve((null != (e = this._filter) ? e.urls : void 0) || []).each(function(e) { | |
return function(t) { | |
var a, o; | |
if (a = null != (o = t.match(/^.*\:\/\/(?:\*\.)*([^\/]+)\//)) ? o[1] : void 0) return honey.cookies.getAllForDomain(a).then(function(t) { | |
var a, o, n, i, r, u, c; | |
for (r = t || [], c = [], n = 0, i = r.length; i > n; n++) | |
if (a = r[n], null != a ? a.domain : void 0) { | |
a.key = a.name, "." === a.domain[0] && (a.domain = a.domain.substr(1)), o = "http" + (a.secure ? "s" : "") + "://" + a.domain + (a.path || "/"), a.expires = a.expires && !a.session ? new Date(a.expires) : void 0, (null != (u = a.expires) ? u.valueOf() : void 0) || delete a.expires; | |
try { | |
c.push(e._jar.setCookieSync(new s.Cookie(a), o, { | |
ignoreError: !1 | |
})) | |
} catch (l) {} | |
} | |
return c | |
})["catch"](function() {}) | |
} | |
}(this)) | |
}, e.prototype._refreshWebHooks = function() { | |
var e; | |
return honey.webHooks.removeBeforeRedirectListener(this._onWebHookReadCookies), honey.webHooks.removeResponseStartedListener(this._onWebHookReadCookies), honey.webHooks.removeBeforeSendHeadersListener(this._onWebHookWriteCookies), Array.isArray(null != (e = this._filter) ? e.urls : void 0) && this._filter.urls.length ? (honey.webHooks.addBeforeRedirectListener(this._onWebHookReadCookies, { | |
urls: this._filter.urls | |
}), honey.webHooks.addResponseStartedListener(this._onWebHookReadCookies, { | |
urls: this._filter.urls | |
}), honey.webHooks.addBeforeSendHeadersListener(this._onWebHookWriteCookies, { | |
urls: this._filter.urls, | |
blocking: !0 | |
})) : void 0 | |
}, e.prototype._onWebHookReadCookies = function(e) { | |
var t, a, o, n, i, r, u, s; | |
for (u = e.url, i = e.responseHeaders, r = [], t = 0, a = i.length; a > t; t++) | |
if (n = i[t], o = n.name, s = n.value, "SET-COOKIE" === honey.util.cleanStringUpper(o)) try { | |
this._jar.setCookieSync(s, u), r.push(this._cookiesChanged = !0) | |
} catch (c) {} else r.push(void 0); | |
return r | |
}, e.prototype._onWebHookWriteCookies = function(e) { | |
var t, a, o, n, i, r; | |
for (r = e.url, i = e.requestHeaders, a = 0, o = i.length; o > a; a++) | |
if (n = i[a].name, "COOKIE" === honey.util.cleanStringUpper(n)) return; | |
return (t = this._jar.getCookieStringSync(r)) ? (i.push({ | |
name: "Cookie", | |
value: t | |
}), { | |
requestHeaders: i | |
}) : void 0 | |
}, e | |
}() | |
}, { | |
"./tough_cookie": 20 | |
}], | |
20: [function(e, t, a) { | |
"use strict"; | |
function o(e) { | |
if (e) { | |
var t = e.split(x); | |
if (t) { | |
for (var a = null, o = null, n = null, i = null, r = null, u = null, s = 0; s < t.length; s++) { | |
var c = t[s].trim(); | |
if (c.length) { | |
var l; | |
if (null === n && (l = I.exec(c))) { | |
if (a = parseInt(l[1], 10), o = parseInt(l[2], 10), n = parseInt(l[3], 10), a > 23 || o > 59 || n > 59) return | |
} else if (null === i && (l = R.exec(c))) { | |
if (i = parseInt(l, 10), 1 > i || i > 31) return | |
} else if (null === r && (l = N.exec(c))) r = L[l[1].toLowerCase()]; | |
else if (null === u && (l = q.exec(c), l && (u = parseInt(l[0], 10), u >= 70 && 99 >= u ? u += 1900 : u >= 0 && 69 >= u && (u += 2e3), 1601 > u))) return | |
} | |
} | |
if (null !== n && null !== i && null !== r && null !== u) return new Date(Date.UTC(u, r, i, a, o, n)) | |
} | |
} | |
} | |
function n(e) { | |
var t = e.getUTCDate(); | |
t = t >= 10 ? t : "0" + t; | |
var a = e.getUTCHours(); | |
a = a >= 10 ? a : "0" + a; | |
var o = e.getUTCMinutes(); | |
o = o >= 10 ? o : "0" + o; | |
var n = e.getUTCSeconds(); | |
return n = n >= 10 ? n : "0" + n, M[e.getUTCDay()] + ", " + t + " " + O[e.getUTCMonth()] + " " + e.getUTCFullYear() + " " + a + ":" + o + ":" + n + " GMT" | |
} | |
function i(e) { | |
return null == e ? null : (e = e.trim().replace(/^\./, ""), k && /[^\u0001-\u007f]/.test(e) && (e = k.toASCII(e)), e.toLowerCase()) | |
} | |
function r(e, t, a) { | |
if (null == e || null == t) return null; | |
if (a !== !1 && (e = i(e), t = i(t)), e == t) return !0; | |
if (j.isV4Format(e) || j.isV6Format(e)) return !1; | |
var o = e.indexOf(t); | |
return 0 >= o ? !1 : e.length !== t.length + o ? !1 : "." !== e.substr(o - 1, 1) ? !1 : !0 | |
} | |
function u(e) { | |
if (!e || "/" !== e.substr(0, 1)) return "/"; | |
if ("/" === e) return e; | |
var t = e.lastIndexOf("/"); | |
return 0 === t ? "/" : e.slice(0, t) | |
} | |
function s(e, t) { | |
t && "object" === ("undefined" == typeof t ? "undefined" : y(t)) || (t = {}), e = e.trim(); | |
var a = P.exec(e); | |
a && (e = e.slice(0, a.index)); | |
var n = e.indexOf(";"), | |
i = t.loose ? S : B, | |
r = i.exec(-1 === n ? e : e.substr(0, n)); | |
if (r) { | |
var u = new d; | |
if (r[1] ? u.key = r[2].trim() : u.key = "", u.value = r[3].trim(), !D.test(u.key) && !D.test(u.value)) { | |
if (-1 === n) return u; | |
var s = e.slice(n).replace(/^\s*;\s*/, "").trim(); | |
if (0 === s.length) return u; | |
for (var c = s.split(/\s*;\s*/); c.length;) { | |
var l, m, p = c.shift(), | |
h = p.indexOf("="); | |
switch (-1 === h ? (l = p, m = null) : (l = p.substr(0, h), m = p.substr(h + 1)), l = l.trim().toLowerCase(), m && (m = m.trim()), l) { | |
case "expires": | |
if (m) { | |
var g = o(m); | |
g && (u.expires = g) | |
} | |
break; | |
case "max-age": | |
if (m && /^-?[0-9]+$/.test(m)) { | |
var f = parseInt(m, 10); | |
u.setMaxAge(f) | |
} | |
break; | |
case "domain": | |
if (m) { | |
var k = m.trim().replace(/^\./, ""); | |
k && (u.domain = k.toLowerCase()) | |
} | |
break; | |
case "path": | |
u.path = m && "/" === m[0] ? m : null; | |
break; | |
case "secure": | |
u.secure = !0; | |
break; | |
case "httponly": | |
u.httpOnly = !0; | |
break; | |
default: | |
u.extensions = u.extensions || [], u.extensions.push(p) | |
} | |
} | |
return u | |
} | |
} | |
} | |
function c(e) { | |
var t; | |
try { | |
t = JSON.parse(e) | |
} catch (a) { | |
return a | |
} | |
return t | |
} | |
function l(e) { | |
if (!e) return null; | |
var t; | |
if ("string" == typeof e) { | |
if (t = c(e), t instanceof Error) return null | |
} else t = e; | |
for (var a = new d, o = 0; o < d.serializableProperties.length; o++) { | |
var n = d.serializableProperties[o]; | |
void 0 !== t[n] && t[n] !== d.prototype[n] && ("expires" === n || "creation" === n || "lastAccessed" === n ? null === t[n] ? a[n] = null : a[n] = "Infinity" == t[n] ? "Infinity" : new Date(t[n]) : a[n] = t[n]) | |
} | |
return a | |
} | |
function m(e, t) { | |
var a = 0, | |
o = e.path ? e.path.length : 0, | |
n = t.path ? t.path.length : 0; | |
if (a = n - o, 0 !== a) return a; | |
var i = e.creation ? e.creation.getTime() : U, | |
r = t.creation ? t.creation.getTime() : U; | |
return a = i - r, 0 !== a ? a : a = e.creationIndex - t.creationIndex | |
} | |
function p(e) { | |
if ("/" === e) return ["/"]; | |
e.lastIndexOf("/") === e.length - 1 && (e = e.substr(0, e.length - 1)); | |
for (var t = [e]; e.length > 1;) { | |
var a = e.lastIndexOf("/"); | |
if (0 === a) break; | |
e = e.substr(0, a), t.push(e) | |
} | |
return t.push("/"), t | |
} | |
function h(e) { | |
if (e instanceof Object) return e; | |
try { | |
e = decodeURI(e) | |
} catch (t) {} | |
return v(e) | |
} | |
function d(e) { | |
e = e || {}, Object.keys(e).forEach(function(t) { | |
d.prototype.hasOwnProperty(t) && d.prototype[t] !== e[t] && "_" !== t.substr(0, 1) && (this[t] = e[t]) | |
}, this), this.creation = this.creation || new Date, Object.defineProperty(this, "creationIndex", { | |
configurable: !1, | |
enumerable: !1, | |
writable: !0, | |
value: ++d.cookiesCreated | |
}) | |
} | |
function g(e, t) { | |
"boolean" == typeof t ? t = { | |
rejectPublicSuffixes: t | |
} : null == t && (t = {}), null != t.rejectPublicSuffixes && (this.rejectPublicSuffixes = t.rejectPublicSuffixes), null != t.looseMode && (this.enableLooseMode = t.looseMode), e || (e = new _), this.store = e | |
} | |
function f(e) { | |
return function() { | |
if (!this.store.synchronous) throw new Error("CookieJar store is not synchronous; use async API instead."); | |
var t, a, o = Array.prototype.slice.call(arguments); | |
if (o.push(function(e, o) { | |
t = e, a = o | |
}), this[e].apply(this, o), t) throw t; | |
return a | |
} | |
} | |
var k, y = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { | |
return typeof e | |
} : function(e) { | |
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e | |
}, | |
j = e("ip"), | |
v = e("url").parse, | |
b = e("./pubsuffix"), | |
w = e("./store").Store, | |
_ = e("./memstore").MemoryCookieStore, | |
A = e("./pathMatch").pathMatch, | |
E = "2.2.0"; | |
try { | |
k = e("punycode") | |
} catch (C) { | |
console.warn("cookie: can't load punycode; won't use punycode for domain normalization") | |
} | |
var x = /[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/, | |
F = /[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]/, | |
z = new RegExp("^" + F.source + "+$"), | |
D = /[\x00-\x1F]/, | |
B = /^(([^=;]+))\s*=\s*(("?)[^\n\r\0]*\3)/, | |
S = /^((?:=)?([^=;]*)\s*=\s*)?(("?)[^\n\r\0]*\3)/, | |
T = /[\x20-\x3A\x3C-\x7E]+/, | |
P = /;+$/, | |
R = /^(\d{1,2})[^\d]*$/, | |
I = /^(\d{1,2})[^\d]*:(\d{1,2})[^\d]*:(\d{1,2})[^\d]*$/, | |
N = /^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/i, | |
L = { | |
jan: 0, | |
feb: 1, | |
mar: 2, | |
apr: 3, | |
may: 4, | |
jun: 5, | |
jul: 6, | |
aug: 7, | |
sep: 8, | |
oct: 9, | |
nov: 10, | |
dec: 11 | |
}, | |
O = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], | |
M = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], | |
q = /^(\d{2}|\d{4})$/, | |
U = 2147483647e3, | |
H = 0; | |
d.cookiesCreated = 0, d.parse = s, d.fromJSON = l, d.prototype.key = "", d.prototype.value = "", d.prototype.expires = "Infinity", d.prototype.maxAge = null, d.prototype.domain = null, d.prototype.path = null, d.prototype.secure = !1, d.prototype.httpOnly = !1, d.prototype.extensions = null, d.prototype.hostOnly = null, d.prototype.pathIsDefault = null, d.prototype.creation = null, d.prototype.lastAccessed = null, Object.defineProperty(d.prototype, "creationIndex", { | |
configurable: !0, | |
enumerable: !1, | |
writable: !0, | |
value: 0 | |
}), d.serializableProperties = Object.keys(d.prototype).filter(function(e) { | |
return !(d.prototype[e] instanceof Function || "creationIndex" === e || "_" === e.substr(0, 1)) | |
}), d.prototype.inspect = function() { | |
var e = Date.now(); | |
return 'Cookie="' + this.toString() + "; hostOnly=" + (null != this.hostOnly ? this.hostOnly : "?") + "; aAge=" + (this.lastAccessed ? e - this.lastAccessed.getTime() + "ms" : "?") + "; cAge=" + (this.creation ? e - this.creation.getTime() + "ms" : "?") + '"' | |
}, d.prototype.toJSON = function() { | |
for (var e = {}, t = d.serializableProperties, a = 0; a < t.length; a++) { | |
var o = t[a]; | |
this[o] !== d.prototype[o] && ("expires" === o || "creation" === o || "lastAccessed" === o ? null === this[o] ? e[o] = null : e[o] = "Infinity" == this[o] ? "Infinity" : this[o].toISOString() : "maxAge" === o ? null !== this[o] && (e[o] = this[o] == 1 / 0 || this[o] == -(1 / 0) ? this[o].toString() : this[o]) : this[o] !== d.prototype[o] && (e[o] = this[o])) | |
} | |
return e | |
}, d.prototype.clone = function() { | |
return l(this.toJSON()) | |
}, d.prototype.validate = function() { | |
if (!z.test(this.value)) return !1; | |
if (!(this.expires == 1 / 0 || this.expires instanceof Date || o(this.expires))) return !1; | |
if (null != this.maxAge && this.maxAge <= 0) return !1; | |
if (null != this.path && !T.test(this.path)) return !1; | |
var e = this.cdomain(); | |
if (e) { | |
if (e.match(/\.$/)) return !1; | |
var t = b.getPublicSuffix(e); | |
if (null == t) return !1 | |
} | |
return !0 | |
}, d.prototype.setExpires = function(e) { | |
e instanceof Date ? this.expires = e : this.expires = o(e) || "Infinity" | |
}, d.prototype.setMaxAge = function(e) { | |
e === 1 / 0 || e === -(1 / 0) ? this.maxAge = e.toString() : this.maxAge = e | |
}, d.prototype.cookieString = function() { | |
var e = this.value; | |
return null == e && (e = ""), "" === this.key ? e : this.key + "=" + e | |
}, d.prototype.toString = function() { | |
var e = this.cookieString(); | |
return this.expires != 1 / 0 && (e += this.expires instanceof Date ? "; Expires=" + n(this.expires) : "; Expires=" + this.expires), null != this.maxAge && this.maxAge != 1 / 0 && (e += "; Max-Age=" + this.maxAge), this.domain && !this.hostOnly && (e += "; Domain=" + this.domain), this.path && (e += "; Path=" + this.path), this.secure && (e += "; Secure"), this.httpOnly && (e += "; HttpOnly"), this.extensions && this.extensions.forEach(function(t) { | |
e += "; " + t | |
}), e | |
}, d.prototype.TTL = function(e) { | |
if (null != this.maxAge) return this.maxAge <= 0 ? 0 : 1e3 * this.maxAge; | |
var t = this.expires; | |
return t != 1 / 0 ? (t instanceof Date || (t = o(t) || 1 / 0), t == 1 / 0 ? 1 / 0 : t.getTime() - (e || Date.now())) : 1 / 0 | |
}, d.prototype.expiryTime = function(e) { | |
if (null != this.maxAge) { | |
var t = e || this.creation || new Date, | |
a = this.maxAge <= 0 ? -(1 / 0) : 1e3 * this.maxAge; | |
return t.getTime() + a | |
} | |
return this.expires == 1 / 0 ? 1 / 0 : this.expires.getTime() | |
}, d.prototype.expiryDate = function(e) { | |
var t = this.expiryTime(e); | |
return t == 1 / 0 ? new Date(U) : t == -(1 / 0) ? new Date(H) : new Date(t) | |
}, d.prototype.isPersistent = function() { | |
return null != this.maxAge || this.expires != 1 / 0 | |
}, d.prototype.cdomain = d.prototype.canonicalizedDomain = function() { | |
return null == this.domain ? null : i(this.domain) | |
}, g.prototype.store = null, g.prototype.rejectPublicSuffixes = !0, g.prototype.enableLooseMode = !1; | |
var $ = []; | |
$.push("setCookie"), g.prototype.setCookie = function(e, t, a, o) { | |
function n(t, n) { | |
if (t) return o(t); | |
var i = function(t) { | |
return t ? o(t) : void o(null, e) | |
}; | |
if (n) { | |
if (a.http === !1 && n.httpOnly) return t = new Error("old Cookie is HttpOnly and this isn't an HTTP API"), o(a.ignoreError ? null : t); | |
e.creation = n.creation, e.creationIndex = n.creationIndex, e.lastAccessed = p, f.updateCookie(n, e, i) | |
} else e.creation = e.lastAccessed = p, f.putCookie(e, i) | |
} | |
var s, c = h(t); | |
a instanceof Function && (o = a, a = {}); | |
var l = i(c.hostname), | |
m = this.enableLooseMode; | |
if (null != a.loose && (m = a.loose), e instanceof d || (e = d.parse(e, { | |
loose: m | |
})), !e) return s = new Error("Cookie failed to parse"), o(a.ignoreError ? null : s); | |
var p = a.now || new Date; | |
if (this.rejectPublicSuffixes && e.domain) { | |
var g = b.getPublicSuffix(e.cdomain()); | |
if (null == g) return s = new Error("Cookie has domain set to a public suffix"), o(a.ignoreError ? null : s) | |
} | |
if (e.domain) { | |
if (!r(l, e.cdomain(), !1)) return s = new Error("Cookie not in this host's domain. Cookie:" + e.cdomain() + " Request:" + l), o(a.ignoreError ? null : s); | |
null == e.hostOnly && (e.hostOnly = !1) | |
} else e.hostOnly = !0, e.domain = l; | |
if (e.path && "/" === e.path[0] || (e.path = u(c.pathname), e.pathIsDefault = !0), a.http === !1 && e.httpOnly) return s = new Error("Cookie is HttpOnly and this isn't an HTTP API"), o(a.ignoreError ? null : s); | |
var f = this.store; | |
f.updateCookie || (f.updateCookie = function(e, t, a) { | |
this.putCookie(t, a) | |
}), f.findCookie(e.domain, e.path, e.key, n) | |
}, $.push("getCookies"), g.prototype.getCookies = function(e, t, a) { | |
function o(e) { | |
if (e.hostOnly) { | |
if (e.domain != u) return !1 | |
} else if (!r(u, e.domain, !1)) return !1; | |
return g || A(s, e.path) ? e.secure && !c ? !1 : e.httpOnly && !l ? !1 : d && e.expiryTime() <= p ? (f.removeCookie(e.domain, e.path, e.key, function() {}), !1) : !0 : !1 | |
} | |
var n = h(e); | |
t instanceof Function && (a = t, t = {}); | |
var u = i(n.hostname), | |
s = n.pathname || "/", | |
c = t.secure; | |
null != c || !n.protocol || "https:" != n.protocol && "wss:" != n.protocol || (c = !0); | |
var l = t.http; | |
null == l && (l = !0); | |
var p = t.now || Date.now(), | |
d = t.expire !== !1, | |
g = !!t.allPaths, | |
f = this.store; | |
f.findCookies(u, g ? null : s, function(e, n) { | |
if (e) return a(e); | |
n = n.filter(o), t.sort !== !1 && (n = n.sort(m)); | |
var i = new Date; | |
n.forEach(function(e) { | |
e.lastAccessed = i | |
}), a(null, n) | |
}) | |
}, $.push("getCookieString"), g.prototype.getCookieString = function() { | |
var e = Array.prototype.slice.call(arguments, 0), | |
t = e.pop(), | |
a = function(e, a) { | |
e ? t(e) : t(null, a.sort(m).map(function(e) { | |
return e.cookieString() | |
}).join("; ")) | |
}; | |
e.push(a), this.getCookies.apply(this, e) | |
}, $.push("getSetCookieStrings"), g.prototype.getSetCookieStrings = function() { | |
var e = Array.prototype.slice.call(arguments, 0), | |
t = e.pop(), | |
a = function(e, a) { | |
e ? t(e) : t(null, a.map(function(e) { | |
return e.toString() | |
})) | |
}; | |
e.push(a), this.getCookies.apply(this, e) | |
}, $.push("serialize"), g.prototype.serialize = function(e) { | |
var t = this.store.constructor.name; | |
"Object" === t && (t = null); | |
var a = { | |
version: "tough-cookie@" + E, | |
storeType: t, | |
rejectPublicSuffixes: !!this.rejectPublicSuffixes, | |
cookies: [] | |
}; | |
return this.store.getAllCookies && "function" == typeof this.store.getAllCookies ? void this.store.getAllCookies(function(t, o) { | |
return t ? e(t) : (a.cookies = o.map(function(e) { | |
return e = e instanceof d ? e.toJSON() : e, delete e.creationIndex, e | |
}), e(null, a)) | |
}) : e(new Error("store does not support getAllCookies and cannot be serialized")) | |
}, g.prototype.toJSON = function() { | |
return this.serializeSync() | |
}, $.push("_importCookies"), g.prototype._importCookies = function(e, t) { | |
function a(e) { | |
if (e) return t(e); | |
if (!n.length) return t(e, o); | |
var i; | |
try { | |
i = l(n.shift()) | |
} catch (r) { | |
return t(r) | |
} | |
return null === i ? a(null) : void o.store.putCookie(i, a) | |
} | |
var o = this, | |
n = e.cookies; | |
return n && Array.isArray(n) ? void a() : t(new Error("serialized jar has no cookies array")) | |
}, g.deserialize = function(e, t, a) { | |
3 !== arguments.length && (a = t, t = null); | |
var o; | |
if ("string" == typeof e) { | |
if (o = c(e), o instanceof Error) return a(o) | |
} else o = e; | |
var n = new g(t, o.rejectPublicSuffixes); | |
n._importCookies(o, function(e) { | |
return e ? a(e) : void a(null, n) | |
}) | |
}, g.fromJSON = g.deserializeSync, g.deserializeSync = function(e, t) { | |
var a = "string" == typeof e ? JSON.parse(e) : e, | |
o = new g(t, a.rejectPublicSuffixes); | |
if (!o.store.synchronous) throw new Error("CookieJar store is not synchronous; use async API instead."); | |
return o._importCookiesSync(a), o | |
}, $.push("clone"), g.prototype.clone = function(e, t) { | |
1 === arguments.length && (t = e, e = null), this.serialize(function(a, o) { | |
return a ? t(a) : void g.deserialize(e, o, t) | |
}) | |
}, $.forEach(function(e) { | |
g.prototype[e + "Sync"] = f(e) | |
}), t.exports = { | |
CookieJar: g, | |
Cookie: d, | |
Store: w, | |
MemoryCookieStore: _, | |
parseDate: o, | |
formatDate: n, | |
parse: s, | |
fromJSON: l, | |
domainMatch: r, | |
defaultPath: u, | |
pathMatch: A, | |
getPublicSuffix: b.getPublicSuffix, | |
cookieCompare: m, | |
permuteDomain: e("./permuteDomain").permuteDomain, | |
permutePath: p, | |
canonicalDomain: i | |
} | |
}, { | |
"./memstore": 21, | |
"./pathMatch": 22, | |
"./permuteDomain": 23, | |
"./pubsuffix": 24, | |
"./store": 25, | |
ip: 123, | |
punycode: 147, | |
url: 177 | |
}], | |
21: [function(e, t, a) { | |
"use strict"; | |
function o() { | |
n.call(this), this.idx = {} | |
} | |
var n = e("./store").Store, | |
i = e("./permuteDomain").permuteDomain, | |
r = e("./pathMatch").pathMatch, | |
u = e("util"); | |
u.inherits(o, n), a.MemoryCookieStore = o, o.prototype.idx = null, o.prototype.synchronous = !0, o.prototype.inspect = function() { | |
return "{ idx: " + u.inspect(this.idx, !1, 2) + " }" | |
}, o.prototype.findCookie = function(e, t, a, o) { | |
return this.idx[e] && this.idx[e][t] ? o(null, this.idx[e][t][a] || null) : o(null, void 0) | |
}, o.prototype.findCookies = function(e, t, a) { | |
var o = []; | |
if (!e) return a(null, []); | |
var n; | |
n = t ? function(e) { | |
Object.keys(e).forEach(function(a) { | |
if (r(t, a)) { | |
var n = e[a]; | |
for (var i in n) o.push(n[i]) | |
} | |
}) | |
} : function(e) { | |
for (var t in e) { | |
var a = e[t]; | |
for (var n in a) o.push(a[n]) | |
} | |
}; | |
var u = i(e) || [e], | |
s = this.idx; | |
u.forEach(function(e) { | |
var t = s[e]; | |
t && n(t) | |
}), a(null, o) | |
}, o.prototype.putCookie = function(e, t) { | |
this.idx[e.domain] || (this.idx[e.domain] = {}), this.idx[e.domain][e.path] || (this.idx[e.domain][e.path] = {}), this.idx[e.domain][e.path][e.key] = e, t(null) | |
}, o.prototype.updateCookie = function(e, t, a) { | |
this.putCookie(t, a) | |
}, o.prototype.removeCookie = function(e, t, a, o) { | |
this.idx[e] && this.idx[e][t] && this.idx[e][t][a] && delete this.idx[e][t][a], o(null) | |
}, o.prototype.removeCookies = function(e, t, a) { | |
return this.idx[e] && (t ? delete this.idx[e][t] : delete this.idx[e]), a(null) | |
}, o.prototype.getAllCookies = function(e) { | |
var t = [], | |
a = this.idx, | |
o = Object.keys(a); | |
o.forEach(function(e) { | |
var o = Object.keys(a[e]); | |
o.forEach(function(o) { | |
var n = Object.keys(a[e][o]); | |
n.forEach(function(n) { | |
null !== n && t.push(a[e][o][n]) | |
}) | |
}) | |
}), t.sort(function(e, t) { | |
return (e.creationIndex || 0) - (t.creationIndex || 0) | |
}), e(null, t) | |
} | |
}, { | |
"./pathMatch": 22, | |
"./permuteDomain": 23, | |
"./store": 25, | |
util: 181 | |
}], | |
22: [function(e, t, a) { | |
"use strict"; | |
function o(e, t) { | |
if (t === e) return !0; | |
var a = e.indexOf(t); | |
if (0 === a) { | |
if ("/" === t.substr(-1)) return !0; | |
if ("/" === e.substr(t.length, 1)) return !0 | |
} | |
return !1 | |
} | |
a.pathMatch = o | |
}, {}], | |
23: [function(e, t, a) { | |
"use strict"; | |
function o(e) { | |
var t = n.getPublicSuffix(e); | |
if (!t) return null; | |
if (t == e) return [e]; | |
for (var a = e.slice(0, -(t.length + 1)), o = a.split(".").reverse(), i = t, r = [i]; o.length;) i = o.shift() + "." + i, r.push(i); | |
return r | |
} | |
var n = e("./pubsuffix"); | |
a.permuteDomain = o | |
}, { | |
"./pubsuffix": 24 | |
}], | |
24: [function(e, t, a) { | |
"use strict"; | |
var o = e("punycode"); | |
t.exports.getPublicSuffix = function(e) { | |
if (!e) return null; | |
if (e.match(/^\./)) return null; | |
var t = o.toASCII(e), | |
a = !1; | |
if (t !== e && (e = t, a = !0), n[e]) return null; | |
e = e.toLowerCase(); | |
for (var i = e.split(".").reverse(), r = "", u = 0, s = 0; s < i.length; s++) { | |
var c = i[s], | |
l = "*" + r, | |
m = c + r; | |
n[l] ? (u = s + 1, n[m] === !1 && u--) : n[m] && (u = s + 1), r = "." + m | |
} | |
if (n["*" + r]) return null; | |
if (u = u || 1, i.length > u) { | |
var p = i.slice(0, u + 1).reverse().join("."); | |
return a ? o.toUnicode(p) : p | |
} | |
return null | |
}; | |
var n = t.exports.index = Object.freeze({ | |
ac: !0, | |
"com.ac": !0, | |
"edu.ac": !0, | |
"gov.ac": !0, | |
"net.ac": !0, | |
"mil.ac": !0, | |
"org.ac": !0, | |
ad: !0, | |
"nom.ad": !0, | |
ae: !0, | |
"co.ae": !0, | |
"net.ae": !0, | |
"org.ae": !0, | |
"sch.ae": !0, | |
"ac.ae": !0, | |
"gov.ae": !0, | |
"mil.ae": !0, | |
aero: !0, | |
"accident-investigation.aero": !0, | |
"accident-prevention.aero": !0, | |
"aerobatic.aero": !0, | |
"aeroclub.aero": !0, | |
"aerodrome.aero": !0, | |
"agents.aero": !0, | |
"aircraft.aero": !0, | |
"airline.aero": !0, | |
"airport.aero": !0, | |
"air-surveillance.aero": !0, | |
"airtraffic.aero": !0, | |
"air-traffic-control.aero": !0, | |
"ambulance.aero": !0, | |
"amusement.aero": !0, | |
"association.aero": !0, | |
"author.aero": !0, | |
"ballooning.aero": !0, | |
"broker.aero": !0, | |
"caa.aero": !0, | |
"cargo.aero": !0, | |
"catering.aero": !0, | |
"certification.aero": !0, | |
"championship.aero": !0, | |
"charter.aero": !0, | |
"civilaviation.aero": !0, | |
"club.aero": !0, | |
"conference.aero": !0, | |
"consultant.aero": !0, | |
"consulting.aero": !0, | |
"control.aero": !0, | |
"council.aero": !0, | |
"crew.aero": !0, | |
"design.aero": !0, | |
"dgca.aero": !0, | |
"educator.aero": !0, | |
"emergency.aero": !0, | |
"engine.aero": !0, | |
"engineer.aero": !0, | |
"entertainment.aero": !0, | |
"equipment.aero": !0, | |
"exchange.aero": !0, | |
"express.aero": !0, | |
"federation.aero": !0, | |
"flight.aero": !0, | |
"freight.aero": !0, | |
"fuel.aero": !0, | |
"gliding.aero": !0, | |
"government.aero": !0, | |
"groundhandling.aero": !0, | |
"group.aero": !0, | |
"hanggliding.aero": !0, | |
"homebuilt.aero": !0, | |
"insurance.aero": !0, | |
"journal.aero": !0, | |
"journalist.aero": !0, | |
"leasing.aero": !0, | |
"logistics.aero": !0, | |
"magazine.aero": !0, | |
"maintenance.aero": !0, | |
"marketplace.aero": !0, | |
"media.aero": !0, | |
"microlight.aero": !0, | |
"modelling.aero": !0, | |
"navigation.aero": !0, | |
"parachuting.aero": !0, | |
"paragliding.aero": !0, | |
"passenger-association.aero": !0, | |
"pilot.aero": !0, | |
"press.aero": !0, | |
"production.aero": !0, | |
"recreation.aero": !0, | |
"repbody.aero": !0, | |
"res.aero": !0, | |
"research.aero": !0, | |
"rotorcraft.aero": !0, | |
"safety.aero": !0, | |
"scientist.aero": !0, | |
"services.aero": !0, | |
"show.aero": !0, | |
"skydiving.aero": !0, | |
"software.aero": !0, | |
"student.aero": !0, | |
"taxi.aero": !0, | |
"trader.aero": !0, | |
"trading.aero": !0, | |
"trainer.aero": !0, | |
"union.aero": !0, | |
"workinggroup.aero": !0, | |
"works.aero": !0, | |
af: !0, | |
"gov.af": !0, | |
"com.af": !0, | |
"org.af": !0, | |
"net.af": !0, | |
"edu.af": !0, | |
ag: !0, | |
"com.ag": !0, | |
"org.ag": !0, | |
"net.ag": !0, | |
"co.ag": !0, | |
"nom.ag": !0, | |
ai: !0, | |
"off.ai": !0, | |
"com.ai": !0, | |
"net.ai": !0, | |
"org.ai": !0, | |
al: !0, | |
"com.al": !0, | |
"edu.al": !0, | |
"gov.al": !0, | |
"mil.al": !0, | |
"net.al": !0, | |
"org.al": !0, | |
am: !0, | |
an: !0, | |
"com.an": !0, | |
"net.an": !0, | |
"org.an": !0, | |
"edu.an": !0, | |
ao: !0, | |
"ed.ao": !0, | |
"gv.ao": !0, | |
"og.ao": !0, | |
"co.ao": !0, | |
"pb.ao": !0, | |
"it.ao": !0, | |
aq: !0, | |
ar: !0, | |
"com.ar": !0, | |
"edu.ar": !0, | |
"gob.ar": !0, | |
"gov.ar": !0, | |
"int.ar": !0, | |
"mil.ar": !0, | |
"net.ar": !0, | |
"org.ar": !0, | |
"tur.ar": !0, | |
arpa: !0, | |
"e164.arpa": !0, | |
"in-addr.arpa": !0, | |
"ip6.arpa": !0, | |
"iris.arpa": !0, | |
"uri.arpa": !0, | |
"urn.arpa": !0, | |
as: !0, | |
"gov.as": !0, | |
asia: !0, | |
at: !0, | |
"ac.at": !0, | |
"co.at": !0, | |
"gv.at": !0, | |
"or.at": !0, | |
au: !0, | |
"com.au": !0, | |
"net.au": !0, | |
"org.au": !0, | |
"edu.au": !0, | |
"gov.au": !0, | |
"asn.au": !0, | |
"id.au": !0, | |
"info.au": !0, | |
"conf.au": !0, | |
"oz.au": !0, | |
"act.au": !0, | |
"nsw.au": !0, | |
"nt.au": !0, | |
"qld.au": !0, | |
"sa.au": !0, | |
"tas.au": !0, | |
"vic.au": !0, | |
"wa.au": !0, | |
"act.edu.au": !0, | |
"nsw.edu.au": !0, | |
"nt.edu.au": !0, | |
"qld.edu.au": !0, | |
"sa.edu.au": !0, | |
"tas.edu.au": !0, | |
"vic.edu.au": !0, | |
"wa.edu.au": !0, | |
"qld.gov.au": !0, | |
"sa.gov.au": !0, | |
"tas.gov.au": !0, | |
"vic.gov.au": !0, | |
"wa.gov.au": !0, | |
aw: !0, | |
"com.aw": !0, | |
ax: !0, | |
az: !0, | |
"com.az": !0, | |
"net.az": !0, | |
"int.az": !0, | |
"gov.az": !0, | |
"org.az": !0, | |
"edu.az": !0, | |
"info.az": !0, | |
"pp.az": !0, | |
"mil.az": !0, | |
"name.az": !0, | |
"pro.az": !0, | |
"biz.az": !0, | |
ba: !0, | |
"org.ba": !0, | |
"net.ba": !0, | |
"edu.ba": !0, | |
"gov.ba": !0, | |
"mil.ba": !0, | |
"unsa.ba": !0, | |
"unbi.ba": !0, | |
"co.ba": !0, | |
"com.ba": !0, | |
"rs.ba": !0, | |
bb: !0, | |
"biz.bb": !0, | |
"co.bb": !0, | |
"com.bb": !0, | |
"edu.bb": !0, | |
"gov.bb": !0, | |
"info.bb": !0, | |
"net.bb": !0, | |
"org.bb": !0, | |
"store.bb": !0, | |
"tv.bb": !0, | |
"*.bd": !0, | |
be: !0, | |
"ac.be": !0, | |
bf: !0, | |
"gov.bf": !0, | |
bg: !0, | |
"a.bg": !0, | |
"b.bg": !0, | |
"c.bg": !0, | |
"d.bg": !0, | |
"e.bg": !0, | |
"f.bg": !0, | |
"g.bg": !0, | |
"h.bg": !0, | |
"i.bg": !0, | |
"j.bg": !0, | |
"k.bg": !0, | |
"l.bg": !0, | |
"m.bg": !0, | |
"n.bg": !0, | |
"o.bg": !0, | |
"p.bg": !0, | |
"q.bg": !0, | |
"r.bg": !0, | |
"s.bg": !0, | |
"t.bg": !0, | |
"u.bg": !0, | |
"v.bg": !0, | |
"w.bg": !0, | |
"x.bg": !0, | |
"y.bg": !0, | |
"z.bg": !0, | |
"0.bg": !0, | |
"1.bg": !0, | |
"2.bg": !0, | |
"3.bg": !0, | |
"4.bg": !0, | |
"5.bg": !0, | |
"6.bg": !0, | |
"7.bg": !0, | |
"8.bg": !0, | |
"9.bg": !0, | |
bh: !0, | |
"com.bh": !0, | |
"edu.bh": !0, | |
"net.bh": !0, | |
"org.bh": !0, | |
"gov.bh": !0, | |
bi: !0, | |
"co.bi": !0, | |
"com.bi": !0, | |
"edu.bi": !0, | |
"or.bi": !0, | |
"org.bi": !0, | |
biz: !0, | |
bj: !0, | |
"asso.bj": !0, | |
"barreau.bj": !0, | |
"gouv.bj": !0, | |
bm: !0, | |
"com.bm": !0, | |
"edu.bm": !0, | |
"gov.bm": !0, | |
"net.bm": !0, | |
"org.bm": !0, | |
"*.bn": !0, | |
bo: !0, | |
"com.bo": !0, | |
"edu.bo": !0, | |
"gov.bo": !0, | |
"gob.bo": !0, | |
"int.bo": !0, | |
"org.bo": !0, | |
"net.bo": !0, | |
"mil.bo": !0, | |
"tv.bo": !0, | |
br: !0, | |
"adm.br": !0, | |
"adv.br": !0, | |
"agr.br": !0, | |
"am.br": !0, | |
"arq.br": !0, | |
"art.br": !0, | |
"ato.br": !0, | |
"b.br": !0, | |
"bio.br": !0, | |
"blog.br": !0, | |
"bmd.br": !0, | |
"cim.br": !0, | |
"cng.br": !0, | |
"cnt.br": !0, | |
"com.br": !0, | |
"coop.br": !0, | |
"ecn.br": !0, | |
"eco.br": !0, | |
"edu.br": !0, | |
"emp.br": !0, | |
"eng.br": !0, | |
"esp.br": !0, | |
"etc.br": !0, | |
"eti.br": !0, | |
"far.br": !0, | |
"flog.br": !0, | |
"fm.br": !0, | |
"fnd.br": !0, | |
"fot.br": !0, | |
"fst.br": !0, | |
"g12.br": !0, | |
"ggf.br": !0, | |
"gov.br": !0, | |
"imb.br": !0, | |
"ind.br": !0, | |
"inf.br": !0, | |
"jor.br": !0, | |
"jus.br": !0, | |
"leg.br": !0, | |
"lel.br": !0, | |
"mat.br": !0, | |
"med.br": !0, | |
"mil.br": !0, | |
"mp.br": !0, | |
"mus.br": !0, | |
"net.br": !0, | |
"*.nom.br": !0, | |
"not.br": !0, | |
"ntr.br": !0, | |
"odo.br": !0, | |
"org.br": !0, | |
"ppg.br": !0, | |
"pro.br": !0, | |
"psc.br": !0, | |
"psi.br": !0, | |
"qsl.br": !0, | |
"radio.br": !0, | |
"rec.br": !0, | |
"slg.br": !0, | |
"srv.br": !0, | |
"taxi.br": !0, | |
"teo.br": !0, | |
"tmp.br": !0, | |
"trd.br": !0, | |
"tur.br": !0, | |
"tv.br": !0, | |
"vet.br": !0, | |
"vlog.br": !0, | |
"wiki.br": !0, | |
"zlg.br": !0, | |
bs: !0, | |
"com.bs": !0, | |
"net.bs": !0, | |
"org.bs": !0, | |
"edu.bs": !0, | |
"gov.bs": !0, | |
bt: !0, | |
"com.bt": !0, | |
"edu.bt": !0, | |
"gov.bt": !0, | |
"net.bt": !0, | |
"org.bt": !0, | |
bv: !0, | |
bw: !0, | |
"co.bw": !0, | |
"org.bw": !0, | |
by: !0, | |
"gov.by": !0, | |
"mil.by": !0, | |
"com.by": !0, | |
"of.by": !0, | |
bz: !0, | |
"com.bz": !0, | |
"net.bz": !0, | |
"org.bz": !0, | |
"edu.bz": !0, | |
"gov.bz": !0, | |
ca: !0, | |
"ab.ca": !0, | |
"bc.ca": !0, | |
"mb.ca": !0, | |
"nb.ca": !0, | |
"nf.ca": !0, | |
"nl.ca": !0, | |
"ns.ca": !0, | |
"nt.ca": !0, | |
"nu.ca": !0, | |
"on.ca": !0, | |
"pe.ca": !0, | |
"qc.ca": !0, | |
"sk.ca": !0, | |
"yk.ca": !0, | |
"gc.ca": !0, | |
cat: !0, | |
cc: !0, | |
cd: !0, | |
"gov.cd": !0, | |
cf: !0, | |
cg: !0, | |
ch: !0, | |
ci: !0, | |
"org.ci": !0, | |
"or.ci": !0, | |
"com.ci": !0, | |
"co.ci": !0, | |
"edu.ci": !0, | |
"ed.ci": !0, | |
"ac.ci": !0, | |
"net.ci": !0, | |
"go.ci": !0, | |
"asso.ci": !0, | |
"xn--aroport-bya.ci": !0, | |
"int.ci": !0, | |
"presse.ci": !0, | |
"md.ci": !0, | |
"gouv.ci": !0, | |
"*.ck": !0, | |
"www.ck": !1, | |
cl: !0, | |
"gov.cl": !0, | |
"gob.cl": !0, | |
"co.cl": !0, | |
"mil.cl": !0, | |
cm: !0, | |
"co.cm": !0, | |
"com.cm": !0, | |
"gov.cm": !0, | |
"net.cm": !0, | |
cn: !0, | |
"ac.cn": !0, | |
"com.cn": !0, | |
"edu.cn": !0, | |
"gov.cn": !0, | |
"net.cn": !0, | |
"org.cn": !0, | |
"mil.cn": !0, | |
"xn--55qx5d.cn": !0, | |
"xn--io0a7i.cn": !0, | |
"xn--od0alg.cn": !0, | |
"ah.cn": !0, | |
"bj.cn": !0, | |
"cq.cn": !0, | |
"fj.cn": !0, | |
"gd.cn": !0, | |
"gs.cn": !0, | |
"gz.cn": !0, | |
"gx.cn": !0, | |
"ha.cn": !0, | |
"hb.cn": !0, | |
"he.cn": !0, | |
"hi.cn": !0, | |
"hl.cn": !0, | |
"hn.cn": !0, | |
"jl.cn": !0, | |
"js.cn": !0, | |
"jx.cn": !0, | |
"ln.cn": !0, | |
"nm.cn": !0, | |
"nx.cn": !0, | |
"qh.cn": !0, | |
"sc.cn": !0, | |
"sd.cn": !0, | |
"sh.cn": !0, | |
"sn.cn": !0, | |
"sx.cn": !0, | |
"tj.cn": !0, | |
"xj.cn": !0, | |
"xz.cn": !0, | |
"yn.cn": !0, | |
"zj.cn": !0, | |
"hk.cn": !0, | |
"mo.cn": !0, | |
"tw.cn": !0, | |
co: !0, | |
"arts.co": !0, | |
"com.co": !0, | |
"edu.co": !0, | |
"firm.co": !0, | |
"gov.co": !0, | |
"info.co": !0, | |
"int.co": !0, | |
"mil.co": !0, | |
"net.co": !0, | |
"nom.co": !0, | |
"org.co": !0, | |
"rec.co": !0, | |
"web.co": !0, | |
com: !0, | |
coop: !0, | |
cr: !0, | |
"ac.cr": !0, | |
"co.cr": !0, | |
"ed.cr": !0, | |
"fi.cr": !0, | |
"go.cr": !0, | |
"or.cr": !0, | |
"sa.cr": !0, | |
cu: !0, | |
"com.cu": !0, | |
"edu.cu": !0, | |
"org.cu": !0, | |
"net.cu": !0, | |
"gov.cu": !0, | |
"inf.cu": !0, | |
cv: !0, | |
cw: !0, | |
"com.cw": !0, | |
"edu.cw": !0, | |
"net.cw": !0, | |
"org.cw": !0, | |
cx: !0, | |
"gov.cx": !0, | |
"ac.cy": !0, | |
"biz.cy": !0, | |
"com.cy": !0, | |
"ekloges.cy": !0, | |
"gov.cy": !0, | |
"ltd.cy": !0, | |
"name.cy": !0, | |
"net.cy": !0, | |
"org.cy": !0, | |
"parliament.cy": !0, | |
"press.cy": !0, | |
"pro.cy": !0, | |
"tm.cy": !0, | |
cz: !0, | |
de: !0, | |
dj: !0, | |
dk: !0, | |
dm: !0, | |
"com.dm": !0, | |
"net.dm": !0, | |
"org.dm": !0, | |
"edu.dm": !0, | |
"gov.dm": !0, | |
"do": !0, | |
"art.do": !0, | |
"com.do": !0, | |
"edu.do": !0, | |
"gob.do": !0, | |
"gov.do": !0, | |
"mil.do": !0, | |
"net.do": !0, | |
"org.do": !0, | |
"sld.do": !0, | |
"web.do": !0, | |
dz: !0, | |
"com.dz": !0, | |
"org.dz": !0, | |
"net.dz": !0, | |
"gov.dz": !0, | |
"edu.dz": !0, | |
"asso.dz": !0, | |
"pol.dz": !0, | |
"art.dz": !0, | |
ec: !0, | |
"com.ec": !0, | |
"info.ec": !0, | |
"net.ec": !0, | |
"fin.ec": !0, | |
"k12.ec": !0, | |
"med.ec": !0, | |
"pro.ec": !0, | |
"org.ec": !0, | |
"edu.ec": !0, | |
"gov.ec": !0, | |
"gob.ec": !0, | |
"mil.ec": !0, | |
edu: !0, | |
ee: !0, | |
"edu.ee": !0, | |
"gov.ee": !0, | |
"riik.ee": !0, | |
"lib.ee": !0, | |
"med.ee": !0, | |
"com.ee": !0, | |
"pri.ee": !0, | |
"aip.ee": !0, | |
"org.ee": !0, | |
"fie.ee": !0, | |
eg: !0, | |
"com.eg": !0, | |
"edu.eg": !0, | |
"eun.eg": !0, | |
"gov.eg": !0, | |
"mil.eg": !0, | |
"name.eg": !0, | |
"net.eg": !0, | |
"org.eg": !0, | |
"sci.eg": !0, | |
"*.er": !0, | |
es: !0, | |
"com.es": !0, | |
"nom.es": !0, | |
"org.es": !0, | |
"gob.es": !0, | |
"edu.es": !0, | |
et: !0, | |
"com.et": !0, | |
"gov.et": !0, | |
"org.et": !0, | |
"edu.et": !0, | |
"biz.et": !0, | |
"name.et": !0, | |
"info.et": !0, | |
"net.et": !0, | |
eu: !0, | |
fi: !0, | |
"aland.fi": !0, | |
"*.fj": !0, | |
"*.fk": !0, | |
fm: !0, | |
fo: !0, | |
fr: !0, | |
"com.fr": !0, | |
"asso.fr": !0, | |
"nom.fr": !0, | |
"prd.fr": !0, | |
"presse.fr": !0, | |
"tm.fr": !0, | |
"aeroport.fr": !0, | |
"assedic.fr": !0, | |
"avocat.fr": !0, | |
"avoues.fr": !0, | |
"cci.fr": !0, | |
"chambagri.fr": !0, | |
"chirurgiens-dentistes.fr": !0, | |
"experts-comptables.fr": !0, | |
"geometre-expert.fr": !0, | |
"gouv.fr": !0, | |
"greta.fr": !0, | |
"huissier-justice.fr": !0, | |
"medecin.fr": !0, | |
"notaires.fr": !0, | |
"pharmacien.fr": !0, | |
"port.fr": !0, | |
"veterinaire.fr": !0, | |
ga: !0, | |
gb: !0, | |
gd: !0, | |
ge: !0, | |
"com.ge": !0, | |
"edu.ge": !0, | |
"gov.ge": !0, | |
"org.ge": !0, | |
"mil.ge": !0, | |
"net.ge": !0, | |
"pvt.ge": !0, | |
gf: !0, | |
gg: !0, | |
"co.gg": !0, | |
"net.gg": !0, | |
"org.gg": !0, | |
gh: !0, | |
"com.gh": !0, | |
"edu.gh": !0, | |
"gov.gh": !0, | |
"org.gh": !0, | |
"mil.gh": !0, | |
gi: !0, | |
"com.gi": !0, | |
"ltd.gi": !0, | |
"gov.gi": !0, | |
"mod.gi": !0, | |
"edu.gi": !0, | |
"org.gi": !0, | |
gl: !0, | |
"co.gl": !0, | |
"com.gl": !0, | |
"edu.gl": !0, | |
"net.gl": !0, | |
"org.gl": !0, | |
gm: !0, | |
gn: !0, | |
"ac.gn": !0, | |
"com.gn": !0, | |
"edu.gn": !0, | |
"gov.gn": !0, | |
"org.gn": !0, | |
"net.gn": !0, | |
gov: !0, | |
gp: !0, | |
"com.gp": !0, | |
"net.gp": !0, | |
"mobi.gp": !0, | |
"edu.gp": !0, | |
"org.gp": !0, | |
"asso.gp": !0, | |
gq: !0, | |
gr: !0, | |
"com.gr": !0, | |
"edu.gr": !0, | |
"net.gr": !0, | |
"org.gr": !0, | |
"gov.gr": !0, | |
gs: !0, | |
gt: !0, | |
"com.gt": !0, | |
"edu.gt": !0, | |
"gob.gt": !0, | |
"ind.gt": !0, | |
"mil.gt": !0, | |
"net.gt": !0, | |
"org.gt": !0, | |
"*.gu": !0, | |
gw: !0, | |
gy: !0, | |
"co.gy": !0, | |
"com.gy": !0, | |
"net.gy": !0, | |
hk: !0, | |
"com.hk": !0, | |
"edu.hk": !0, | |
"gov.hk": !0, | |
"idv.hk": !0, | |
"net.hk": !0, | |
"org.hk": !0, | |
"xn--55qx5d.hk": !0, | |
"xn--wcvs22d.hk": !0, | |
"xn--lcvr32d.hk": !0, | |
"xn--mxtq1m.hk": !0, | |
"xn--gmqw5a.hk": !0, | |
"xn--ciqpn.hk": !0, | |
"xn--gmq050i.hk": !0, | |
"xn--zf0avx.hk": !0, | |
"xn--io0a7i.hk": !0, | |
"xn--mk0axi.hk": !0, | |
"xn--od0alg.hk": !0, | |
"xn--od0aq3b.hk": !0, | |
"xn--tn0ag.hk": !0, | |
"xn--uc0atv.hk": !0, | |
"xn--uc0ay4a.hk": !0, | |
hm: !0, | |
hn: !0, | |
"com.hn": !0, | |
"edu.hn": !0, | |
"org.hn": !0, | |
"net.hn": !0, | |
"mil.hn": !0, | |
"gob.hn": !0, | |
hr: !0, | |
"iz.hr": !0, | |
"from.hr": !0, | |
"name.hr": !0, | |
"com.hr": !0, | |
ht: !0, | |
"com.ht": !0, | |
"shop.ht": !0, | |
"firm.ht": !0, | |
"info.ht": !0, | |
"adult.ht": !0, | |
"net.ht": !0, | |
"pro.ht": !0, | |
"org.ht": !0, | |
"med.ht": !0, | |
"art.ht": !0, | |
"coop.ht": !0, | |
"pol.ht": !0, | |
"asso.ht": !0, | |
"edu.ht": !0, | |
"rel.ht": !0, | |
"gouv.ht": !0, | |
"perso.ht": !0, | |
hu: !0, | |
"co.hu": !0, | |
"info.hu": !0, | |
"org.hu": !0, | |
"priv.hu": !0, | |
"sport.hu": !0, | |
"tm.hu": !0, | |
"2000.hu": !0, | |
"agrar.hu": !0, | |
"bolt.hu": !0, | |
"casino.hu": !0, | |
"city.hu": !0, | |
"erotica.hu": !0, | |
"erotika.hu": !0, | |
"film.hu": !0, | |
"forum.hu": !0, | |
"games.hu": !0, | |
"hotel.hu": !0, | |
"ingatlan.hu": !0, | |
"jogasz.hu": !0, | |
"konyvelo.hu": !0, | |
"lakas.hu": !0, | |
"media.hu": !0, | |
"news.hu": !0, | |
"reklam.hu": !0, | |
"sex.hu": !0, | |
"shop.hu": !0, | |
"suli.hu": !0, | |
"szex.hu": !0, | |
"tozsde.hu": !0, | |
"utazas.hu": !0, | |
"video.hu": !0, | |
id: !0, | |
"ac.id": !0, | |
"biz.id": !0, | |
"co.id": !0, | |
"desa.id": !0, | |
"go.id": !0, | |
"mil.id": !0, | |
"my.id": !0, | |
"net.id": !0, | |
"or.id": !0, | |
"sch.id": !0, | |
"web.id": !0, | |
ie: !0, | |
"gov.ie": !0, | |
il: !0, | |
"ac.il": !0, | |
"co.il": !0, | |
"gov.il": !0, | |
"idf.il": !0, | |
"k12.il": !0, | |
"muni.il": !0, | |
"net.il": !0, | |
"org.il": !0, | |
im: !0, | |
"ac.im": !0, | |
"co.im": !0, | |
"com.im": !0, | |
"ltd.co.im": !0, | |
"net.im": !0, | |
"org.im": !0, | |
"plc.co.im": !0, | |
"tt.im": !0, | |
"tv.im": !0, | |
"in": !0, | |
"co.in": !0, | |
"firm.in": !0, | |
"net.in": !0, | |
"org.in": !0, | |
"gen.in": !0, | |
"ind.in": !0, | |
"nic.in": !0, | |
"ac.in": !0, | |
"edu.in": !0, | |
"res.in": !0, | |
"gov.in": !0, | |
"mil.in": !0, | |
info: !0, | |
"int": !0, | |
"eu.int": !0, | |
io: !0, | |
"com.io": !0, | |
iq: !0, | |
"gov.iq": !0, | |
"edu.iq": !0, | |
"mil.iq": !0, | |
"com.iq": !0, | |
"org.iq": !0, | |
"net.iq": !0, | |
ir: !0, | |
"ac.ir": !0, | |
"co.ir": !0, | |
"gov.ir": !0, | |
"id.ir": !0, | |
"net.ir": !0, | |
"org.ir": !0, | |
"sch.ir": !0, | |
"xn--mgba3a4f16a.ir": !0, | |
"xn--mgba3a4fra.ir": !0, | |
is: !0, | |
"net.is": !0, | |
"com.is": !0, | |
"edu.is": !0, | |
"gov.is": !0, | |
"org.is": !0, | |
"int.is": !0, | |
it: !0, | |
"gov.it": !0, | |
"edu.it": !0, | |
"abr.it": !0, | |
"abruzzo.it": !0, | |
"aosta-valley.it": !0, | |
"aostavalley.it": !0, | |
"bas.it": !0, | |
"basilicata.it": !0, | |
"cal.it": !0, | |
"calabria.it": !0, | |
"cam.it": !0, | |
"campania.it": !0, | |
"emilia-romagna.it": !0, | |
"emiliaromagna.it": !0, | |
"emr.it": !0, | |
"friuli-v-giulia.it": !0, | |
"friuli-ve-giulia.it": !0, | |
"friuli-vegiulia.it": !0, | |
"friuli-venezia-giulia.it": !0, | |
"friuli-veneziagiulia.it": !0, | |
"friuli-vgiulia.it": !0, | |
"friuliv-giulia.it": !0, | |
"friulive-giulia.it": !0, | |
"friulivegiulia.it": !0, | |
"friulivenezia-giulia.it": !0, | |
"friuliveneziagiulia.it": !0, | |
"friulivgiulia.it": !0, | |
"fvg.it": !0, | |
"laz.it": !0, | |
"lazio.it": !0, | |
"lig.it": !0, | |
"liguria.it": !0, | |
"lom.it": !0, | |
"lombardia.it": !0, | |
"lombardy.it": !0, | |
"lucania.it": !0, | |
"mar.it": !0, | |
"marche.it": !0, | |
"mol.it": !0, | |
"molise.it": !0, | |
"piedmont.it": !0, | |
"piemonte.it": !0, | |
"pmn.it": !0, | |
"pug.it": !0, | |
"puglia.it": !0, | |
"sar.it": !0, | |
"sardegna.it": !0, | |
"sardinia.it": !0, | |
"sic.it": !0, | |
"sicilia.it": !0, | |
"sicily.it": !0, | |
"taa.it": !0, | |
"tos.it": !0, | |
"toscana.it": !0, | |
"trentino-a-adige.it": !0, | |
"trentino-aadige.it": !0, | |
"trentino-alto-adige.it": !0, | |
"trentino-altoadige.it": !0, | |
"trentino-s-tirol.it": !0, | |
"trentino-stirol.it": !0, | |
"trentino-sud-tirol.it": !0, | |
"trentino-sudtirol.it": !0, | |
"trentino-sued-tirol.it": !0, | |
"trentino-suedtirol.it": !0, | |
"trentinoa-adige.it": !0, | |
"trentinoaadige.it": !0, | |
"trentinoalto-adige.it": !0, | |
"trentinoaltoadige.it": !0, | |
"trentinos-tirol.it": !0, | |
"trentinostirol.it": !0, | |
"trentinosud-tirol.it": !0, | |
"trentinosudtirol.it": !0, | |
"trentinosued-tirol.it": !0, | |
"trentinosuedtirol.it": !0, | |
"tuscany.it": !0, | |
"umb.it": !0, | |
"umbria.it": !0, | |
"val-d-aosta.it": !0, | |
"val-daosta.it": !0, | |
"vald-aosta.it": !0, | |
"valdaosta.it": !0, | |
"valle-aosta.it": !0, | |
"valle-d-aosta.it": !0, | |
"valle-daosta.it": !0, | |
"valleaosta.it": !0, | |
"valled-aosta.it": !0, | |
"valledaosta.it": !0, | |
"vallee-aoste.it": !0, | |
"valleeaoste.it": !0, | |
"vao.it": !0, | |
"vda.it": !0, | |
"ven.it": !0, | |
"veneto.it": !0, | |
"ag.it": !0, | |
"agrigento.it": !0, | |
"al.it": !0, | |
"alessandria.it": !0, | |
"alto-adige.it": !0, | |
"altoadige.it": !0, | |
"an.it": !0, | |
"ancona.it": !0, | |
"andria-barletta-trani.it": !0, | |
"andria-trani-barletta.it": !0, | |
"andriabarlettatrani.it": !0, | |
"andriatranibarletta.it": !0, | |
"ao.it": !0, | |
"aosta.it": !0, | |
"aoste.it": !0, | |
"ap.it": !0, | |
"aq.it": !0, | |
"aquila.it": !0, | |
"ar.it": !0, | |
"arezzo.it": !0, | |
"ascoli-piceno.it": !0, | |
"ascolipiceno.it": !0, | |
"asti.it": !0, | |
"at.it": !0, | |
"av.it": !0, | |
"avellino.it": !0, | |
"ba.it": !0, | |
"balsan.it": !0, | |
"bari.it": !0, | |
"barletta-trani-andria.it": !0, | |
"barlettatraniandria.it": !0, | |
"belluno.it": !0, | |
"benevento.it": !0, | |
"bergamo.it": !0, | |
"bg.it": !0, | |
"bi.it": !0, | |
"biella.it": !0, | |
"bl.it": !0, | |
"bn.it": !0, | |
"bo.it": !0, | |
"bologna.it": !0, | |
"bolzano.it": !0, | |
"bozen.it": !0, | |
"br.it": !0, | |
"brescia.it": !0, | |
"brindisi.it": !0, | |
"bs.it": !0, | |
"bt.it": !0, | |
"bz.it": !0, | |
"ca.it": !0, | |
"cagliari.it": !0, | |
"caltanissetta.it": !0, | |
"campidano-medio.it": !0, | |
"campidanomedio.it": !0, | |
"campobasso.it": !0, | |
"carbonia-iglesias.it": !0, | |
"carboniaiglesias.it": !0, | |
"carrara-massa.it": !0, | |
"carraramassa.it": !0, | |
"caserta.it": !0, | |
"catania.it": !0, | |
"catanzaro.it": !0, | |
"cb.it": !0, | |
"ce.it": !0, | |
"cesena-forli.it": !0, | |
"cesenaforli.it": !0, | |
"ch.it": !0, | |
"chieti.it": !0, | |
"ci.it": !0, | |
"cl.it": !0, | |
"cn.it": !0, | |
"co.it": !0, | |
"como.it": !0, | |
"cosenza.it": !0, | |
"cr.it": !0, | |
"cremona.it": !0, | |
"crotone.it": !0, | |
"cs.it": !0, | |
"ct.it": !0, | |
"cuneo.it": !0, | |
"cz.it": !0, | |
"dell-ogliastra.it": !0, | |
"dellogliastra.it": !0, | |
"en.it": !0, | |
"enna.it": !0, | |
"fc.it": !0, | |
"fe.it": !0, | |
"fermo.it": !0, | |
"ferrara.it": !0, | |
"fg.it": !0, | |
"fi.it": !0, | |
"firenze.it": !0, | |
"florence.it": !0, | |
"fm.it": !0, | |
"foggia.it": !0, | |
"forli-cesena.it": !0, | |
"forlicesena.it": !0, | |
"fr.it": !0, | |
"frosinone.it": !0, | |
"ge.it": !0, | |
"genoa.it": !0, | |
"genova.it": !0, | |
"go.it": !0, | |
"gorizia.it": !0, | |
"gr.it": !0, | |
"grosseto.it": !0, | |
"iglesias-carbonia.it": !0, | |
"iglesiascarbonia.it": !0, | |
"im.it": !0, | |
"imperia.it": !0, | |
"is.it": !0, | |
"isernia.it": !0, | |
"kr.it": !0, | |
"la-spezia.it": !0, | |
"laquila.it": !0, | |
"laspezia.it": !0, | |
"latina.it": !0, | |
"lc.it": !0, | |
"le.it": !0, | |
"lecce.it": !0, | |
"lecco.it": !0, | |
"li.it": !0, | |
"livorno.it": !0, | |
"lo.it": !0, | |
"lodi.it": !0, | |
"lt.it": !0, | |
"lu.it": !0, | |
"lucca.it": !0, | |
"macerata.it": !0, | |
"mantova.it": !0, | |
"massa-carrara.it": !0, | |
"massacarrara.it": !0, | |
"matera.it": !0, | |
"mb.it": !0, | |
"mc.it": !0, | |
"me.it": !0, | |
"medio-campidano.it": !0, | |
"mediocampidano.it": !0, | |
"messina.it": !0, | |
"mi.it": !0, | |
"milan.it": !0, | |
"milano.it": !0, | |
"mn.it": !0, | |
"mo.it": !0, | |
"modena.it": !0, | |
"monza-brianza.it": !0, | |
"monza-e-della-brianza.it": !0, | |
"monza.it": !0, | |
"monzabrianza.it": !0, | |
"monzaebrianza.it": !0, | |
"monzaedellabrianza.it": !0, | |
"ms.it": !0, | |
"mt.it": !0, | |
"na.it": !0, | |
"naples.it": !0, | |
"napoli.it": !0, | |
"no.it": !0, | |
"novara.it": !0, | |
"nu.it": !0, | |
"nuoro.it": !0, | |
"og.it": !0, | |
"ogliastra.it": !0, | |
"olbia-tempio.it": !0, | |
"olbiatempio.it": !0, | |
"or.it": !0, | |
"oristano.it": !0, | |
"ot.it": !0, | |
"pa.it": !0, | |
"padova.it": !0, | |
"padua.it": !0, | |
"palermo.it": !0, | |
"parma.it": !0, | |
"pavia.it": !0, | |
"pc.it": !0, | |
"pd.it": !0, | |
"pe.it": !0, | |
"perugia.it": !0, | |
"pesaro-urbino.it": !0, | |
"pesarourbino.it": !0, | |
"pescara.it": !0, | |
"pg.it": !0, | |
"pi.it": !0, | |
"piacenza.it": !0, | |
"pisa.it": !0, | |
"pistoia.it": !0, | |
"pn.it": !0, | |
"po.it": !0, | |
"pordenone.it": !0, | |
"potenza.it": !0, | |
"pr.it": !0, | |
"prato.it": !0, | |
"pt.it": !0, | |
"pu.it": !0, | |
"pv.it": !0, | |
"pz.it": !0, | |
"ra.it": !0, | |
"ragusa.it": !0, | |
"ravenna.it": !0, | |
"rc.it": !0, | |
"re.it": !0, | |
"reggio-calabria.it": !0, | |
"reggio-emilia.it": !0, | |
"reggiocalabria.it": !0, | |
"reggioemilia.it": !0, | |
"rg.it": !0, | |
"ri.it": !0, | |
"rieti.it": !0, | |
"rimini.it": !0, | |
"rm.it": !0, | |
"rn.it": !0, | |
"ro.it": !0, | |
"roma.it": !0, | |
"rome.it": !0, | |
"rovigo.it": !0, | |
"sa.it": !0, | |
"salerno.it": !0, | |
"sassari.it": !0, | |
"savona.it": !0, | |
"si.it": !0, | |
"siena.it": !0, | |
"siracusa.it": !0, | |
"so.it": !0, | |
"sondrio.it": !0, | |
"sp.it": !0, | |
"sr.it": !0, | |
"ss.it": !0, | |
"suedtirol.it": !0, | |
"sv.it": !0, | |
"ta.it": !0, | |
"taranto.it": !0, | |
"te.it": !0, | |
"tempio-olbia.it": !0, | |
"tempioolbia.it": !0, | |
"teramo.it": !0, | |
"terni.it": !0, | |
"tn.it": !0, | |
"to.it": !0, | |
"torino.it": !0, | |
"tp.it": !0, | |
"tr.it": !0, | |
"trani-andria-barletta.it": !0, | |
"trani-barletta-andria.it": !0, | |
"traniandriabarletta.it": !0, | |
"tranibarlettaandria.it": !0, | |
"trapani.it": !0, | |
"trentino.it": !0, | |
"trento.it": !0, | |
"treviso.it": !0, | |
"trieste.it": !0, | |
"ts.it": !0, | |
"turin.it": !0, | |
"tv.it": !0, | |
"ud.it": !0, | |
"udine.it": !0, | |
"urbino-pesaro.it": !0, | |
"urbinopesaro.it": !0, | |
"va.it": !0, | |
"varese.it": !0, | |
"vb.it": !0, | |
"vc.it": !0, | |
"ve.it": !0, | |
"venezia.it": !0, | |
"venice.it": !0, | |
"verbania.it": !0, | |
"vercelli.it": !0, | |
"verona.it": !0, | |
"vi.it": !0, | |
"vibo-valentia.it": !0, | |
"vibovalentia.it": !0, | |
"vicenza.it": !0, | |
"viterbo.it": !0, | |
"vr.it": !0, | |
"vs.it": !0, | |
"vt.it": !0, | |
"vv.it": !0, | |
je: !0, | |
"co.je": !0, | |
"net.je": !0, | |
"org.je": !0, | |
"*.jm": !0, | |
jo: !0, | |
"com.jo": !0, | |
"org.jo": !0, | |
"net.jo": !0, | |
"edu.jo": !0, | |
"sch.jo": !0, | |
"gov.jo": !0, | |
"mil.jo": !0, | |
"name.jo": !0, | |
jobs: !0, | |
jp: !0, | |
"ac.jp": !0, | |
"ad.jp": !0, | |
"co.jp": !0, | |
"ed.jp": !0, | |
"go.jp": !0, | |
"gr.jp": !0, | |
"lg.jp": !0, | |
"ne.jp": !0, | |
"or.jp": !0, | |
"aichi.jp": !0, | |
"akita.jp": !0, | |
"aomori.jp": !0, | |
"chiba.jp": !0, | |
"ehime.jp": !0, | |
"fukui.jp": !0, | |
"fukuoka.jp": !0, | |
"fukushima.jp": !0, | |
"gifu.jp": !0, | |
"gunma.jp": !0, | |
"hiroshima.jp": !0, | |
"hokkaido.jp": !0, | |
"hyogo.jp": !0, | |
"ibaraki.jp": !0, | |
"ishikawa.jp": !0, | |
"iwate.jp": !0, | |
"kagawa.jp": !0, | |
"kagoshima.jp": !0, | |
"kanagawa.jp": !0, | |
"kochi.jp": !0, | |
"kumamoto.jp": !0, | |
"kyoto.jp": !0, | |
"mie.jp": !0, | |
"miyagi.jp": !0, | |
"miyazaki.jp": !0, | |
"nagano.jp": !0, | |
"nagasaki.jp": !0, | |
"nara.jp": !0, | |
"niigata.jp": !0, | |
"oita.jp": !0, | |
"okayama.jp": !0, | |
"okinawa.jp": !0, | |
"osaka.jp": !0, | |
"saga.jp": !0, | |
"saitama.jp": !0, | |
"shiga.jp": !0, | |
"shimane.jp": !0, | |
"shizuoka.jp": !0, | |
"tochigi.jp": !0, | |
"tokushima.jp": !0, | |
"tokyo.jp": !0, | |
"tottori.jp": !0, | |
"toyama.jp": !0, | |
"wakayama.jp": !0, | |
"yamagata.jp": !0, | |
"yamaguchi.jp": !0, | |
"yamanashi.jp": !0, | |
"xn--4pvxs.jp": !0, | |
"xn--vgu402c.jp": !0, | |
"xn--c3s14m.jp": !0, | |
"xn--f6qx53a.jp": !0, | |
"xn--8pvr4u.jp": !0, | |
"xn--uist22h.jp": !0, | |
"xn--djrs72d6uy.jp": !0, | |
"xn--mkru45i.jp": !0, | |
"xn--0trq7p7nn.jp": !0, | |
"xn--8ltr62k.jp": !0, | |
"xn--2m4a15e.jp": !0, | |
"xn--efvn9s.jp": !0, | |
"xn--32vp30h.jp": !0, | |
"xn--4it797k.jp": !0, | |
"xn--1lqs71d.jp": !0, | |
"xn--5rtp49c.jp": !0, | |
"xn--5js045d.jp": !0, | |
"xn--ehqz56n.jp": !0, | |
"xn--1lqs03n.jp": !0, | |
"xn--qqqt11m.jp": !0, | |
"xn--kbrq7o.jp": !0, | |
"xn--pssu33l.jp": !0, | |
"xn--ntsq17g.jp": !0, | |
"xn--uisz3g.jp": !0, | |
"xn--6btw5a.jp": !0, | |
"xn--1ctwo.jp": !0, | |
"xn--6orx2r.jp": !0, | |
"xn--rht61e.jp": !0, | |
"xn--rht27z.jp": !0, | |
"xn--djty4k.jp": !0, | |
"xn--nit225k.jp": !0, | |
"xn--rht3d.jp": !0, | |
"xn--klty5x.jp": !0, | |
"xn--kltx9a.jp": !0, | |
"xn--kltp7d.jp": !0, | |
"xn--uuwu58a.jp": !0, | |
"xn--zbx025d.jp": !0, | |
"xn--ntso0iqx3a.jp": !0, | |
"xn--elqq16h.jp": !0, | |
"xn--4it168d.jp": !0, | |
"xn--klt787d.jp": !0, | |
"xn--rny31h.jp": !0, | |
"xn--7t0a264c.jp": !0, | |
"xn--5rtq34k.jp": !0, | |
"xn--k7yn95e.jp": !0, | |
"xn--tor131o.jp": !0, | |
"xn--d5qv7z876c.jp": !0, | |
"*.kawasaki.jp": !0, | |
"*.kitakyushu.jp": !0, | |
"*.kobe.jp": !0, | |
"*.nagoya.jp": !0, | |
"*.sapporo.jp": !0, | |
"*.sendai.jp": !0, | |
"*.yokohama.jp": !0, | |
"city.kawasaki.jp": !1, | |
"city.kitakyushu.jp": !1, | |
"city.kobe.jp": !1, | |
"city.nagoya.jp": !1, | |
"city.sapporo.jp": !1, | |
"city.sendai.jp": !1, | |
"city.yokohama.jp": !1, | |
"aisai.aichi.jp": !0, | |
"ama.aichi.jp": !0, | |
"anjo.aichi.jp": !0, | |
"asuke.aichi.jp": !0, | |
"chiryu.aichi.jp": !0, | |
"chita.aichi.jp": !0, | |
"fuso.aichi.jp": !0, | |
"gamagori.aichi.jp": !0, | |
"handa.aichi.jp": !0, | |
"hazu.aichi.jp": !0, | |
"hekinan.aichi.jp": !0, | |
"higashiura.aichi.jp": !0, | |
"ichinomiya.aichi.jp": !0, | |
"inazawa.aichi.jp": !0, | |
"inuyama.aichi.jp": !0, | |
"isshiki.aichi.jp": !0, | |
"iwakura.aichi.jp": !0, | |
"kanie.aichi.jp": !0, | |
"kariya.aichi.jp": !0, | |
"kasugai.aichi.jp": !0, | |
"kira.aichi.jp": !0, | |
"kiyosu.aichi.jp": !0, | |
"komaki.aichi.jp": !0, | |
"konan.aichi.jp": !0, | |
"kota.aichi.jp": !0, | |
"mihama.aichi.jp": !0, | |
"miyoshi.aichi.jp": !0, | |
"nishio.aichi.jp": !0, | |
"nisshin.aichi.jp": !0, | |
"obu.aichi.jp": !0, | |
"oguchi.aichi.jp": !0, | |
"oharu.aichi.jp": !0, | |
"okazaki.aichi.jp": !0, | |
"owariasahi.aichi.jp": !0, | |
"seto.aichi.jp": !0, | |
"shikatsu.aichi.jp": !0, | |
"shinshiro.aichi.jp": !0, | |
"shitara.aichi.jp": !0, | |
"tahara.aichi.jp": !0, | |
"takahama.aichi.jp": !0, | |
"tobishima.aichi.jp": !0, | |
"toei.aichi.jp": !0, | |
"togo.aichi.jp": !0, | |
"tokai.aichi.jp": !0, | |
"tokoname.aichi.jp": !0, | |
"toyoake.aichi.jp": !0, | |
"toyohashi.aichi.jp": !0, | |
"toyokawa.aichi.jp": !0, | |
"toyone.aichi.jp": !0, | |
"toyota.aichi.jp": !0, | |
"tsushima.aichi.jp": !0, | |
"yatomi.aichi.jp": !0, | |
"akita.akita.jp": !0, | |
"daisen.akita.jp": !0, | |
"fujisato.akita.jp": !0, | |
"gojome.akita.jp": !0, | |
"hachirogata.akita.jp": !0, | |
"happou.akita.jp": !0, | |
"higashinaruse.akita.jp": !0, | |
"honjo.akita.jp": !0, | |
"honjyo.akita.jp": !0, | |
"ikawa.akita.jp": !0, | |
"kamikoani.akita.jp": !0, | |
"kamioka.akita.jp": !0, | |
"katagami.akita.jp": !0, | |
"kazuno.akita.jp": !0, | |
"kitaakita.akita.jp": !0, | |
"kosaka.akita.jp": !0, | |
"kyowa.akita.jp": !0, | |
"misato.akita.jp": !0, | |
"mitane.akita.jp": !0, | |
"moriyoshi.akita.jp": !0, | |
"nikaho.akita.jp": !0, | |
"noshiro.akita.jp": !0, | |
"odate.akita.jp": !0, | |
"oga.akita.jp": !0, | |
"ogata.akita.jp": !0, | |
"semboku.akita.jp": !0, | |
"yokote.akita.jp": !0, | |
"yurihonjo.akita.jp": !0, | |
"aomori.aomori.jp": !0, | |
"gonohe.aomori.jp": !0, | |
"hachinohe.aomori.jp": !0, | |
"hashikami.aomori.jp": !0, | |
"hiranai.aomori.jp": !0, | |
"hirosaki.aomori.jp": !0, | |
"itayanagi.aomori.jp": !0, | |
"kuroishi.aomori.jp": !0, | |
"misawa.aomori.jp": !0, | |
"mutsu.aomori.jp": !0, | |
"nakadomari.aomori.jp": !0, | |
"noheji.aomori.jp": !0, | |
"oirase.aomori.jp": !0, | |
"owani.aomori.jp": !0, | |
"rokunohe.aomori.jp": !0, | |
"sannohe.aomori.jp": !0, | |
"shichinohe.aomori.jp": !0, | |
"shingo.aomori.jp": !0, | |
"takko.aomori.jp": !0, | |
"towada.aomori.jp": !0, | |
"tsugaru.aomori.jp": !0, | |
"tsuruta.aomori.jp": !0, | |
"abiko.chiba.jp": !0, | |
"asahi.chiba.jp": !0, | |
"chonan.chiba.jp": !0, | |
"chosei.chiba.jp": !0, | |
"choshi.chiba.jp": !0, | |
"chuo.chiba.jp": !0, | |
"funabashi.chiba.jp": !0, | |
"futtsu.chiba.jp": !0, | |
"hanamigawa.chiba.jp": !0, | |
"ichihara.chiba.jp": !0, | |
"ichikawa.chiba.jp": !0, | |
"ichinomiya.chiba.jp": !0, | |
"inzai.chiba.jp": !0, | |
"isumi.chiba.jp": !0, | |
"kamagaya.chiba.jp": !0, | |
"kamogawa.chiba.jp": !0, | |
"kashiwa.chiba.jp": !0, | |
"katori.chiba.jp": !0, | |
"katsuura.chiba.jp": !0, | |
"kimitsu.chiba.jp": !0, | |
"kisarazu.chiba.jp": !0, | |
"kozaki.chiba.jp": !0, | |
"kujukuri.chiba.jp": !0, | |
"kyonan.chiba.jp": !0, | |
"matsudo.chiba.jp": !0, | |
"midori.chiba.jp": !0, | |
"mihama.chiba.jp": !0, | |
"minamiboso.chiba.jp": !0, | |
"mobara.chiba.jp": !0, | |
"mutsuzawa.chiba.jp": !0, | |
"nagara.chiba.jp": !0, | |
"nagareyama.chiba.jp": !0, | |
"narashino.chiba.jp": !0, | |
"narita.chiba.jp": !0, | |
"noda.chiba.jp": !0, | |
"oamishirasato.chiba.jp": !0, | |
"omigawa.chiba.jp": !0, | |
"onjuku.chiba.jp": !0, | |
"otaki.chiba.jp": !0, | |
"sakae.chiba.jp": !0, | |
"sakura.chiba.jp": !0, | |
"shimofusa.chiba.jp": !0, | |
"shirako.chiba.jp": !0, | |
"shiroi.chiba.jp": !0, | |
"shisui.chiba.jp": !0, | |
"sodegaura.chiba.jp": !0, | |
"sosa.chiba.jp": !0, | |
"tako.chiba.jp": !0, | |
"tateyama.chiba.jp": !0, | |
"togane.chiba.jp": !0, | |
"tohnosho.chiba.jp": !0, | |
"tomisato.chiba.jp": !0, | |
"urayasu.chiba.jp": !0, | |
"yachimata.chiba.jp": !0, | |
"yachiyo.chiba.jp": !0, | |
"yokaichiba.chiba.jp": !0, | |
"yokoshibahikari.chiba.jp": !0, | |
"yotsukaido.chiba.jp": !0, | |
"ainan.ehime.jp": !0, | |
"honai.ehime.jp": !0, | |
"ikata.ehime.jp": !0, | |
"imabari.ehime.jp": !0, | |
"iyo.ehime.jp": !0, | |
"kamijima.ehime.jp": !0, | |
"kihoku.ehime.jp": !0, | |
"kumakogen.ehime.jp": !0, | |
"masaki.ehime.jp": !0, | |
"matsuno.ehime.jp": !0, | |
"matsuyama.ehime.jp": !0, | |
"namikata.ehime.jp": !0, | |
"niihama.ehime.jp": !0, | |
"ozu.ehime.jp": !0, | |
"saijo.ehime.jp": !0, | |
"seiyo.ehime.jp": !0, | |
"shikokuchuo.ehime.jp": !0, | |
"tobe.ehime.jp": !0, | |
"toon.ehime.jp": !0, | |
"uchiko.ehime.jp": !0, | |
"uwajima.ehime.jp": !0, | |
"yawatahama.ehime.jp": !0, | |
"echizen.fukui.jp": !0, | |
"eiheiji.fukui.jp": !0, | |
"fukui.fukui.jp": !0, | |
"ikeda.fukui.jp": !0, | |
"katsuyama.fukui.jp": !0, | |
"mihama.fukui.jp": !0, | |
"minamiechizen.fukui.jp": !0, | |
"obama.fukui.jp": !0, | |
"ohi.fukui.jp": !0, | |
"ono.fukui.jp": !0, | |
"sabae.fukui.jp": !0, | |
"sakai.fukui.jp": !0, | |
"takahama.fukui.jp": !0, | |
"tsuruga.fukui.jp": !0, | |
"wakasa.fukui.jp": !0, | |
"ashiya.fukuoka.jp": !0, | |
"buzen.fukuoka.jp": !0, | |
"chikugo.fukuoka.jp": !0, | |
"chikuho.fukuoka.jp": !0, | |
"chikujo.fukuoka.jp": !0, | |
"chikushino.fukuoka.jp": !0, | |
"chikuzen.fukuoka.jp": !0, | |
"chuo.fukuoka.jp": !0, | |
"dazaifu.fukuoka.jp": !0, | |
"fukuchi.fukuoka.jp": !0, | |
"hakata.fukuoka.jp": !0, | |
"higashi.fukuoka.jp": !0, | |
"hirokawa.fukuoka.jp": !0, | |
"hisayama.fukuoka.jp": !0, | |
"iizuka.fukuoka.jp": !0, | |
"inatsuki.fukuoka.jp": !0, | |
"kaho.fukuoka.jp": !0, | |
"kasuga.fukuoka.jp": !0, | |
"kasuya.fukuoka.jp": !0, | |
"kawara.fukuoka.jp": !0, | |
"keisen.fukuoka.jp": !0, | |
"koga.fukuoka.jp": !0, | |
"kurate.fukuoka.jp": !0, | |
"kurogi.fukuoka.jp": !0, | |
"kurume.fukuoka.jp": !0, | |
"minami.fukuoka.jp": !0, | |
"miyako.fukuoka.jp": !0, | |
"miyama.fukuoka.jp": !0, | |
"miyawaka.fukuoka.jp": !0, | |
"mizumaki.fukuoka.jp": !0, | |
"munakata.fukuoka.jp": !0, | |
"nakagawa.fukuoka.jp": !0, | |
"nakama.fukuoka.jp": !0, | |
"nishi.fukuoka.jp": !0, | |
"nogata.fukuoka.jp": !0, | |
"ogori.fukuoka.jp": !0, | |
"okagaki.fukuoka.jp": !0, | |
"okawa.fukuoka.jp": !0, | |
"oki.fukuoka.jp": !0, | |
"omuta.fukuoka.jp": !0, | |
"onga.fukuoka.jp": !0, | |
"onojo.fukuoka.jp": !0, | |
"oto.fukuoka.jp": !0, | |
"saigawa.fukuoka.jp": !0, | |
"sasaguri.fukuoka.jp": !0, | |
"shingu.fukuoka.jp": !0, | |
"shinyoshitomi.fukuoka.jp": !0, | |
"shonai.fukuoka.jp": !0, | |
"soeda.fukuoka.jp": !0, | |
"sue.fukuoka.jp": !0, | |
"tachiarai.fukuoka.jp": !0, | |
"tagawa.fukuoka.jp": !0, | |
"takata.fukuoka.jp": !0, | |
"toho.fukuoka.jp": !0, | |
"toyotsu.fukuoka.jp": !0, | |
"tsuiki.fukuoka.jp": !0, | |
"ukiha.fukuoka.jp": !0, | |
"umi.fukuoka.jp": !0, | |
"usui.fukuoka.jp": !0, | |
"yamada.fukuoka.jp": !0, | |
"yame.fukuoka.jp": !0, | |
"yanagawa.fukuoka.jp": !0, | |
"yukuhashi.fukuoka.jp": !0, | |
"aizubange.fukushima.jp": !0, | |
"aizumisato.fukushima.jp": !0, | |
"aizuwakamatsu.fukushima.jp": !0, | |
"asakawa.fukushima.jp": !0, | |
"bandai.fukushima.jp": !0, | |
"date.fukushima.jp": !0, | |
"fukushima.fukushima.jp": !0, | |
"furudono.fukushima.jp": !0, | |
"futaba.fukushima.jp": !0, | |
"hanawa.fukushima.jp": !0, | |
"higashi.fukushima.jp": !0, | |
"hirata.fukushima.jp": !0, | |
"hirono.fukushima.jp": !0, | |
"iitate.fukushima.jp": !0, | |
"inawashiro.fukushima.jp": !0, | |
"ishikawa.fukushima.jp": !0, | |
"iwaki.fukushima.jp": !0, | |
"izumizaki.fukushima.jp": !0, | |
"kagamiishi.fukushima.jp": !0, | |
"kaneyama.fukushima.jp": !0, | |
"kawamata.fukushima.jp": !0, | |
"kitakata.fukushima.jp": !0, | |
"kitashiobara.fukushima.jp": !0, | |
"koori.fukushima.jp": !0, | |
"koriyama.fukushima.jp": !0, | |
"kunimi.fukushima.jp": !0, | |
"miharu.fukushima.jp": !0, | |
"mishima.fukushima.jp": !0, | |
"namie.fukushima.jp": !0, | |
"nango.fukushima.jp": !0, | |
"nishiaizu.fukushima.jp": !0, | |
"nishigo.fukushima.jp": !0, | |
"okuma.fukushima.jp": !0, | |
"omotego.fukushima.jp": !0, | |
"ono.fukushima.jp": !0, | |
"otama.fukushima.jp": !0, | |
"samegawa.fukushima.jp": !0, | |
"shimogo.fukushima.jp": !0, | |
"shirakawa.fukushima.jp": !0, | |
"showa.fukushima.jp": !0, | |
"soma.fukushima.jp": !0, | |
"sukagawa.fukushima.jp": !0, | |
"taishin.fukushima.jp": !0, | |
"tamakawa.fukushima.jp": !0, | |
"tanagura.fukushima.jp": !0, | |
"tenei.fukushima.jp": !0, | |
"yabuki.fukushima.jp": !0, | |
"yamato.fukushima.jp": !0, | |
"yamatsuri.fukushima.jp": !0, | |
"yanaizu.fukushima.jp": !0, | |
"yugawa.fukushima.jp": !0, | |
"anpachi.gifu.jp": !0, | |
"ena.gifu.jp": !0, | |
"gifu.gifu.jp": !0, | |
"ginan.gifu.jp": !0, | |
"godo.gifu.jp": !0, | |
"gujo.gifu.jp": !0, | |
"hashima.gifu.jp": !0, | |
"hichiso.gifu.jp": !0, | |
"hida.gifu.jp": !0, | |
"higashishirakawa.gifu.jp": !0, | |
"ibigawa.gifu.jp": !0, | |
"ikeda.gifu.jp": !0, | |
"kakamigahara.gifu.jp": !0, | |
"kani.gifu.jp": !0, | |
"kasahara.gifu.jp": !0, | |
"kasamatsu.gifu.jp": !0, | |
"kawaue.gifu.jp": !0, | |
"kitagata.gifu.jp": !0, | |
"mino.gifu.jp": !0, | |
"minokamo.gifu.jp": !0, | |
"mitake.gifu.jp": !0, | |
"mizunami.gifu.jp": !0, | |
"motosu.gifu.jp": !0, | |
"nakatsugawa.gifu.jp": !0, | |
"ogaki.gifu.jp": !0, | |
"sakahogi.gifu.jp": !0, | |
"seki.gifu.jp": !0, | |
"sekigahara.gifu.jp": !0, | |
"shirakawa.gifu.jp": !0, | |
"tajimi.gifu.jp": !0, | |
"takayama.gifu.jp": !0, | |
"tarui.gifu.jp": !0, | |
"toki.gifu.jp": !0, | |
"tomika.gifu.jp": !0, | |
"wanouchi.gifu.jp": !0, | |
"yamagata.gifu.jp": !0, | |
"yaotsu.gifu.jp": !0, | |
"yoro.gifu.jp": !0, | |
"annaka.gunma.jp": !0, | |
"chiyoda.gunma.jp": !0, | |
"fujioka.gunma.jp": !0, | |
"higashiagatsuma.gunma.jp": !0, | |
"isesaki.gunma.jp": !0, | |
"itakura.gunma.jp": !0, | |
"kanna.gunma.jp": !0, | |
"kanra.gunma.jp": !0, | |
"katashina.gunma.jp": !0, | |
"kawaba.gunma.jp": !0, | |
"kiryu.gunma.jp": !0, | |
"kusatsu.gunma.jp": !0, | |
"maebashi.gunma.jp": !0, | |
"meiwa.gunma.jp": !0, | |
"midori.gunma.jp": !0, | |
"minakami.gunma.jp": !0, | |
"naganohara.gunma.jp": !0, | |
"nakanojo.gunma.jp": !0, | |
"nanmoku.gunma.jp": !0, | |
"numata.gunma.jp": !0, | |
"oizumi.gunma.jp": !0, | |
"ora.gunma.jp": !0, | |
"ota.gunma.jp": !0, | |
"shibukawa.gunma.jp": !0, | |
"shimonita.gunma.jp": !0, | |
"shinto.gunma.jp": !0, | |
"showa.gunma.jp": !0, | |
"takasaki.gunma.jp": !0, | |
"takayama.gunma.jp": !0, | |
"tamamura.gunma.jp": !0, | |
"tatebayashi.gunma.jp": !0, | |
"tomioka.gunma.jp": !0, | |
"tsukiyono.gunma.jp": !0, | |
"tsumagoi.gunma.jp": !0, | |
"ueno.gunma.jp": !0, | |
"yoshioka.gunma.jp": !0, | |
"asaminami.hiroshima.jp": !0, | |
"daiwa.hiroshima.jp": !0, | |
"etajima.hiroshima.jp": !0, | |
"fuchu.hiroshima.jp": !0, | |
"fukuyama.hiroshima.jp": !0, | |
"hatsukaichi.hiroshima.jp": !0, | |
"higashihiroshima.hiroshima.jp": !0, | |
"hongo.hiroshima.jp": !0, | |
"jinsekikogen.hiroshima.jp": !0, | |
"kaita.hiroshima.jp": !0, | |
"kui.hiroshima.jp": !0, | |
"kumano.hiroshima.jp": !0, | |
"kure.hiroshima.jp": !0, | |
"mihara.hiroshima.jp": !0, | |
"miyoshi.hiroshima.jp": !0, | |
"naka.hiroshima.jp": !0, | |
"onomichi.hiroshima.jp": !0, | |
"osakikamijima.hiroshima.jp": !0, | |
"otake.hiroshima.jp": !0, | |
"saka.hiroshima.jp": !0, | |
"sera.hiroshima.jp": !0, | |
"seranishi.hiroshima.jp": !0, | |
"shinichi.hiroshima.jp": !0, | |
"shobara.hiroshima.jp": !0, | |
"takehara.hiroshima.jp": !0, | |
"abashiri.hokkaido.jp": !0, | |
"abira.hokkaido.jp": !0, | |
"aibetsu.hokkaido.jp": !0, | |
"akabira.hokkaido.jp": !0, | |
"akkeshi.hokkaido.jp": !0, | |
"asahikawa.hokkaido.jp": !0, | |
"ashibetsu.hokkaido.jp": !0, | |
"ashoro.hokkaido.jp": !0, | |
"assabu.hokkaido.jp": !0, | |
"atsuma.hokkaido.jp": !0, | |
"bibai.hokkaido.jp": !0, | |
"biei.hokkaido.jp": !0, | |
"bifuka.hokkaido.jp": !0, | |
"bihoro.hokkaido.jp": !0, | |
"biratori.hokkaido.jp": !0, | |
"chippubetsu.hokkaido.jp": !0, | |
"chitose.hokkaido.jp": !0, | |
"date.hokkaido.jp": !0, | |
"ebetsu.hokkaido.jp": !0, | |
"embetsu.hokkaido.jp": !0, | |
"eniwa.hokkaido.jp": !0, | |
"erimo.hokkaido.jp": !0, | |
"esan.hokkaido.jp": !0, | |
"esashi.hokkaido.jp": !0, | |
"fukagawa.hokkaido.jp": !0, | |
"fukushima.hokkaido.jp": !0, | |
"furano.hokkaido.jp": !0, | |
"furubira.hokkaido.jp": !0, | |
"haboro.hokkaido.jp": !0, | |
"hakodate.hokkaido.jp": !0, | |
"hamatonbetsu.hokkaido.jp": !0, | |
"hidaka.hokkaido.jp": !0, | |
"higashikagura.hokkaido.jp": !0, | |
"higashikawa.hokkaido.jp": !0, | |
"hiroo.hokkaido.jp": !0, | |
"hokuryu.hokkaido.jp": !0, | |
"hokuto.hokkaido.jp": !0, | |
"honbetsu.hokkaido.jp": !0, | |
"horokanai.hokkaido.jp": !0, | |
"horonobe.hokkaido.jp": !0, | |
"ikeda.hokkaido.jp": !0, | |
"imakane.hokkaido.jp": !0, | |
"ishikari.hokkaido.jp": !0, | |
"iwamizawa.hokkaido.jp": !0, | |
"iwanai.hokkaido.jp": !0, | |
"kamifurano.hokkaido.jp": !0, | |
"kamikawa.hokkaido.jp": !0, | |
"kamishihoro.hokkaido.jp": !0, | |
"kamisunagawa.hokkaido.jp": !0, | |
"kamoenai.hokkaido.jp": !0, | |
"kayabe.hokkaido.jp": !0, | |
"kembuchi.hokkaido.jp": !0, | |
"kikonai.hokkaido.jp": !0, | |
"kimobetsu.hokkaido.jp": !0, | |
"kitahiroshima.hokkaido.jp": !0, | |
"kitami.hokkaido.jp": !0, | |
"kiyosato.hokkaido.jp": !0, | |
"koshimizu.hokkaido.jp": !0, | |
"kunneppu.hokkaido.jp": !0, | |
"kuriyama.hokkaido.jp": !0, | |
"kuromatsunai.hokkaido.jp": !0, | |
"kushiro.hokkaido.jp": !0, | |
"kutchan.hokkaido.jp": !0, | |
"kyowa.hokkaido.jp": !0, | |
"mashike.hokkaido.jp": !0, | |
"matsumae.hokkaido.jp": !0, | |
"mikasa.hokkaido.jp": !0, | |
"minamifurano.hokkaido.jp": !0, | |
"mombetsu.hokkaido.jp": !0, | |
"moseushi.hokkaido.jp": !0, | |
"mukawa.hokkaido.jp": !0, | |
"muroran.hokkaido.jp": !0, | |
"naie.hokkaido.jp": !0, | |
"nakagawa.hokkaido.jp": !0, | |
"nakasatsunai.hokkaido.jp": !0, | |
"nakatombetsu.hokkaido.jp": !0, | |
"nanae.hokkaido.jp": !0, | |
"nanporo.hokkaido.jp": !0, | |
"nayoro.hokkaido.jp": !0, | |
"nemuro.hokkaido.jp": !0, | |
"niikappu.hokkaido.jp": !0, | |
"niki.hokkaido.jp": !0, | |
"nishiokoppe.hokkaido.jp": !0, | |
"noboribetsu.hokkaido.jp": !0, | |
"numata.hokkaido.jp": !0, | |
"obihiro.hokkaido.jp": !0, | |
"obira.hokkaido.jp": !0, | |
"oketo.hokkaido.jp": !0, | |
"okoppe.hokkaido.jp": !0, | |
"otaru.hokkaido.jp": !0, | |
"otobe.hokkaido.jp": !0, | |
"otofuke.hokkaido.jp": !0, | |
"otoineppu.hokkaido.jp": !0, | |
"oumu.hokkaido.jp": !0, | |
"ozora.hokkaido.jp": !0, | |
"pippu.hokkaido.jp": !0, | |
"rankoshi.hokkaido.jp": !0, | |
"rebun.hokkaido.jp": !0, | |
"rikubetsu.hokkaido.jp": !0, | |
"rishiri.hokkaido.jp": !0, | |
"rishirifuji.hokkaido.jp": !0, | |
"saroma.hokkaido.jp": !0, | |
"sarufutsu.hokkaido.jp": !0, | |
"shakotan.hokkaido.jp": !0, | |
"shari.hokkaido.jp": !0, | |
"shibecha.hokkaido.jp": !0, | |
"shibetsu.hokkaido.jp": !0, | |
"shikabe.hokkaido.jp": !0, | |
"shikaoi.hokkaido.jp": !0, | |
"shimamaki.hokkaido.jp": !0, | |
"shimizu.hokkaido.jp": !0, | |
"shimokawa.hokkaido.jp": !0, | |
"shinshinotsu.hokkaido.jp": !0, | |
"shintoku.hokkaido.jp": !0, | |
"shiranuka.hokkaido.jp": !0, | |
"shiraoi.hokkaido.jp": !0, | |
"shiriuchi.hokkaido.jp": !0, | |
"sobetsu.hokkaido.jp": !0, | |
"sunagawa.hokkaido.jp": !0, | |
"taiki.hokkaido.jp": !0, | |
"takasu.hokkaido.jp": !0, | |
"takikawa.hokkaido.jp": !0, | |
"takinoue.hokkaido.jp": !0, | |
"teshikaga.hokkaido.jp": !0, | |
"tobetsu.hokkaido.jp": !0, | |
"tohma.hokkaido.jp": !0, | |
"tomakomai.hokkaido.jp": !0, | |
"tomari.hokkaido.jp": !0, | |
"toya.hokkaido.jp": !0, | |
"toyako.hokkaido.jp": !0, | |
"toyotomi.hokkaido.jp": !0, | |
"toyoura.hokkaido.jp": !0, | |
"tsubetsu.hokkaido.jp": !0, | |
"tsukigata.hokkaido.jp": !0, | |
"urakawa.hokkaido.jp": !0, | |
"urausu.hokkaido.jp": !0, | |
"uryu.hokkaido.jp": !0, | |
"utashinai.hokkaido.jp": !0, | |
"wakkanai.hokkaido.jp": !0, | |
"wassamu.hokkaido.jp": !0, | |
"yakumo.hokkaido.jp": !0, | |
"yoichi.hokkaido.jp": !0, | |
"aioi.hyogo.jp": !0, | |
"akashi.hyogo.jp": !0, | |
"ako.hyogo.jp": !0, | |
"amagasaki.hyogo.jp": !0, | |
"aogaki.hyogo.jp": !0, | |
"asago.hyogo.jp": !0, | |
"ashiya.hyogo.jp": !0, | |
"awaji.hyogo.jp": !0, | |
"fukusaki.hyogo.jp": !0, | |
"goshiki.hyogo.jp": !0, | |
"harima.hyogo.jp": !0, | |
"himeji.hyogo.jp": !0, | |
"ichikawa.hyogo.jp": !0, | |
"inagawa.hyogo.jp": !0, | |
"itami.hyogo.jp": !0, | |
"kakogawa.hyogo.jp": !0, | |
"kamigori.hyogo.jp": !0, | |
"kamikawa.hyogo.jp": !0, | |
"kasai.hyogo.jp": !0, | |
"kasuga.hyogo.jp": !0, | |
"kawanishi.hyogo.jp": !0, | |
"miki.hyogo.jp": !0, | |
"minamiawaji.hyogo.jp": !0, | |
"nishinomiya.hyogo.jp": !0, | |
"nishiwaki.hyogo.jp": !0, | |
"ono.hyogo.jp": !0, | |
"sanda.hyogo.jp": !0, | |
"sannan.hyogo.jp": !0, | |
"sasayama.hyogo.jp": !0, | |
"sayo.hyogo.jp": !0, | |
"shingu.hyogo.jp": !0, | |
"shinonsen.hyogo.jp": !0, | |
"shiso.hyogo.jp": !0, | |
"sumoto.hyogo.jp": !0, | |
"taishi.hyogo.jp": !0, | |
"taka.hyogo.jp": !0, | |
"takarazuka.hyogo.jp": !0, | |
"takasago.hyogo.jp": !0, | |
"takino.hyogo.jp": !0, | |
"tamba.hyogo.jp": !0, | |
"tatsuno.hyogo.jp": !0, | |
"toyooka.hyogo.jp": !0, | |
"yabu.hyogo.jp": !0, | |
"yashiro.hyogo.jp": !0, | |
"yoka.hyogo.jp": !0, | |
"yokawa.hyogo.jp": !0, | |
"ami.ibaraki.jp": !0, | |
"asahi.ibaraki.jp": !0, | |
"bando.ibaraki.jp": !0, | |
"chikusei.ibaraki.jp": !0, | |
"daigo.ibaraki.jp": !0, | |
"fujishiro.ibaraki.jp": !0, | |
"hitachi.ibaraki.jp": !0, | |
"hitachinaka.ibaraki.jp": !0, | |
"hitachiomiya.ibaraki.jp": !0, | |
"hitachiota.ibaraki.jp": !0, | |
"ibaraki.ibaraki.jp": !0, | |
"ina.ibaraki.jp": !0, | |
"inashiki.ibaraki.jp": !0, | |
"itako.ibaraki.jp": !0, | |
"iwama.ibaraki.jp": !0, | |
"joso.ibaraki.jp": !0, | |
"kamisu.ibaraki.jp": !0, | |
"kasama.ibaraki.jp": !0, | |
"kashima.ibaraki.jp": !0, | |
"kasumigaura.ibaraki.jp": !0, | |
"koga.ibaraki.jp": !0, | |
"miho.ibaraki.jp": !0, | |
"mito.ibaraki.jp": !0, | |
"moriya.ibaraki.jp": !0, | |
"naka.ibaraki.jp": !0, | |
"namegata.ibaraki.jp": !0, | |
"oarai.ibaraki.jp": !0, | |
"ogawa.ibaraki.jp": !0, | |
"omitama.ibaraki.jp": !0, | |
"ryugasaki.ibaraki.jp": !0, | |
"sakai.ibaraki.jp": !0, | |
"sakuragawa.ibaraki.jp": !0, | |
"shimodate.ibaraki.jp": !0, | |
"shimotsuma.ibaraki.jp": !0, | |
"shirosato.ibaraki.jp": !0, | |
"sowa.ibaraki.jp": !0, | |
"suifu.ibaraki.jp": !0, | |
"takahagi.ibaraki.jp": !0, | |
"tamatsukuri.ibaraki.jp": !0, | |
"tokai.ibaraki.jp": !0, | |
"tomobe.ibaraki.jp": !0, | |
"tone.ibaraki.jp": !0, | |
"toride.ibaraki.jp": !0, | |
"tsuchiura.ibaraki.jp": !0, | |
"tsukuba.ibaraki.jp": !0, | |
"uchihara.ibaraki.jp": !0, | |
"ushiku.ibaraki.jp": !0, | |
"yachiyo.ibaraki.jp": !0, | |
"yamagata.ibaraki.jp": !0, | |
"yawara.ibaraki.jp": !0, | |
"yuki.ibaraki.jp": !0, | |
"anamizu.ishikawa.jp": !0, | |
"hakui.ishikawa.jp": !0, | |
"hakusan.ishikawa.jp": !0, | |
"kaga.ishikawa.jp": !0, | |
"kahoku.ishikawa.jp": !0, | |
"kanazawa.ishikawa.jp": !0, | |
"kawakita.ishikawa.jp": !0, | |
"komatsu.ishikawa.jp": !0, | |
"nakanoto.ishikawa.jp": !0, | |
"nanao.ishikawa.jp": !0, | |
"nomi.ishikawa.jp": !0, | |
"nonoichi.ishikawa.jp": !0, | |
"noto.ishikawa.jp": !0, | |
"shika.ishikawa.jp": !0, | |
"suzu.ishikawa.jp": !0, | |
"tsubata.ishikawa.jp": !0, | |
"tsurugi.ishikawa.jp": !0, | |
"uchinada.ishikawa.jp": !0, | |
"wajima.ishikawa.jp": !0, | |
"fudai.iwate.jp": !0, | |
"fujisawa.iwate.jp": !0, | |
"hanamaki.iwate.jp": !0, | |
"hiraizumi.iwate.jp": !0, | |
"hirono.iwate.jp": !0, | |
"ichinohe.iwate.jp": !0, | |
"ichinoseki.iwate.jp": !0, | |
"iwaizumi.iwate.jp": !0, | |
"iwate.iwate.jp": !0, | |
"joboji.iwate.jp": !0, | |
"kamaishi.iwate.jp": !0, | |
"kanegasaki.iwate.jp": !0, | |
"karumai.iwate.jp": !0, | |
"kawai.iwate.jp": !0, | |
"kitakami.iwate.jp": !0, | |
"kuji.iwate.jp": !0, | |
"kunohe.iwate.jp": !0, | |
"kuzumaki.iwate.jp": !0, | |
"miyako.iwate.jp": !0, | |
"mizusawa.iwate.jp": !0, | |
"morioka.iwate.jp": !0, | |
"ninohe.iwate.jp": !0, | |
"noda.iwate.jp": !0, | |
"ofunato.iwate.jp": !0, | |
"oshu.iwate.jp": !0, | |
"otsuchi.iwate.jp": !0, | |
"rikuzentakata.iwate.jp": !0, | |
"shiwa.iwate.jp": !0, | |
"shizukuishi.iwate.jp": !0, | |
"sumita.iwate.jp": !0, | |
"tanohata.iwate.jp": !0, | |
"tono.iwate.jp": !0, | |
"yahaba.iwate.jp": !0, | |
"yamada.iwate.jp": !0, | |
"ayagawa.kagawa.jp": !0, | |
"higashikagawa.kagawa.jp": !0, | |
"kanonji.kagawa.jp": !0, | |
"kotohira.kagawa.jp": !0, | |
"manno.kagawa.jp": !0, | |
"marugame.kagawa.jp": !0, | |
"mitoyo.kagawa.jp": !0, | |
"naoshima.kagawa.jp": !0, | |
"sanuki.kagawa.jp": !0, | |
"tadotsu.kagawa.jp": !0, | |
"takamatsu.kagawa.jp": !0, | |
"tonosho.kagawa.jp": !0, | |
"uchinomi.kagawa.jp": !0, | |
"utazu.kagawa.jp": !0, | |
"zentsuji.kagawa.jp": !0, | |
"akune.kagoshima.jp": !0, | |
"amami.kagoshima.jp": !0, | |
"hioki.kagoshima.jp": !0, | |
"isa.kagoshima.jp": !0, | |
"isen.kagoshima.jp": !0, | |
"izumi.kagoshima.jp": !0, | |
"kagoshima.kagoshima.jp": !0, | |
"kanoya.kagoshima.jp": !0, | |
"kawanabe.kagoshima.jp": !0, | |
"kinko.kagoshima.jp": !0, | |
"kouyama.kagoshima.jp": !0, | |
"makurazaki.kagoshima.jp": !0, | |
"matsumoto.kagoshima.jp": !0, | |
"minamitane.kagoshima.jp": !0, | |
"nakatane.kagoshima.jp": !0, | |
"nishinoomote.kagoshima.jp": !0, | |
"satsumasendai.kagoshima.jp": !0, | |
"soo.kagoshima.jp": !0, | |
"tarumizu.kagoshima.jp": !0, | |
"yusui.kagoshima.jp": !0, | |
"aikawa.kanagawa.jp": !0, | |
"atsugi.kanagawa.jp": !0, | |
"ayase.kanagawa.jp": !0, | |
"chigasaki.kanagawa.jp": !0, | |
"ebina.kanagawa.jp": !0, | |
"fujisawa.kanagawa.jp": !0, | |
"hadano.kanagawa.jp": !0, | |
"hakone.kanagawa.jp": !0, | |
"hiratsuka.kanagawa.jp": !0, | |
"isehara.kanagawa.jp": !0, | |
"kaisei.kanagawa.jp": !0, | |
"kamakura.kanagawa.jp": !0, | |
"kiyokawa.kanagawa.jp": !0, | |
"matsuda.kanagawa.jp": !0, | |
"minamiashigara.kanagawa.jp": !0, | |
"miura.kanagawa.jp": !0, | |
"nakai.kanagawa.jp": !0, | |
"ninomiya.kanagawa.jp": !0, | |
"odawara.kanagawa.jp": !0, | |
"oi.kanagawa.jp": !0, | |
"oiso.kanagawa.jp": !0, | |
"sagamihara.kanagawa.jp": !0, | |
"samukawa.kanagawa.jp": !0, | |
"tsukui.kanagawa.jp": !0, | |
"yamakita.kanagawa.jp": !0, | |
"yamato.kanagawa.jp": !0, | |
"yokosuka.kanagawa.jp": !0, | |
"yugawara.kanagawa.jp": !0, | |
"zama.kanagawa.jp": !0, | |
"zushi.kanagawa.jp": !0, | |
"aki.kochi.jp": !0, | |
"geisei.kochi.jp": !0, | |
"hidaka.kochi.jp": !0, | |
"higashitsuno.kochi.jp": !0, | |
"ino.kochi.jp": !0, | |
"kagami.kochi.jp": !0, | |
"kami.kochi.jp": !0, | |
"kitagawa.kochi.jp": !0, | |
"kochi.kochi.jp": !0, | |
"mihara.kochi.jp": !0, | |
"motoyama.kochi.jp": !0, | |
"muroto.kochi.jp": !0, | |
"nahari.kochi.jp": !0, | |
"nakamura.kochi.jp": !0, | |
"nankoku.kochi.jp": !0, | |
"nishitosa.kochi.jp": !0, | |
"niyodogawa.kochi.jp": !0, | |
"ochi.kochi.jp": !0, | |
"okawa.kochi.jp": !0, | |
"otoyo.kochi.jp": !0, | |
"otsuki.kochi.jp": !0, | |
"sakawa.kochi.jp": !0, | |
"sukumo.kochi.jp": !0, | |
"susaki.kochi.jp": !0, | |
"tosa.kochi.jp": !0, | |
"tosashimizu.kochi.jp": !0, | |
"toyo.kochi.jp": !0, | |
"tsuno.kochi.jp": !0, | |
"umaji.kochi.jp": !0, | |
"yasuda.kochi.jp": !0, | |
"yusuhara.kochi.jp": !0, | |
"amakusa.kumamoto.jp": !0, | |
"arao.kumamoto.jp": !0, | |
"aso.kumamoto.jp": !0, | |
"choyo.kumamoto.jp": !0, | |
"gyokuto.kumamoto.jp": !0, | |
"hitoyoshi.kumamoto.jp": !0, | |
"kamiamakusa.kumamoto.jp": !0, | |
"kashima.kumamoto.jp": !0, | |
"kikuchi.kumamoto.jp": !0, | |
"kosa.kumamoto.jp": !0, | |
"kumamoto.kumamoto.jp": !0, | |
"mashiki.kumamoto.jp": !0, | |
"mifune.kumamoto.jp": !0, | |
"minamata.kumamoto.jp": !0, | |
"minamioguni.kumamoto.jp": !0, | |
"nagasu.kumamoto.jp": !0, | |
"nishihara.kumamoto.jp": !0, | |
"oguni.kumamoto.jp": !0, | |
"ozu.kumamoto.jp": !0, | |
"sumoto.kumamoto.jp": !0, | |
"takamori.kumamoto.jp": !0, | |
"uki.kumamoto.jp": !0, | |
"uto.kumamoto.jp": !0, | |
"yamaga.kumamoto.jp": !0, | |
"yamato.kumamoto.jp": !0, | |
"yatsushiro.kumamoto.jp": !0, | |
"ayabe.kyoto.jp": !0, | |
"fukuchiyama.kyoto.jp": !0, | |
"higashiyama.kyoto.jp": !0, | |
"ide.kyoto.jp": !0, | |
"ine.kyoto.jp": !0, | |
"joyo.kyoto.jp": !0, | |
"kameoka.kyoto.jp": !0, | |
"kamo.kyoto.jp": !0, | |
"kita.kyoto.jp": !0, | |
"kizu.kyoto.jp": !0, | |
"kumiyama.kyoto.jp": !0, | |
"kyotamba.kyoto.jp": !0, | |
"kyotanabe.kyoto.jp": !0, | |
"kyotango.kyoto.jp": !0, | |
"maizuru.kyoto.jp": !0, | |
"minami.kyoto.jp": !0, | |
"minamiyamashiro.kyoto.jp": !0, | |
"miyazu.kyoto.jp": !0, | |
"muko.kyoto.jp": !0, | |
"nagaokakyo.kyoto.jp": !0, | |
"nakagyo.kyoto.jp": !0, | |
"nantan.kyoto.jp": !0, | |
"oyamazaki.kyoto.jp": !0, | |
"sakyo.kyoto.jp": !0, | |
"seika.kyoto.jp": !0, | |
"tanabe.kyoto.jp": !0, | |
"uji.kyoto.jp": !0, | |
"ujitawara.kyoto.jp": !0, | |
"wazuka.kyoto.jp": !0, | |
"yamashina.kyoto.jp": !0, | |
"yawata.kyoto.jp": !0, | |
"asahi.mie.jp": !0, | |
"inabe.mie.jp": !0, | |
"ise.mie.jp": !0, | |
"kameyama.mie.jp": !0, | |
"kawagoe.mie.jp": !0, | |
"kiho.mie.jp": !0, | |
"kisosaki.mie.jp": !0, | |
"kiwa.mie.jp": !0, | |
"komono.mie.jp": !0, | |
"kumano.mie.jp": !0, | |
"kuwana.mie.jp": !0, | |
"matsusaka.mie.jp": !0, | |
"meiwa.mie.jp": !0, | |
"mihama.mie.jp": !0, | |
"minamiise.mie.jp": !0, | |
"misugi.mie.jp": !0, | |
"miyama.mie.jp": !0, | |
"nabari.mie.jp": !0, | |
"shima.mie.jp": !0, | |
"suzuka.mie.jp": !0, | |
"tado.mie.jp": !0, | |
"taiki.mie.jp": !0, | |
"taki.mie.jp": !0, | |
"tamaki.mie.jp": !0, | |
"toba.mie.jp": !0, | |
"tsu.mie.jp": !0, | |
"udono.mie.jp": !0, | |
"ureshino.mie.jp": !0, | |
"watarai.mie.jp": !0, | |
"yokkaichi.mie.jp": !0, | |
"furukawa.miyagi.jp": !0, | |
"higashimatsushima.miyagi.jp": !0, | |
"ishinomaki.miyagi.jp": !0, | |
"iwanuma.miyagi.jp": !0, | |
"kakuda.miyagi.jp": !0, | |
"kami.miyagi.jp": !0, | |
"kawasaki.miyagi.jp": !0, | |
"kesennuma.miyagi.jp": !0, | |
"marumori.miyagi.jp": !0, | |
"matsushima.miyagi.jp": !0, | |
"minamisanriku.miyagi.jp": !0, | |
"misato.miyagi.jp": !0, | |
"murata.miyagi.jp": !0, | |
"natori.miyagi.jp": !0, | |
"ogawara.miyagi.jp": !0, | |
"ohira.miyagi.jp": !0, | |
"onagawa.miyagi.jp": !0, | |
"osaki.miyagi.jp": !0, | |
"rifu.miyagi.jp": !0, | |
"semine.miyagi.jp": !0, | |
"shibata.miyagi.jp": !0, | |
"shichikashuku.miyagi.jp": !0, | |
"shikama.miyagi.jp": !0, | |
"shiogama.miyagi.jp": !0, | |
"shiroishi.miyagi.jp": !0, | |
"tagajo.miyagi.jp": !0, | |
"taiwa.miyagi.jp": !0, | |
"tome.miyagi.jp": !0, | |
"tomiya.miyagi.jp": !0, | |
"wakuya.miyagi.jp": !0, | |
"watari.miyagi.jp": !0, | |
"yamamoto.miyagi.jp": !0, | |
"zao.miyagi.jp": !0, | |
"aya.miyazaki.jp": !0, | |
"ebino.miyazaki.jp": !0, | |
"gokase.miyazaki.jp": !0, | |
"hyuga.miyazaki.jp": !0, | |
"kadogawa.miyazaki.jp": !0, | |
"kawaminami.miyazaki.jp": !0, | |
"kijo.miyazaki.jp": !0, | |
"kitagawa.miyazaki.jp": !0, | |
"kitakata.miyazaki.jp": !0, | |
"kitaura.miyazaki.jp": !0, | |
"kobayashi.miyazaki.jp": !0, | |
"kunitomi.miyazaki.jp": !0, | |
"kushima.miyazaki.jp": !0, | |
"mimata.miyazaki.jp": !0, | |
"miyakonojo.miyazaki.jp": !0, | |
"miyazaki.miyazaki.jp": !0, | |
"morotsuka.miyazaki.jp": !0, | |
"nichinan.miyazaki.jp": !0, | |
"nishimera.miyazaki.jp": !0, | |
"nobeoka.miyazaki.jp": !0, | |
"saito.miyazaki.jp": !0, | |
"shiiba.miyazaki.jp": !0, | |
"shintomi.miyazaki.jp": !0, | |
"takaharu.miyazaki.jp": !0, | |
"takanabe.miyazaki.jp": !0, | |
"takazaki.miyazaki.jp": !0, | |
"tsuno.miyazaki.jp": !0, | |
"achi.nagano.jp": !0, | |
"agematsu.nagano.jp": !0, | |
"anan.nagano.jp": !0, | |
"aoki.nagano.jp": !0, | |
"asahi.nagano.jp": !0, | |
"azumino.nagano.jp": !0, | |
"chikuhoku.nagano.jp": !0, | |
"chikuma.nagano.jp": !0, | |
"chino.nagano.jp": !0, | |
"fujimi.nagano.jp": !0, | |
"hakuba.nagano.jp": !0, | |
"hara.nagano.jp": !0, | |
"hiraya.nagano.jp": !0, | |
"iida.nagano.jp": !0, | |
"iijima.nagano.jp": !0, | |
"iiyama.nagano.jp": !0, | |
"iizuna.nagano.jp": !0, | |
"ikeda.nagano.jp": !0, | |
"ikusaka.nagano.jp": !0, | |
"ina.nagano.jp": !0, | |
"karuizawa.nagano.jp": !0, | |
"kawakami.nagano.jp": !0, | |
"kiso.nagano.jp": !0, | |
"kisofukushima.nagano.jp": !0, | |
"kitaaiki.nagano.jp": !0, | |
"komagane.nagano.jp": !0, | |
"komoro.nagano.jp": !0, | |
"matsukawa.nagano.jp": !0, | |
"matsumoto.nagano.jp": !0, | |
"miasa.nagano.jp": !0, | |
"minamiaiki.nagano.jp": !0, | |
"minamimaki.nagano.jp": !0, | |
"minamiminowa.nagano.jp": !0, | |
"minowa.nagano.jp": !0, | |
"miyada.nagano.jp": !0, | |
"miyota.nagano.jp": !0, | |
"mochizuki.nagano.jp": !0, | |
"nagano.nagano.jp": !0, | |
"nagawa.nagano.jp": !0, | |
"nagiso.nagano.jp": !0, | |
"nakagawa.nagano.jp": !0, | |
"nakano.nagano.jp": !0, | |
"nozawaonsen.nagano.jp": !0, | |
"obuse.nagano.jp": !0, | |
"ogawa.nagano.jp": !0, | |
"okaya.nagano.jp": !0, | |
"omachi.nagano.jp": !0, | |
"omi.nagano.jp": !0, | |
"ookuwa.nagano.jp": !0, | |
"ooshika.nagano.jp": !0, | |
"otaki.nagano.jp": !0, | |
"otari.nagano.jp": !0, | |
"sakae.nagano.jp": !0, | |
"sakaki.nagano.jp": !0, | |
"saku.nagano.jp": !0, | |
"sakuho.nagano.jp": !0, | |
"shimosuwa.nagano.jp": !0, | |
"shinanomachi.nagano.jp": !0, | |
"shiojiri.nagano.jp": !0, | |
"suwa.nagano.jp": !0, | |
"suzaka.nagano.jp": !0, | |
"takagi.nagano.jp": !0, | |
"takamori.nagano.jp": !0, | |
"takayama.nagano.jp": !0, | |
"tateshina.nagano.jp": !0, | |
"tatsuno.nagano.jp": !0, | |
"togakushi.nagano.jp": !0, | |
"togura.nagano.jp": !0, | |
"tomi.nagano.jp": !0, | |
"ueda.nagano.jp": !0, | |
"wada.nagano.jp": !0, | |
"yamagata.nagano.jp": !0, | |
"yamanouchi.nagano.jp": !0, | |
"yasaka.nagano.jp": !0, | |
"yasuoka.nagano.jp": !0, | |
"chijiwa.nagasaki.jp": !0, | |
"futsu.nagasaki.jp": !0, | |
"goto.nagasaki.jp": !0, | |
"hasami.nagasaki.jp": !0, | |
"hirado.nagasaki.jp": !0, | |
"iki.nagasaki.jp": !0, | |
"isahaya.nagasaki.jp": !0, | |
"kawatana.nagasaki.jp": !0, | |
"kuchinotsu.nagasaki.jp": !0, | |
"matsuura.nagasaki.jp": !0, | |
"nagasaki.nagasaki.jp": !0, | |
"obama.nagasaki.jp": !0, | |
"omura.nagasaki.jp": !0, | |
"oseto.nagasaki.jp": !0, | |
"saikai.nagasaki.jp": !0, | |
"sasebo.nagasaki.jp": !0, | |
"seihi.nagasaki.jp": !0, | |
"shimabara.nagasaki.jp": !0, | |
"shinkamigoto.nagasaki.jp": !0, | |
"togitsu.nagasaki.jp": !0, | |
"tsushima.nagasaki.jp": !0, | |
"unzen.nagasaki.jp": !0, | |
"ando.nara.jp": !0, | |
"gose.nara.jp": !0, | |
"heguri.nara.jp": !0, | |
"higashiyoshino.nara.jp": !0, | |
"ikaruga.nara.jp": !0, | |
"ikoma.nara.jp": !0, | |
"kamikitayama.nara.jp": !0, | |
"kanmaki.nara.jp": !0, | |
"kashiba.nara.jp": !0, | |
"kashihara.nara.jp": !0, | |
"katsuragi.nara.jp": !0, | |
"kawai.nara.jp": !0, | |
"kawakami.nara.jp": !0, | |
"kawanishi.nara.jp": !0, | |
"koryo.nara.jp": !0, | |
"kurotaki.nara.jp": !0, | |
"mitsue.nara.jp": !0, | |
"miyake.nara.jp": !0, | |
"nara.nara.jp": !0, | |
"nosegawa.nara.jp": !0, | |
"oji.nara.jp": !0, | |
"ouda.nara.jp": !0, | |
"oyodo.nara.jp": !0, | |
"sakurai.nara.jp": !0, | |
"sango.nara.jp": !0, | |
"shimoichi.nara.jp": !0, | |
"shimokitayama.nara.jp": !0, | |
"shinjo.nara.jp": !0, | |
"soni.nara.jp": !0, | |
"takatori.nara.jp": !0, | |
"tawaramoto.nara.jp": !0, | |
"tenkawa.nara.jp": !0, | |
"tenri.nara.jp": !0, | |
"uda.nara.jp": !0, | |
"yamatokoriyama.nara.jp": !0, | |
"yamatotakada.nara.jp": !0, | |
"yamazoe.nara.jp": !0, | |
"yoshino.nara.jp": !0, | |
"aga.niigata.jp": !0, | |
"agano.niigata.jp": !0, | |
"gosen.niigata.jp": !0, | |
"itoigawa.niigata.jp": !0, | |
"izumozaki.niigata.jp": !0, | |
"joetsu.niigata.jp": !0, | |
"kamo.niigata.jp": !0, | |
"kariwa.niigata.jp": !0, | |
"kashiwazaki.niigata.jp": !0, | |
"minamiuonuma.niigata.jp": !0, | |
"mitsuke.niigata.jp": !0, | |
"muika.niigata.jp": !0, | |
"murakami.niigata.jp": !0, | |
"myoko.niigata.jp": !0, | |
"nagaoka.niigata.jp": !0, | |
"niigata.niigata.jp": !0, | |
"ojiya.niigata.jp": !0, | |
"omi.niigata.jp": !0, | |
"sado.niigata.jp": !0, | |
"sanjo.niigata.jp": !0, | |
"seiro.niigata.jp": !0, | |
"seirou.niigata.jp": !0, | |
"sekikawa.niigata.jp": !0, | |
"shibata.niigata.jp": !0, | |
"tagami.niigata.jp": !0, | |
"tainai.niigata.jp": !0, | |
"tochio.niigata.jp": !0, | |
"tokamachi.niigata.jp": !0, | |
"tsubame.niigata.jp": !0, | |
"tsunan.niigata.jp": !0, | |
"uonuma.niigata.jp": !0, | |
"yahiko.niigata.jp": !0, | |
"yoita.niigata.jp": !0, | |
"yuzawa.niigata.jp": !0, | |
"beppu.oita.jp": !0, | |
"bungoono.oita.jp": !0, | |
"bungotakada.oita.jp": !0, | |
"hasama.oita.jp": !0, | |
"hiji.oita.jp": !0, | |
"himeshima.oita.jp": !0, | |
"hita.oita.jp": !0, | |
"kamitsue.oita.jp": !0, | |
"kokonoe.oita.jp": !0, | |
"kuju.oita.jp": !0, | |
"kunisaki.oita.jp": !0, | |
"kusu.oita.jp": !0, | |
"oita.oita.jp": !0, | |
"saiki.oita.jp": !0, | |
"taketa.oita.jp": !0, | |
"tsukumi.oita.jp": !0, | |
"usa.oita.jp": !0, | |
"usuki.oita.jp": !0, | |
"yufu.oita.jp": !0, | |
"akaiwa.okayama.jp": !0, | |
"asakuchi.okayama.jp": !0, | |
"bizen.okayama.jp": !0, | |
"hayashima.okayama.jp": !0, | |
"ibara.okayama.jp": !0, | |
"kagamino.okayama.jp": !0, | |
"kasaoka.okayama.jp": !0, | |
"kibichuo.okayama.jp": !0, | |
"kumenan.okayama.jp": !0, | |
"kurashiki.okayama.jp": !0, | |
"maniwa.okayama.jp": !0, | |
"misaki.okayama.jp": !0, | |
"nagi.okayama.jp": !0, | |
"niimi.okayama.jp": !0, | |
"nishiawakura.okayama.jp": !0, | |
"okayama.okayama.jp": !0, | |
"satosho.okayama.jp": !0, | |
"setouchi.okayama.jp": !0, | |
"shinjo.okayama.jp": !0, | |
"shoo.okayama.jp": !0, | |
"soja.okayama.jp": !0, | |
"takahashi.okayama.jp": !0, | |
"tamano.okayama.jp": !0, | |
"tsuyama.okayama.jp": !0, | |
"wake.okayama.jp": !0, | |
"yakage.okayama.jp": !0, | |
"aguni.okinawa.jp": !0, | |
"ginowan.okinawa.jp": !0, | |
"ginoza.okinawa.jp": !0, | |
"gushikami.okinawa.jp": !0, | |
"haebaru.okinawa.jp": !0, | |
"higashi.okinawa.jp": !0, | |
"hirara.okinawa.jp": !0, | |
"iheya.okinawa.jp": !0, | |
"ishigaki.okinawa.jp": !0, | |
"ishikawa.okinawa.jp": !0, | |
"itoman.okinawa.jp": !0, | |
"izena.okinawa.jp": !0, | |
"kadena.okinawa.jp": !0, | |
"kin.okinawa.jp": !0, | |
"kitadaito.okinawa.jp": !0, | |
"kitanakagusuku.okinawa.jp": !0, | |
"kumejima.okinawa.jp": !0, | |
"kunigami.okinawa.jp": !0, | |
"minamidaito.okinawa.jp": !0, | |
"motobu.okinawa.jp": !0, | |
"nago.okinawa.jp": !0, | |
"naha.okinawa.jp": !0, | |
"nakagusuku.okinawa.jp": !0, | |
"nakijin.okinawa.jp": !0, | |
"nanjo.okinawa.jp": !0, | |
"nishihara.okinawa.jp": !0, | |
"ogimi.okinawa.jp": !0, | |
"okinawa.okinawa.jp": !0, | |
"onna.okinawa.jp": !0, | |
"shimoji.okinawa.jp": !0, | |
"taketomi.okinawa.jp": !0, | |
"tarama.okinawa.jp": !0, | |
"tokashiki.okinawa.jp": !0, | |
"tomigusuku.okinawa.jp": !0, | |
"tonaki.okinawa.jp": !0, | |
"urasoe.okinawa.jp": !0, | |
"uruma.okinawa.jp": !0, | |
"yaese.okinawa.jp": !0, | |
"yomitan.okinawa.jp": !0, | |
"yonabaru.okinawa.jp": !0, | |
"yonaguni.okinawa.jp": !0, | |
"zamami.okinawa.jp": !0, | |
"abeno.osaka.jp": !0, | |
"chihayaakasaka.osaka.jp": !0, | |
"chuo.osaka.jp": !0, | |
"daito.osaka.jp": !0, | |
"fujiidera.osaka.jp": !0, | |
"habikino.osaka.jp": !0, | |
"hannan.osaka.jp": !0, | |
"higashiosaka.osaka.jp": !0, | |
"higashisumiyoshi.osaka.jp": !0, | |
"higashiyodogawa.osaka.jp": !0, | |
"hirakata.osaka.jp": !0, | |
"ibaraki.osaka.jp": !0, | |
"ikeda.osaka.jp": !0, | |
"izumi.osaka.jp": !0, | |
"izumiotsu.osaka.jp": !0, | |
"izumisano.osaka.jp": !0, | |
"kadoma.osaka.jp": !0, | |
"kaizuka.osaka.jp": !0, | |
"kanan.osaka.jp": !0, | |
"kashiwara.osaka.jp": !0, | |
"katano.osaka.jp": !0, | |
"kawachinagano.osaka.jp": !0, | |
"kishiwada.osaka.jp": !0, | |
"kita.osaka.jp": !0, | |
"kumatori.osaka.jp": !0, | |
"matsubara.osaka.jp": !0, | |
"minato.osaka.jp": !0, | |
"minoh.osaka.jp": !0, | |
"misaki.osaka.jp": !0, | |
"moriguchi.osaka.jp": !0, | |
"neyagawa.osaka.jp": !0, | |
"nishi.osaka.jp": !0, | |
"nose.osaka.jp": !0, | |
"osakasayama.osaka.jp": !0, | |
"sakai.osaka.jp": !0, | |
"sayama.osaka.jp": !0, | |
"sennan.osaka.jp": !0, | |
"settsu.osaka.jp": !0, | |
"shijonawate.osaka.jp": !0, | |
"shimamoto.osaka.jp": !0, | |
"suita.osaka.jp": !0, | |
"tadaoka.osaka.jp": !0, | |
"taishi.osaka.jp": !0, | |
"tajiri.osaka.jp": !0, | |
"takaishi.osaka.jp": !0, | |
"takatsuki.osaka.jp": !0, | |
"tondabayashi.osaka.jp": !0, | |
"toyonaka.osaka.jp": !0, | |
"toyono.osaka.jp": !0, | |
"yao.osaka.jp": !0, | |
"ariake.saga.jp": !0, | |
"arita.saga.jp": !0, | |
"fukudomi.saga.jp": !0, | |
"genkai.saga.jp": !0, | |
"hamatama.saga.jp": !0, | |
"hizen.saga.jp": !0, | |
"imari.saga.jp": !0, | |
"kamimine.saga.jp": !0, | |
"kanzaki.saga.jp": !0, | |
"karatsu.saga.jp": !0, | |
"kashima.saga.jp": !0, | |
"kitagata.saga.jp": !0, | |
"kitahata.saga.jp": !0, | |
"kiyama.saga.jp": !0, | |
"kouhoku.saga.jp": !0, | |
"kyuragi.saga.jp": !0, | |
"nishiarita.saga.jp": !0, | |
"ogi.saga.jp": !0, | |
"omachi.saga.jp": !0, | |
"ouchi.saga.jp": !0, | |
"saga.saga.jp": !0, | |
"shiroishi.saga.jp": !0, | |
"taku.saga.jp": !0, | |
"tara.saga.jp": !0, | |
"tosu.saga.jp": !0, | |
"yoshinogari.saga.jp": !0, | |
"arakawa.saitama.jp": !0, | |
"asaka.saitama.jp": !0, | |
"chichibu.saitama.jp": !0, | |
"fujimi.saitama.jp": !0, | |
"fujimino.saitama.jp": !0, | |
"fukaya.saitama.jp": !0, | |
"hanno.saitama.jp": !0, | |
"hanyu.saitama.jp": !0, | |
"hasuda.saitama.jp": !0, | |
"hatogaya.saitama.jp": !0, | |
"hatoyama.saitama.jp": !0, | |
"hidaka.saitama.jp": !0, | |
"higashichichibu.saitama.jp": !0, | |
"higashimatsuyama.saitama.jp": !0, | |
"honjo.saitama.jp": !0, | |
"ina.saitama.jp": !0, | |
"iruma.saitama.jp": !0, | |
"iwatsuki.saitama.jp": !0, | |
"kamiizumi.saitama.jp": !0, | |
"kamikawa.saitama.jp": !0, | |
"kamisato.saitama.jp": !0, | |
"kasukabe.saitama.jp": !0, | |
"kawagoe.saitama.jp": !0, | |
"kawaguchi.saitama.jp": !0, | |
"kawajima.saitama.jp": !0, | |
"kazo.saitama.jp": !0, | |
"kitamoto.saitama.jp": !0, | |
"koshigaya.saitama.jp": !0, | |
"kounosu.saitama.jp": !0, | |
"kuki.saitama.jp": !0, | |
"kumagaya.saitama.jp": !0, | |
"matsubushi.saitama.jp": !0, | |
"minano.saitama.jp": !0, | |
"misato.saitama.jp": !0, | |
"miyashiro.saitama.jp": !0, | |
"miyoshi.saitama.jp": !0, | |
"moroyama.saitama.jp": !0, | |
"nagatoro.saitama.jp": !0, | |
"namegawa.saitama.jp": !0, | |
"niiza.saitama.jp": !0, | |
"ogano.saitama.jp": !0, | |
"ogawa.saitama.jp": !0, | |
"ogose.saitama.jp": !0, | |
"okegawa.saitama.jp": !0, | |
"omiya.saitama.jp": !0, | |
"otaki.saitama.jp": !0, | |
"ranzan.saitama.jp": !0, | |
"ryokami.saitama.jp": !0, | |
"saitama.saitama.jp": !0, | |
"sakado.saitama.jp": !0, | |
"satte.saitama.jp": !0, | |
"sayama.saitama.jp": !0, | |
"shiki.saitama.jp": !0, | |
"shiraoka.saitama.jp": !0, | |
"soka.saitama.jp": !0, | |
"sugito.saitama.jp": !0, | |
"toda.saitama.jp": !0, | |
"tokigawa.saitama.jp": !0, | |
"tokorozawa.saitama.jp": !0, | |
"tsurugashima.saitama.jp": !0, | |
"urawa.saitama.jp": !0, | |
"warabi.saitama.jp": !0, | |
"yashio.saitama.jp": !0, | |
"yokoze.saitama.jp": !0, | |
"yono.saitama.jp": !0, | |
"yorii.saitama.jp": !0, | |
"yoshida.saitama.jp": !0, | |
"yoshikawa.saitama.jp": !0, | |
"yoshimi.saitama.jp": !0, | |
"aisho.shiga.jp": !0, | |
"gamo.shiga.jp": !0, | |
"higashiomi.shiga.jp": !0, | |
"hikone.shiga.jp": !0, | |
"koka.shiga.jp": !0, | |
"konan.shiga.jp": !0, | |
"kosei.shiga.jp": !0, | |
"koto.shiga.jp": !0, | |
"kusatsu.shiga.jp": !0, | |
"maibara.shiga.jp": !0, | |
"moriyama.shiga.jp": !0, | |
"nagahama.shiga.jp": !0, | |
"nishiazai.shiga.jp": !0, | |
"notogawa.shiga.jp": !0, | |
"omihachiman.shiga.jp": !0, | |
"otsu.shiga.jp": !0, | |
"ritto.shiga.jp": !0, | |
"ryuoh.shiga.jp": !0, | |
"takashima.shiga.jp": !0, | |
"takatsuki.shiga.jp": !0, | |
"torahime.shiga.jp": !0, | |
"toyosato.shiga.jp": !0, | |
"yasu.shiga.jp": !0, | |
"akagi.shimane.jp": !0, | |
"ama.shimane.jp": !0, | |
"gotsu.shimane.jp": !0, | |
"hamada.shimane.jp": !0, | |
"higashiizumo.shimane.jp": !0, | |
"hikawa.shimane.jp": !0, | |
"hikimi.shimane.jp": !0, | |
"izumo.shimane.jp": !0, | |
"kakinoki.shimane.jp": !0, | |
"masuda.shimane.jp": !0, | |
"matsue.shimane.jp": !0, | |
"misato.shimane.jp": !0, | |
"nishinoshima.shimane.jp": !0, | |
"ohda.shimane.jp": !0, | |
"okinoshima.shimane.jp": !0, | |
"okuizumo.shimane.jp": !0, | |
"shimane.shimane.jp": !0, | |
"tamayu.shimane.jp": !0, | |
"tsuwano.shimane.jp": !0, | |
"unnan.shimane.jp": !0, | |
"yakumo.shimane.jp": !0, | |
"yasugi.shimane.jp": !0, | |
"yatsuka.shimane.jp": !0, | |
"arai.shizuoka.jp": !0, | |
"atami.shizuoka.jp": !0, | |
"fuji.shizuoka.jp": !0, | |
"fujieda.shizuoka.jp": !0, | |
"fujikawa.shizuoka.jp": !0, | |
"fujinomiya.shizuoka.jp": !0, | |
"fukuroi.shizuoka.jp": !0, | |
"gotemba.shizuoka.jp": !0, | |
"haibara.shizuoka.jp": !0, | |
"hamamatsu.shizuoka.jp": !0, | |
"higashiizu.shizuoka.jp": !0, | |
"ito.shizuoka.jp": !0, | |
"iwata.shizuoka.jp": !0, | |
"izu.shizuoka.jp": !0, | |
"izunokuni.shizuoka.jp": !0, | |
"kakegawa.shizuoka.jp": !0, | |
"kannami.shizuoka.jp": !0, | |
"kawanehon.shizuoka.jp": !0, | |
"kawazu.shizuoka.jp": !0, | |
"kikugawa.shizuoka.jp": !0, | |
"kosai.shizuoka.jp": !0, | |
"makinohara.shizuoka.jp": !0, | |
"matsuzaki.shizuoka.jp": !0, | |
"minamiizu.shizuoka.jp": !0, | |
"mishima.shizuoka.jp": !0, | |
"morimachi.shizuoka.jp": !0, | |
"nishiizu.shizuoka.jp": !0, | |
"numazu.shizuoka.jp": !0, | |
"omaezaki.shizuoka.jp": !0, | |
"shimada.shizuoka.jp": !0, | |
"shimizu.shizuoka.jp": !0, | |
"shimoda.shizuoka.jp": !0, | |
"shizuoka.shizuoka.jp": !0, | |
"susono.shizuoka.jp": !0, | |
"yaizu.shizuoka.jp": !0, | |
"yoshida.shizuoka.jp": !0, | |
"ashikaga.tochigi.jp": !0, | |
"bato.tochigi.jp": !0, | |
"haga.tochigi.jp": !0, | |
"ichikai.tochigi.jp": !0, | |
"iwafune.tochigi.jp": !0, | |
"kaminokawa.tochigi.jp": !0, | |
"kanuma.tochigi.jp": !0, | |
"karasuyama.tochigi.jp": !0, | |
"kuroiso.tochigi.jp": !0, | |
"mashiko.tochigi.jp": !0, | |
"mibu.tochigi.jp": !0, | |
"moka.tochigi.jp": !0, | |
"motegi.tochigi.jp": !0, | |
"nasu.tochigi.jp": !0, | |
"nasushiobara.tochigi.jp": !0, | |
"nikko.tochigi.jp": !0, | |
"nishikata.tochigi.jp": !0, | |
"nogi.tochigi.jp": !0, | |
"ohira.tochigi.jp": !0, | |
"ohtawara.tochigi.jp": !0, | |
"oyama.tochigi.jp": !0, | |
"sakura.tochigi.jp": !0, | |
"sano.tochigi.jp": !0, | |
"shimotsuke.tochigi.jp": !0, | |
"shioya.tochigi.jp": !0, | |
"takanezawa.tochigi.jp": !0, | |
"tochigi.tochigi.jp": !0, | |
"tsuga.tochigi.jp": !0, | |
"ujiie.tochigi.jp": !0, | |
"utsunomiya.tochigi.jp": !0, | |
"yaita.tochigi.jp": !0, | |
"aizumi.tokushima.jp": !0, | |
"anan.tokushima.jp": !0, | |
"ichiba.tokushima.jp": !0, | |
"itano.tokushima.jp": !0, | |
"kainan.tokushima.jp": !0, | |
"komatsushima.tokushima.jp": !0, | |
"matsushige.tokushima.jp": !0, | |
"mima.tokushima.jp": !0, | |
"minami.tokushima.jp": !0, | |
"miyoshi.tokushima.jp": !0, | |
"mugi.tokushima.jp": !0, | |
"nakagawa.tokushima.jp": !0, | |
"naruto.tokushima.jp": !0, | |
"sanagochi.tokushima.jp": !0, | |
"shishikui.tokushima.jp": !0, | |
"tokushima.tokushima.jp": !0, | |
"wajiki.tokushima.jp": !0, | |
"adachi.tokyo.jp": !0, | |
"akiruno.tokyo.jp": !0, | |
"akishima.tokyo.jp": !0, | |
"aogashima.tokyo.jp": !0, | |
"arakawa.tokyo.jp": !0, | |
"bunkyo.tokyo.jp": !0, | |
"chiyoda.tokyo.jp": !0, | |
"chofu.tokyo.jp": !0, | |
"chuo.tokyo.jp": !0, | |
"edogawa.tokyo.jp": !0, | |
"fuchu.tokyo.jp": !0, | |
"fussa.tokyo.jp": !0, | |
"hachijo.tokyo.jp": !0, | |
"hachioji.tokyo.jp": !0, | |
"hamura.tokyo.jp": !0, | |
"higashikurume.tokyo.jp": !0, | |
"higashimurayama.tokyo.jp": !0, | |
"higashiyamato.tokyo.jp": !0, | |
"hino.tokyo.jp": !0, | |
"hinode.tokyo.jp": !0, | |
"hinohara.tokyo.jp": !0, | |
"inagi.tokyo.jp": !0, | |
"itabashi.tokyo.jp": !0, | |
"katsushika.tokyo.jp": !0, | |
"kita.tokyo.jp": !0, | |
"kiyose.tokyo.jp": !0, | |
"kodaira.tokyo.jp": !0, | |
"koganei.tokyo.jp": !0, | |
"kokubunji.tokyo.jp": !0, | |
"komae.tokyo.jp": !0, | |
"koto.tokyo.jp": !0, | |
"kouzushima.tokyo.jp": !0, | |
"kunitachi.tokyo.jp": !0, | |
"machida.tokyo.jp": !0, | |
"meguro.tokyo.jp": !0, | |
"minato.tokyo.jp": !0, | |
"mitaka.tokyo.jp": !0, | |
"mizuho.tokyo.jp": !0, | |
"musashimurayama.tokyo.jp": !0, | |
"musashino.tokyo.jp": !0, | |
"nakano.tokyo.jp": !0, | |
"nerima.tokyo.jp": !0, | |
"ogasawara.tokyo.jp": !0, | |
"okutama.tokyo.jp": !0, | |
"ome.tokyo.jp": !0, | |
"oshima.tokyo.jp": !0, | |
"ota.tokyo.jp": !0, | |
"setagaya.tokyo.jp": !0, | |
"shibuya.tokyo.jp": !0, | |
"shinagawa.tokyo.jp": !0, | |
"shinjuku.tokyo.jp": !0, | |
"suginami.tokyo.jp": !0, | |
"sumida.tokyo.jp": !0, | |
"tachikawa.tokyo.jp": !0, | |
"taito.tokyo.jp": !0, | |
"tama.tokyo.jp": !0, | |
"toshima.tokyo.jp": !0, | |
"chizu.tottori.jp": !0, | |
"hino.tottori.jp": !0, | |
"kawahara.tottori.jp": !0, | |
"koge.tottori.jp": !0, | |
"kotoura.tottori.jp": !0, | |
"misasa.tottori.jp": !0, | |
"nanbu.tottori.jp": !0, | |
"nichinan.tottori.jp": !0, | |
"sakaiminato.tottori.jp": !0, | |
"tottori.tottori.jp": !0, | |
"wakasa.tottori.jp": !0, | |
"yazu.tottori.jp": !0, | |
"yonago.tottori.jp": !0, | |
"asahi.toyama.jp": !0, | |
"fuchu.toyama.jp": !0, | |
"fukumitsu.toyama.jp": !0, | |
"funahashi.toyama.jp": !0, | |
"himi.toyama.jp": !0, | |
"imizu.toyama.jp": !0, | |
"inami.toyama.jp": !0, | |
"johana.toyama.jp": !0, | |
"kamiichi.toyama.jp": !0, | |
"kurobe.toyama.jp": !0, | |
"nakaniikawa.toyama.jp": !0, | |
"namerikawa.toyama.jp": !0, | |
"nanto.toyama.jp": !0, | |
"nyuzen.toyama.jp": !0, | |
"oyabe.toyama.jp": !0, | |
"taira.toyama.jp": !0, | |
"takaoka.toyama.jp": !0, | |
"tateyama.toyama.jp": !0, | |
"toga.toyama.jp": !0, | |
"tonami.toyama.jp": !0, | |
"toyama.toyama.jp": !0, | |
"unazuki.toyama.jp": !0, | |
"uozu.toyama.jp": !0, | |
"yamada.toyama.jp": !0, | |
"arida.wakayama.jp": !0, | |
"aridagawa.wakayama.jp": !0, | |
"gobo.wakayama.jp": !0, | |
"hashimoto.wakayama.jp": !0, | |
"hidaka.wakayama.jp": !0, | |
"hirogawa.wakayama.jp": !0, | |
"inami.wakayama.jp": !0, | |
"iwade.wakayama.jp": !0, | |
"kainan.wakayama.jp": !0, | |
"kamitonda.wakayama.jp": !0, | |
"katsuragi.wakayama.jp": !0, | |
"kimino.wakayama.jp": !0, | |
"kinokawa.wakayama.jp": !0, | |
"kitayama.wakayama.jp": !0, | |
"koya.wakayama.jp": !0, | |
"koza.wakayama.jp": !0, | |
"kozagawa.wakayama.jp": !0, | |
"kudoyama.wakayama.jp": !0, | |
"kushimoto.wakayama.jp": !0, | |
"mihama.wakayama.jp": !0, | |
"misato.wakayama.jp": !0, | |
"nachikatsuura.wakayama.jp": !0, | |
"shingu.wakayama.jp": !0, | |
"shirahama.wakayama.jp": !0, | |
"taiji.wakayama.jp": !0, | |
"tanabe.wakayama.jp": !0, | |
"wakayama.wakayama.jp": !0, | |
"yuasa.wakayama.jp": !0, | |
"yura.wakayama.jp": !0, | |
"asahi.yamagata.jp": !0, | |
"funagata.yamagata.jp": !0, | |
"higashine.yamagata.jp": !0, | |
"iide.yamagata.jp": !0, | |
"kahoku.yamagata.jp": !0, | |
"kaminoyama.yamagata.jp": !0, | |
"kaneyama.yamagata.jp": !0, | |
"kawanishi.yamagata.jp": !0, | |
"mamurogawa.yamagata.jp": !0, | |
"mikawa.yamagata.jp": !0, | |
"murayama.yamagata.jp": !0, | |
"nagai.yamagata.jp": !0, | |
"nakayama.yamagata.jp": !0, | |
"nanyo.yamagata.jp": !0, | |
"nishikawa.yamagata.jp": !0, | |
"obanazawa.yamagata.jp": !0, | |
"oe.yamagata.jp": !0, | |
"oguni.yamagata.jp": !0, | |
"ohkura.yamagata.jp": !0, | |
"oishida.yamagata.jp": !0, | |
"sagae.yamagata.jp": !0, | |
"sakata.yamagata.jp": !0, | |
"sakegawa.yamagata.jp": !0, | |
"shinjo.yamagata.jp": !0, | |
"shirataka.yamagata.jp": !0, | |
"shonai.yamagata.jp": !0, | |
"takahata.yamagata.jp": !0, | |
"tendo.yamagata.jp": !0, | |
"tozawa.yamagata.jp": !0, | |
"tsuruoka.yamagata.jp": !0, | |
"yamagata.yamagata.jp": !0, | |
"yamanobe.yamagata.jp": !0, | |
"yonezawa.yamagata.jp": !0, | |
"yuza.yamagata.jp": !0, | |
"abu.yamaguchi.jp": !0, | |
"hagi.yamaguchi.jp": !0, | |
"hikari.yamaguchi.jp": !0, | |
"hofu.yamaguchi.jp": !0, | |
"iwakuni.yamaguchi.jp": !0, | |
"kudamatsu.yamaguchi.jp": !0, | |
"mitou.yamaguchi.jp": !0, | |
"nagato.yamaguchi.jp": !0, | |
"oshima.yamaguchi.jp": !0, | |
"shimonoseki.yamaguchi.jp": !0, | |
"shunan.yamaguchi.jp": !0, | |
"tabuse.yamaguchi.jp": !0, | |
"tokuyama.yamaguchi.jp": !0, | |
"toyota.yamaguchi.jp": !0, | |
"ube.yamaguchi.jp": !0, | |
"yuu.yamaguchi.jp": !0, | |
"chuo.yamanashi.jp": !0, | |
"doshi.yamanashi.jp": !0, | |
"fuefuki.yamanashi.jp": !0, | |
"fujikawa.yamanashi.jp": !0, | |
"fujikawaguchiko.yamanashi.jp": !0, | |
"fujiyoshida.yamanashi.jp": !0, | |
"hayakawa.yamanashi.jp": !0, | |
"hokuto.yamanashi.jp": !0, | |
"ichikawamisato.yamanashi.jp": !0, | |
"kai.yamanashi.jp": !0, | |
"kofu.yamanashi.jp": !0, | |
"koshu.yamanashi.jp": !0, | |
"kosuge.yamanashi.jp": !0, | |
"minami-alps.yamanashi.jp": !0, | |
"minobu.yamanashi.jp": !0, | |
"nakamichi.yamanashi.jp": !0, | |
"nanbu.yamanashi.jp": !0, | |
"narusawa.yamanashi.jp": !0, | |
"nirasaki.yamanashi.jp": !0, | |
"nishikatsura.yamanashi.jp": !0, | |
"oshino.yamanashi.jp": !0, | |
"otsuki.yamanashi.jp": !0, | |
"showa.yamanashi.jp": !0, | |
"tabayama.yamanashi.jp": !0, | |
"tsuru.yamanashi.jp": !0, | |
"uenohara.yamanashi.jp": !0, | |
"yamanakako.yamanashi.jp": !0, | |
"yamanashi.yamanashi.jp": !0, | |
"*.ke": !0, | |
kg: !0, | |
"org.kg": !0, | |
"net.kg": !0, | |
"com.kg": !0, | |
"edu.kg": !0, | |
"gov.kg": !0, | |
"mil.kg": !0, | |
"*.kh": !0, | |
ki: !0, | |
"edu.ki": !0, | |
"biz.ki": !0, | |
"net.ki": !0, | |
"org.ki": !0, | |
"gov.ki": !0, | |
"info.ki": !0, | |
"com.ki": !0, | |
km: !0, | |
"org.km": !0, | |
"nom.km": !0, | |
"gov.km": !0, | |
"prd.km": !0, | |
"tm.km": !0, | |
"edu.km": !0, | |
"mil.km": !0, | |
"ass.km": !0, | |
"com.km": !0, | |
"coop.km": !0, | |
"asso.km": !0, | |
"presse.km": !0, | |
"medecin.km": !0, | |
"notaires.km": !0, | |
"pharmaciens.km": !0, | |
"veterinaire.km": !0, | |
"gouv.km": !0, | |
kn: !0, | |
"net.kn": !0, | |
"org.kn": !0, | |
"edu.kn": !0, | |
"gov.kn": !0, | |
kp: !0, | |
"com.kp": !0, | |
"edu.kp": !0, | |
"gov.kp": !0, | |
"org.kp": !0, | |
"rep.kp": !0, | |
"tra.kp": !0, | |
kr: !0, | |
"ac.kr": !0, | |
"co.kr": !0, | |
"es.kr": !0, | |
"go.kr": !0, | |
"hs.kr": !0, | |
"kg.kr": !0, | |
"mil.kr": !0, | |
"ms.kr": !0, | |
"ne.kr": !0, | |
"or.kr": !0, | |
"pe.kr": !0, | |
"re.kr": !0, | |
"sc.kr": !0, | |
"busan.kr": !0, | |
"chungbuk.kr": !0, | |
"chungnam.kr": !0, | |
"daegu.kr": !0, | |
"daejeon.kr": !0, | |
"gangwon.kr": !0, | |
"gwangju.kr": !0, | |
"gyeongbuk.kr": !0, | |
"gyeonggi.kr": !0, | |
"gyeongnam.kr": !0, | |
"incheon.kr": !0, | |
"jeju.kr": !0, | |
"jeonbuk.kr": !0, | |
"jeonnam.kr": !0, | |
"seoul.kr": !0, | |
"ulsan.kr": !0, | |
"*.kw": !0, | |
ky: !0, | |
"edu.ky": !0, | |
"gov.ky": !0, | |
"com.ky": !0, | |
"org.ky": !0, | |
"net.ky": !0, | |
kz: !0, | |
"org.kz": !0, | |
"edu.kz": !0, | |
"net.kz": !0, | |
"gov.kz": !0, | |
"mil.kz": !0, | |
"com.kz": !0, | |
la: !0, | |
"int.la": !0, | |
"net.la": !0, | |
"info.la": !0, | |
"edu.la": !0, | |
"gov.la": !0, | |
"per.la": !0, | |
"com.la": !0, | |
"org.la": !0, | |
lb: !0, | |
"com.lb": !0, | |
"edu.lb": !0, | |
"gov.lb": !0, | |
"net.lb": !0, | |
"org.lb": !0, | |
lc: !0, | |
"com.lc": !0, | |
"net.lc": !0, | |
"co.lc": !0, | |
"org.lc": !0, | |
"edu.lc": !0, | |
"gov.lc": !0, | |
li: !0, | |
lk: !0, | |
"gov.lk": !0, | |
"sch.lk": !0, | |
"net.lk": !0, | |
"int.lk": !0, | |
"com.lk": !0, | |
"org.lk": !0, | |
"edu.lk": !0, | |
"ngo.lk": !0, | |
"soc.lk": !0, | |
"web.lk": !0, | |
"ltd.lk": !0, | |
"assn.lk": !0, | |
"grp.lk": !0, | |
"hotel.lk": !0, | |
"ac.lk": !0, | |
lr: !0, | |
"com.lr": !0, | |
"edu.lr": !0, | |
"gov.lr": !0, | |
"org.lr": !0, | |
"net.lr": !0, | |
ls: !0, | |
"co.ls": !0, | |
"org.ls": !0, | |
lt: !0, | |
"gov.lt": !0, | |
lu: !0, | |
lv: !0, | |
"com.lv": !0, | |
"edu.lv": !0, | |
"gov.lv": !0, | |
"org.lv": !0, | |
"mil.lv": !0, | |
"id.lv": !0, | |
"net.lv": !0, | |
"asn.lv": !0, | |
"conf.lv": !0, | |
ly: !0, | |
"com.ly": !0, | |
"net.ly": !0, | |
"gov.ly": !0, | |
"plc.ly": !0, | |
"edu.ly": !0, | |
"sch.ly": !0, | |
"med.ly": !0, | |
"org.ly": !0, | |
"id.ly": !0, | |
ma: !0, | |
"co.ma": !0, | |
"net.ma": !0, | |
"gov.ma": !0, | |
"org.ma": !0, | |
"ac.ma": !0, | |
"press.ma": !0, | |
mc: !0, | |
"tm.mc": !0, | |
"asso.mc": !0, | |
md: !0, | |
me: !0, | |
"co.me": !0, | |
"net.me": !0, | |
"org.me": !0, | |
"edu.me": !0, | |
"ac.me": !0, | |
"gov.me": !0, | |
"its.me": !0, | |
"priv.me": !0, | |
mg: !0, | |
"org.mg": !0, | |
"nom.mg": !0, | |
"gov.mg": !0, | |
"prd.mg": !0, | |
"tm.mg": !0, | |
"edu.mg": !0, | |
"mil.mg": !0, | |
"com.mg": !0, | |
"co.mg": !0, | |
mh: !0, | |
mil: !0, | |
mk: !0, | |
"com.mk": !0, | |
"org.mk": !0, | |
"net.mk": !0, | |
"edu.mk": !0, | |
"gov.mk": !0, | |
"inf.mk": !0, | |
"name.mk": !0, | |
ml: !0, | |
"com.ml": !0, | |
"edu.ml": !0, | |
"gouv.ml": !0, | |
"gov.ml": !0, | |
"net.ml": !0, | |
"org.ml": !0, | |
"presse.ml": !0, | |
"*.mm": !0, | |
mn: !0, | |
"gov.mn": !0, | |
"edu.mn": !0, | |
"org.mn": !0, | |
mo: !0, | |
"com.mo": !0, | |
"net.mo": !0, | |
"org.mo": !0, | |
"edu.mo": !0, | |
"gov.mo": !0, | |
mobi: !0, | |
mp: !0, | |
mq: !0, | |
mr: !0, | |
"gov.mr": !0, | |
ms: !0, | |
"com.ms": !0, | |
"edu.ms": !0, | |
"gov.ms": !0, | |
"net.ms": !0, | |
"org.ms": !0, | |
mt: !0, | |
"com.mt": !0, | |
"edu.mt": !0, | |
"net.mt": !0, | |
"org.mt": !0, | |
mu: !0, | |
"com.mu": !0, | |
"net.mu": !0, | |
"org.mu": !0, | |
"gov.mu": !0, | |
"ac.mu": !0, | |
"co.mu": !0, | |
"or.mu": !0, | |
museum: !0, | |
"academy.museum": !0, | |
"agriculture.museum": !0, | |
"air.museum": !0, | |
"airguard.museum": !0, | |
"alabama.museum": !0, | |
"alaska.museum": !0, | |
"amber.museum": !0, | |
"ambulance.museum": !0, | |
"american.museum": !0, | |
"americana.museum": !0, | |
"americanantiques.museum": !0, | |
"americanart.museum": !0, | |
"amsterdam.museum": !0, | |
"and.museum": !0, | |
"annefrank.museum": !0, | |
"anthro.museum": !0, | |
"anthropology.museum": !0, | |
"antiques.museum": !0, | |
"aquarium.museum": !0, | |
"arboretum.museum": !0, | |
"archaeological.museum": !0, | |
"archaeology.museum": !0, | |
"architecture.museum": !0, | |
"art.museum": !0, | |
"artanddesign.museum": !0, | |
"artcenter.museum": !0, | |
"artdeco.museum": !0, | |
"arteducation.museum": !0, | |
"artgallery.museum": !0, | |
"arts.museum": !0, | |
"artsandcrafts.museum": !0, | |
"asmatart.museum": !0, | |
"assassination.museum": !0, | |
"assisi.museum": !0, | |
"association.museum": !0, | |
"astronomy.museum": !0, | |
"atlanta.museum": !0, | |
"austin.museum": !0, | |
"australia.museum": !0, | |
"automotive.museum": !0, | |
"aviation.museum": !0, | |
"axis.museum": !0, | |
"badajoz.museum": !0, | |
"baghdad.museum": !0, | |
"bahn.museum": !0, | |
"bale.museum": !0, | |
"baltimore.museum": !0, | |
"barcelona.museum": !0, | |
"baseball.museum": !0, | |
"basel.museum": !0, | |
"baths.museum": !0, | |
"bauern.museum": !0, | |
"beauxarts.museum": !0, | |
"beeldengeluid.museum": !0, | |
"bellevue.museum": !0, | |
"bergbau.museum": !0, | |
"berkeley.museum": !0, | |
"berlin.museum": !0, | |
"bern.museum": !0, | |
"bible.museum": !0, | |
"bilbao.museum": !0, | |
"bill.museum": !0, | |
"birdart.museum": !0, | |
"birthplace.museum": !0, | |
"bonn.museum": !0, | |
"boston.museum": !0, | |
"botanical.museum": !0, | |
"botanicalgarden.museum": !0, | |
"botanicgarden.museum": !0, | |
"botany.museum": !0, | |
"brandywinevalley.museum": !0, | |
"brasil.museum": !0, | |
"bristol.museum": !0, | |
"british.museum": !0, | |
"britishcolumbia.museum": !0, | |
"broadcast.museum": !0, | |
"brunel.museum": !0, | |
"brussel.museum": !0, | |
"brussels.museum": !0, | |
"bruxelles.museum": !0, | |
"building.museum": !0, | |
"burghof.museum": !0, | |
"bus.museum": !0, | |
"bushey.museum": !0, | |
"cadaques.museum": !0, | |
"california.museum": !0, | |
"cambridge.museum": !0, | |
"can.museum": !0, | |
"canada.museum": !0, | |
"capebreton.museum": !0, | |
"carrier.museum": !0, | |
"cartoonart.museum": !0, | |
"casadelamoneda.museum": !0, | |
"castle.museum": !0, | |
"castres.museum": !0, | |
"celtic.museum": !0, | |
"center.museum": !0, | |
"chattanooga.museum": !0, | |
"cheltenham.museum": !0, | |
"chesapeakebay.museum": !0, | |
"chicago.museum": !0, | |
"children.museum": !0, | |
"childrens.museum": !0, | |
"childrensgarden.museum": !0, | |
"chiropractic.museum": !0, | |
"chocolate.museum": !0, | |
"christiansburg.museum": !0, | |
"cincinnati.museum": !0, | |
"cinema.museum": !0, | |
"circus.museum": !0, | |
"civilisation.museum": !0, | |
"civilization.museum": !0, | |
"civilwar.museum": !0, | |
"clinton.museum": !0, | |
"clock.museum": !0, | |
"coal.museum": !0, | |
"coastaldefence.museum": !0, | |
"cody.museum": !0, | |
"coldwar.museum": !0, | |
"collection.museum": !0, | |
"colonialwilliamsburg.museum": !0, | |
"coloradoplateau.museum": !0, | |
"columbia.museum": !0, | |
"columbus.museum": !0, | |
"communication.museum": !0, | |
"communications.museum": !0, | |
"community.museum": !0, | |
"computer.museum": !0, | |
"computerhistory.museum": !0, | |
"xn--comunicaes-v6a2o.museum": !0, | |
"contemporary.museum": !0, | |
"contemporaryart.museum": !0, | |
"convent.museum": !0, | |
"copenhagen.museum": !0, | |
"corporation.museum": !0, | |
"xn--correios-e-telecomunicaes-ghc29a.museum": !0, | |
"corvette.museum": !0, | |
"costume.museum": !0, | |
"countryestate.museum": !0, | |
"county.museum": !0, | |
"crafts.museum": !0, | |
"cranbrook.museum": !0, | |
"creation.museum": !0, | |
"cultural.museum": !0, | |
"culturalcenter.museum": !0, | |
"culture.museum": !0, | |
"cyber.museum": !0, | |
"cymru.museum": !0, | |
"dali.museum": !0, | |
"dallas.museum": !0, | |
"database.museum": !0, | |
"ddr.museum": !0, | |
"decorativearts.museum": !0, | |
"delaware.museum": !0, | |
"delmenhorst.museum": !0, | |
"denmark.museum": !0, | |
"depot.museum": !0, | |
"design.museum": !0, | |
"detroit.museum": !0, | |
"dinosaur.museum": !0, | |
"discovery.museum": !0, | |
"dolls.museum": !0, | |
"donostia.museum": !0, | |
"durham.museum": !0, | |
"eastafrica.museum": !0, | |
"eastcoast.museum": !0, | |
"education.museum": !0, | |
"educational.museum": !0, | |
"egyptian.museum": !0, | |
"eisenbahn.museum": !0, | |
"elburg.museum": !0, | |
"elvendrell.museum": !0, | |
"embroidery.museum": !0, | |
"encyclopedic.museum": !0, | |
"england.museum": !0, | |
"entomology.museum": !0, | |
"environment.museum": !0, | |
"environmentalconservation.museum": !0, | |
"epilepsy.museum": !0, | |
"essex.museum": !0, | |
"estate.museum": !0, | |
"ethnology.museum": !0, | |
"exeter.museum": !0, | |
"exhibition.museum": !0, | |
"family.museum": !0, | |
"farm.museum": !0, | |
"farmequipment.museum": !0, | |
"farmers.museum": !0, | |
"farmstead.museum": !0, | |
"field.museum": !0, | |
"figueres.museum": !0, | |
"filatelia.museum": !0, | |
"film.museum": !0, | |
"fineart.museum": !0, | |
"finearts.museum": !0, | |
"finland.museum": !0, | |
"flanders.museum": !0, | |
"florida.museum": !0, | |
"force.museum": !0, | |
"fortmissoula.museum": !0, | |
"fortworth.museum": !0, | |
"foundation.museum": !0, | |
"francaise.museum": !0, | |
"frankfurt.museum": !0, | |
"franziskaner.museum": !0, | |
"freemasonry.museum": !0, | |
"freiburg.museum": !0, | |
"fribourg.museum": !0, | |
"frog.museum": !0, | |
"fundacio.museum": !0, | |
"furniture.museum": !0, | |
"gallery.museum": !0, | |
"garden.museum": !0, | |
"gateway.museum": !0, | |
"geelvinck.museum": !0, | |
"gemological.museum": !0, | |
"geology.museum": !0, | |
"georgia.museum": !0, | |
"giessen.museum": !0, | |
"glas.museum": !0, | |
"glass.museum": !0, | |
"gorge.museum": !0, | |
"grandrapids.museum": !0, | |
"graz.museum": !0, | |
"guernsey.museum": !0, | |
"halloffame.museum": !0, | |
"hamburg.museum": !0, | |
"handson.museum": !0, | |
"harvestcelebration.museum": !0, | |
"hawaii.museum": !0, | |
"health.museum": !0, | |
"heimatunduhren.museum": !0, | |
"hellas.museum": !0, | |
"helsinki.museum": !0, | |
"hembygdsforbund.museum": !0, | |
"heritage.museum": !0, | |
"histoire.museum": !0, | |
"historical.museum": !0, | |
"historicalsociety.museum": !0, | |
"historichouses.museum": !0, | |
"historisch.museum": !0, | |
"historisches.museum": !0, | |
"history.museum": !0, | |
"historyofscience.museum": !0, | |
"horology.museum": !0, | |
"house.museum": !0, | |
"humanities.museum": !0, | |
"illustration.museum": !0, | |
"imageandsound.museum": !0, | |
"indian.museum": !0, | |
"indiana.museum": !0, | |
"indianapolis.museum": !0, | |
"indianmarket.museum": !0, | |
"intelligence.museum": !0, | |
"interactive.museum": !0, | |
"iraq.museum": !0, | |
"iron.museum": !0, | |
"isleofman.museum": !0, | |
"jamison.museum": !0, | |
"jefferson.museum": !0, | |
"jerusalem.museum": !0, | |
"jewelry.museum": !0, | |
"jewish.museum": !0, | |
"jewishart.museum": !0, | |
"jfk.museum": !0, | |
"journalism.museum": !0, | |
"judaica.museum": !0, | |
"judygarland.museum": !0, | |
"juedisches.museum": !0, | |
"juif.museum": !0, | |
"karate.museum": !0, | |
"karikatur.museum": !0, | |
"kids.museum": !0, | |
"koebenhavn.museum": !0, | |
"koeln.museum": !0, | |
"kunst.museum": !0, | |
"kunstsammlung.museum": !0, | |
"kunstunddesign.museum": !0, | |
"labor.museum": !0, | |
"labour.museum": !0, | |
"lajolla.museum": !0, | |
"lancashire.museum": !0, | |
"landes.museum": !0, | |
"lans.museum": !0, | |
"xn--lns-qla.museum": !0, | |
"larsson.museum": !0, | |
"lewismiller.museum": !0, | |
"lincoln.museum": !0, | |
"linz.museum": !0, | |
"living.museum": !0, | |
"livinghistory.museum": !0, | |
"localhistory.museum": !0, | |
"london.museum": !0, | |
"losangeles.museum": !0, | |
"louvre.museum": !0, | |
"loyalist.museum": !0, | |
"lucerne.museum": !0, | |
"luxembourg.museum": !0, | |
"luzern.museum": !0, | |
"mad.museum": !0, | |
"madrid.museum": !0, | |
"mallorca.museum": !0, | |
"manchester.museum": !0, | |
"mansion.museum": !0, | |
"mansions.museum": !0, | |
"manx.museum": !0, | |
"marburg.museum": !0, | |
"maritime.museum": !0, | |
"maritimo.museum": !0, | |
"maryland.museum": !0, | |
"marylhurst.museum": !0, | |
"media.museum": !0, | |
"medical.museum": !0, | |
"medizinhistorisches.museum": !0, | |
"meeres.museum": !0, | |
"memorial.museum": !0, | |
"mesaverde.museum": !0, | |
"michigan.museum": !0, | |
"midatlantic.museum": !0, | |
"military.museum": !0, | |
"mill.museum": !0, | |
"miners.museum": !0, | |
"mining.museum": !0, | |
"minnesota.museum": !0, | |
"missile.museum": !0, | |
"missoula.museum": !0, | |
"modern.museum": !0, | |
"moma.museum": !0, | |
"money.museum": !0, | |
"monmouth.museum": !0, | |
"monticello.museum": !0, | |
"montreal.museum": !0, | |
"moscow.museum": !0, | |
"motorcycle.museum": !0, | |
"muenchen.museum": !0, | |
"muenster.museum": !0, | |
"mulhouse.museum": !0, | |
"muncie.museum": !0, | |
"museet.museum": !0, | |
"museumcenter.museum": !0, | |
"museumvereniging.museum": !0, | |
"music.museum": !0, | |
"national.museum": !0, | |
"nationalfirearms.museum": !0, | |
"nationalheritage.museum": !0, | |
"nativeamerican.museum": !0, | |
"naturalhistory.museum": !0, | |
"naturalhistorymuseum.museum": !0, | |
"naturalsciences.museum": !0, | |
"nature.museum": !0, | |
"naturhistorisches.museum": !0, | |
"natuurwetenschappen.museum": !0, | |
"naumburg.museum": !0, | |
"naval.museum": !0, | |
"nebraska.museum": !0, | |
"neues.museum": !0, | |
"newhampshire.museum": !0, | |
"newjersey.museum": !0, | |
"newmexico.museum": !0, | |
"newport.museum": !0, | |
"newspaper.museum": !0, | |
"newyork.museum": !0, | |
"niepce.museum": !0, | |
"norfolk.museum": !0, | |
"north.museum": !0, | |
"nrw.museum": !0, | |
"nuernberg.museum": !0, | |
"nuremberg.museum": !0, | |
"nyc.museum": !0, | |
"nyny.museum": !0, | |
"oceanographic.museum": !0, | |
"oceanographique.museum": !0, | |
"omaha.museum": !0, | |
"online.museum": !0, | |
"ontario.museum": !0, | |
"openair.museum": !0, | |
"oregon.museum": !0, | |
"oregontrail.museum": !0, | |
"otago.museum": !0, | |
"oxford.museum": !0, | |
"pacific.museum": !0, | |
"paderborn.museum": !0, | |
"palace.museum": !0, | |
"paleo.museum": !0, | |
"palmsprings.museum": !0, | |
"panama.museum": !0, | |
"paris.museum": !0, | |
"pasadena.museum": !0, | |
"pharmacy.museum": !0, | |
"philadelphia.museum": !0, | |
"philadelphiaarea.museum": !0, | |
"philately.museum": !0, | |
"phoenix.museum": !0, | |
"photography.museum": !0, | |
"pilots.museum": !0, | |
"pittsburgh.museum": !0, | |
"planetarium.museum": !0, | |
"plantation.museum": !0, | |
"plants.museum": !0, | |
"plaza.museum": !0, | |
"portal.museum": !0, | |
"portland.museum": !0, | |
"portlligat.museum": !0, | |
"posts-and-telecommunications.museum": !0, | |
"preservation.museum": !0, | |
"presidio.museum": !0, | |
"press.museum": !0, | |
"project.museum": !0, | |
"public.museum": !0, | |
"pubol.museum": !0, | |
"quebec.museum": !0, | |
"railroad.museum": !0, | |
"railway.museum": !0, | |
"research.museum": !0, | |
"resistance.museum": !0, | |
"riodejaneiro.museum": !0, | |
"rochester.museum": !0, | |
"rockart.museum": !0, | |
"roma.museum": !0, | |
"russia.museum": !0, | |
"saintlouis.museum": !0, | |
"salem.museum": !0, | |
"salvadordali.museum": !0, | |
"salzburg.museum": !0, | |
"sandiego.museum": !0, | |
"sanfrancisco.museum": !0, | |
"santabarbara.museum": !0, | |
"santacruz.museum": !0, | |
"santafe.museum": !0, | |
"saskatchewan.museum": !0, | |
"satx.museum": !0, | |
"savannahga.museum": !0, | |
"schlesisches.museum": !0, | |
"schoenbrunn.museum": !0, | |
"schokoladen.museum": !0, | |
"school.museum": !0, | |
"schweiz.museum": !0, | |
"science.museum": !0, | |
"scienceandhistory.museum": !0, | |
"scienceandindustry.museum": !0, | |
"sciencecenter.museum": !0, | |
"sciencecenters.museum": !0, | |
"science-fiction.museum": !0, | |
"sciencehistory.museum": !0, | |
"sciences.museum": !0, | |
"sciencesnaturelles.museum": !0, | |
"scotland.museum": !0, | |
"seaport.museum": !0, | |
"settlement.museum": !0, | |
"settlers.museum": !0, | |
"shell.museum": !0, | |
"sherbrooke.museum": !0, | |
"sibenik.museum": !0, | |
"silk.museum": !0, | |
"ski.museum": !0, | |
"skole.museum": !0, | |
"society.museum": !0, | |
"sologne.museum": !0, | |
"soundandvision.museum": !0, | |
"southcarolina.museum": !0, | |
"southwest.museum": !0, | |
"space.museum": !0, | |
"spy.museum": !0, | |
"square.museum": !0, | |
"stadt.museum": !0, | |
"stalbans.museum": !0, | |
"starnberg.museum": !0, | |
"state.museum": !0, | |
"stateofdelaware.museum": !0, | |
"station.museum": !0, | |
"steam.museum": !0, | |
"steiermark.museum": !0, | |
"stjohn.museum": !0, | |
"stockholm.museum": !0, | |
"stpetersburg.museum": !0, | |
"stuttgart.museum": !0, | |
"suisse.museum": !0, | |
"surgeonshall.museum": !0, | |
"surrey.museum": !0, | |
"svizzera.museum": !0, | |
"sweden.museum": !0, | |
"sydney.museum": !0, | |
"tank.museum": !0, | |
"tcm.museum": !0, | |
"technology.museum": !0, | |
"telekommunikation.museum": !0, | |
"television.museum": !0, | |
"texas.museum": !0, | |
"textile.museum": !0, | |
"theater.museum": !0, | |
"time.museum": !0, | |
"timekeeping.museum": !0, | |
"topology.museum": !0, | |
"torino.museum": !0, | |
"touch.museum": !0, | |
"town.museum": !0, | |
"transport.museum": !0, | |
"tree.museum": !0, | |
"trolley.museum": !0, | |
"trust.museum": !0, | |
"trustee.museum": !0, | |
"uhren.museum": !0, | |
"ulm.museum": !0, | |
"undersea.museum": !0, | |
"university.museum": !0, | |
"usa.museum": !0, | |
"usantiques.museum": !0, | |
"usarts.museum": !0, | |
"uscountryestate.museum": !0, | |
"usculture.museum": !0, | |
"usdecorativearts.museum": !0, | |
"usgarden.museum": !0, | |
"ushistory.museum": !0, | |
"ushuaia.museum": !0, | |
"uslivinghistory.museum": !0, | |
"utah.museum": !0, | |
"uvic.museum": !0, | |
"valley.museum": !0, | |
"vantaa.museum": !0, | |
"versailles.museum": !0, | |
"viking.museum": !0, | |
"village.museum": !0, | |
"virginia.museum": !0, | |
"virtual.museum": !0, | |
"virtuel.museum": !0, | |
"vlaanderen.museum": !0, | |
"volkenkunde.museum": !0, | |
"wales.museum": !0, | |
"wallonie.museum": !0, | |
"war.museum": !0, | |
"washingtondc.museum": !0, | |
"watchandclock.museum": !0, | |
"watch-and-clock.museum": !0, | |
"western.museum": !0, | |
"westfalen.museum": !0, | |
"whaling.museum": !0, | |
"wildlife.museum": !0, | |
"williamsburg.museum": !0, | |
"windmill.museum": !0, | |
"workshop.museum": !0, | |
"york.museum": !0, | |
"yorkshire.museum": !0, | |
"yosemite.museum": !0, | |
"youth.museum": !0, | |
"zoological.museum": !0, | |
"zoology.museum": !0, | |
"xn--9dbhblg6di.museum": !0, | |
"xn--h1aegh.museum": !0, | |
mv: !0, | |
"aero.mv": !0, | |
"biz.mv": !0, | |
"com.mv": !0, | |
"coop.mv": !0, | |
"edu.mv": !0, | |
"gov.mv": !0, | |
"info.mv": !0, | |
"int.mv": !0, | |
"mil.mv": !0, | |
"museum.mv": !0, | |
"name.mv": !0, | |
"net.mv": !0, | |
"org.mv": !0, | |
"pro.mv": !0, | |
mw: !0, | |
"ac.mw": !0, | |
"biz.mw": !0, | |
"co.mw": !0, | |
"com.mw": !0, | |
"coop.mw": !0, | |
"edu.mw": !0, | |
"gov.mw": !0, | |
"int.mw": !0, | |
"museum.mw": !0, | |
"net.mw": !0, | |
"org.mw": !0, | |
mx: !0, | |
"com.mx": !0, | |
"org.mx": !0, | |
"gob.mx": !0, | |
"edu.mx": !0, | |
"net.mx": !0, | |
my: !0, | |
"com.my": !0, | |
"net.my": !0, | |
"org.my": !0, | |
"gov.my": !0, | |
"edu.my": !0, | |
"mil.my": !0, | |
"name.my": !0, | |
"*.mz": !0, | |
"teledata.mz": !1, | |
na: !0, | |
"info.na": !0, | |
"pro.na": !0, | |
"name.na": !0, | |
"school.na": !0, | |
"or.na": !0, | |
"dr.na": !0, | |
"us.na": !0, | |
"mx.na": !0, | |
"ca.na": !0, | |
"in.na": !0, | |
"cc.na": !0, | |
"tv.na": !0, | |
"ws.na": !0, | |
"mobi.na": !0, | |
"co.na": !0, | |
"com.na": !0, | |
"org.na": !0, | |
name: !0, | |
nc: !0, | |
"asso.nc": !0, | |
ne: !0, | |
net: !0, | |
nf: !0, | |
"com.nf": !0, | |
"net.nf": !0, | |
"per.nf": !0, | |
"rec.nf": !0, | |
"web.nf": !0, | |
"arts.nf": !0, | |
"firm.nf": !0, | |
"info.nf": !0, | |
"other.nf": !0, | |
"store.nf": !0, | |
ng: !0, | |
"com.ng": !0, | |
"edu.ng": !0, | |
"name.ng": !0, | |
"net.ng": !0, | |
"org.ng": !0, | |
"sch.ng": !0, | |
"gov.ng": !0, | |
"mil.ng": !0, | |
"mobi.ng": !0, | |
"*.ni": !0, | |
nl: !0, | |
"bv.nl": !0, | |
no: !0, | |
"fhs.no": !0, | |
"vgs.no": !0, | |
"fylkesbibl.no": !0, | |
"folkebibl.no": !0, | |
"museum.no": !0, | |
"idrett.no": !0, | |
"priv.no": !0, | |
"mil.no": !0, | |
"stat.no": !0, | |
"dep.no": !0, | |
"kommune.no": !0, | |
"herad.no": !0, | |
"aa.no": !0, | |
"ah.no": !0, | |
"bu.no": !0, | |
"fm.no": !0, | |
"hl.no": !0, | |
"hm.no": !0, | |
"jan-mayen.no": !0, | |
"mr.no": !0, | |
"nl.no": !0, | |
"nt.no": !0, | |
"of.no": !0, | |
"ol.no": !0, | |
"oslo.no": !0, | |
"rl.no": !0, | |
"sf.no": !0, | |
"st.no": !0, | |
"svalbard.no": !0, | |
"tm.no": !0, | |
"tr.no": !0, | |
"va.no": !0, | |
"vf.no": !0, | |
"gs.aa.no": !0, | |
"gs.ah.no": !0, | |
"gs.bu.no": !0, | |
"gs.fm.no": !0, | |
"gs.hl.no": !0, | |
"gs.hm.no": !0, | |
"gs.jan-mayen.no": !0, | |
"gs.mr.no": !0, | |
"gs.nl.no": !0, | |
"gs.nt.no": !0, | |
"gs.of.no": !0, | |
"gs.ol.no": !0, | |
"gs.oslo.no": !0, | |
"gs.rl.no": !0, | |
"gs.sf.no": !0, | |
"gs.st.no": !0, | |
"gs.svalbard.no": !0, | |
"gs.tm.no": !0, | |
"gs.tr.no": !0, | |
"gs.va.no": !0, | |
"gs.vf.no": !0, | |
"akrehamn.no": !0, | |
"xn--krehamn-dxa.no": !0, | |
"algard.no": !0, | |
"xn--lgrd-poac.no": !0, | |
"arna.no": !0, | |
"brumunddal.no": !0, | |
"bryne.no": !0, | |
"bronnoysund.no": !0, | |
"xn--brnnysund-m8ac.no": !0, | |
"drobak.no": !0, | |
"xn--drbak-wua.no": !0, | |
"egersund.no": !0, | |
"fetsund.no": !0, | |
"floro.no": !0, | |
"xn--flor-jra.no": !0, | |
"fredrikstad.no": !0, | |
"hokksund.no": !0, | |
"honefoss.no": !0, | |
"xn--hnefoss-q1a.no": !0, | |
"jessheim.no": !0, | |
"jorpeland.no": !0, | |
"xn--jrpeland-54a.no": !0, | |
"kirkenes.no": !0, | |
"kopervik.no": !0, | |
"krokstadelva.no": !0, | |
"langevag.no": !0, | |
"xn--langevg-jxa.no": !0, | |
"leirvik.no": !0, | |
"mjondalen.no": !0, | |
"xn--mjndalen-64a.no": !0, | |
"mo-i-rana.no": !0, | |
"mosjoen.no": !0, | |
"xn--mosjen-eya.no": !0, | |
"nesoddtangen.no": !0, | |
"orkanger.no": !0, | |
"osoyro.no": !0, | |
"xn--osyro-wua.no": !0, | |
"raholt.no": !0, | |
"xn--rholt-mra.no": !0, | |
"sandnessjoen.no": !0, | |
"xn--sandnessjen-ogb.no": !0, | |
"skedsmokorset.no": !0, | |
"slattum.no": !0, | |
"spjelkavik.no": !0, | |
"stathelle.no": !0, | |
"stavern.no": !0, | |
"stjordalshalsen.no": !0, | |
"xn--stjrdalshalsen-sqb.no": !0, | |
"tananger.no": !0, | |
"tranby.no": !0, | |
"vossevangen.no": !0, | |
"afjord.no": !0, | |
"xn--fjord-lra.no": !0, | |
"agdenes.no": !0, | |
"al.no": !0, | |
"xn--l-1fa.no": !0, | |
"alesund.no": !0, | |
"xn--lesund-hua.no": !0, | |
"alstahaug.no": !0, | |
"alta.no": !0, | |
"xn--lt-liac.no": !0, | |
"alaheadju.no": !0, | |
"xn--laheadju-7ya.no": !0, | |
"alvdal.no": !0, | |
"amli.no": !0, | |
"xn--mli-tla.no": !0, | |
"amot.no": !0, | |
"xn--mot-tla.no": !0, | |
"andebu.no": !0, | |
"andoy.no": !0, | |
"xn--andy-ira.no": !0, | |
"andasuolo.no": !0, | |
"ardal.no": !0, | |
"xn--rdal-poa.no": !0, | |
"aremark.no": !0, | |
"arendal.no": !0, | |
"xn--s-1fa.no": !0, | |
"aseral.no": !0, | |
"xn--seral-lra.no": !0, | |
"asker.no": !0, | |
"askim.no": !0, | |
"askvoll.no": !0, | |
"askoy.no": !0, | |
"xn--asky-ira.no": !0, | |
"asnes.no": !0, | |
"xn--snes-poa.no": !0, | |
"audnedaln.no": !0, | |
"aukra.no": !0, | |
"aure.no": !0, | |
"aurland.no": !0, | |
"aurskog-holand.no": !0, | |
"xn--aurskog-hland-jnb.no": !0, | |
"austevoll.no": !0, | |
"austrheim.no": !0, | |
"averoy.no": !0, | |
"xn--avery-yua.no": !0, | |
"balestrand.no": !0, | |
"ballangen.no": !0, | |
"balat.no": !0, | |
"xn--blt-elab.no": !0, | |
"balsfjord.no": !0, | |
"bahccavuotna.no": !0, | |
"xn--bhccavuotna-k7a.no": !0, | |
"bamble.no": !0, | |
"bardu.no": !0, | |
"beardu.no": !0, | |
"beiarn.no": !0, | |
"bajddar.no": !0, | |
"xn--bjddar-pta.no": !0, | |
"baidar.no": !0, | |
"xn--bidr-5nac.no": !0, | |
"berg.no": !0, | |
"bergen.no": !0, | |
"berlevag.no": !0, | |
"xn--berlevg-jxa.no": !0, | |
"bearalvahki.no": !0, | |
"xn--bearalvhki-y4a.no": !0, | |
"bindal.no": !0, | |
"birkenes.no": !0, | |
"bjarkoy.no": !0, | |
"xn--bjarky-fya.no": !0, | |
"bjerkreim.no": !0, | |
"bjugn.no": !0, | |
"bodo.no": !0, | |
"xn--bod-2na.no": !0, | |
"badaddja.no": !0, | |
"xn--bdddj-mrabd.no": !0, | |
"budejju.no": !0, | |
"bokn.no": !0, | |
"bremanger.no": !0, | |
"bronnoy.no": !0, | |
"xn--brnny-wuac.no": !0, | |
"bygland.no": !0, | |
"bykle.no": !0, | |
"barum.no": !0, | |
"xn--brum-voa.no": !0, | |
"bo.telemark.no": !0, | |
"xn--b-5ga.telemark.no": !0, | |
"bo.nordland.no": !0, | |
"xn--b-5ga.nordland.no": !0, | |
"bievat.no": !0, | |
"xn--bievt-0qa.no": !0, | |
"bomlo.no": !0, | |
"xn--bmlo-gra.no": !0, | |
"batsfjord.no": !0, | |
"xn--btsfjord-9za.no": !0, | |
"bahcavuotna.no": !0, | |
"xn--bhcavuotna-s4a.no": !0, | |
"dovre.no": !0, | |
"drammen.no": !0, | |
"drangedal.no": !0, | |
"dyroy.no": !0, | |
"xn--dyry-ira.no": !0, | |
"donna.no": !0, | |
"xn--dnna-gra.no": !0, | |
"eid.no": !0, | |
"eidfjord.no": !0, | |
"eidsberg.no": !0, | |
"eidskog.no": !0, | |
"eidsvoll.no": !0, | |
"eigersund.no": !0, | |
"elverum.no": !0, | |
"enebakk.no": !0, | |
"engerdal.no": !0, | |
"etne.no": !0, | |
"etnedal.no": !0, | |
"evenes.no": !0, | |
"evenassi.no": !0, | |
"xn--eveni-0qa01ga.no": !0, | |
"evje-og-hornnes.no": !0, | |
"farsund.no": !0, | |
"fauske.no": !0, | |
"fuossko.no": !0, | |
"fuoisku.no": !0, | |
"fedje.no": !0, | |
"fet.no": !0, | |
"finnoy.no": !0, | |
"xn--finny-yua.no": !0, | |
"fitjar.no": !0, | |
"fjaler.no": !0, | |
"fjell.no": !0, | |
"flakstad.no": !0, | |
"flatanger.no": !0, | |
"flekkefjord.no": !0, | |
"flesberg.no": !0, | |
"flora.no": !0, | |
"fla.no": !0, | |
"xn--fl-zia.no": !0, | |
"folldal.no": !0, | |
"forsand.no": !0, | |
"fosnes.no": !0, | |
"frei.no": !0, | |
"frogn.no": !0, | |
"froland.no": !0, | |
"frosta.no": !0, | |
"frana.no": !0, | |
"xn--frna-woa.no": !0, | |
"froya.no": !0, | |
"xn--frya-hra.no": !0, | |
"fusa.no": !0, | |
"fyresdal.no": !0, | |
"forde.no": !0, | |
"xn--frde-gra.no": !0, | |
"gamvik.no": !0, | |
"gangaviika.no": !0, | |
"xn--ggaviika-8ya47h.no": !0, | |
"gaular.no": !0, | |
"gausdal.no": !0, | |
"gildeskal.no": !0, | |
"xn--gildeskl-g0a.no": !0, | |
"giske.no": !0, | |
"gjemnes.no": !0, | |
"gjerdrum.no": !0, | |
"gjerstad.no": !0, | |
"gjesdal.no": !0, | |
"gjovik.no": !0, | |
"xn--gjvik-wua.no": !0, | |
"gloppen.no": !0, | |
"gol.no": !0, | |
"gran.no": !0, | |
"grane.no": !0, | |
"granvin.no": !0, | |
"gratangen.no": !0, | |
"grimstad.no": !0, | |
"grong.no": !0, | |
"kraanghke.no": !0, | |
"xn--kranghke-b0a.no": !0, | |
"grue.no": !0, | |
"gulen.no": !0, | |
"hadsel.no": !0, | |
"halden.no": !0, | |
"halsa.no": !0, | |
"hamar.no": !0, | |
"hamaroy.no": !0, | |
"habmer.no": !0, | |
"xn--hbmer-xqa.no": !0, | |
"hapmir.no": !0, | |
"xn--hpmir-xqa.no": !0, | |
"hammerfest.no": !0, | |
"hammarfeasta.no": !0, | |
"xn--hmmrfeasta-s4ac.no": !0, | |
"haram.no": !0, | |
"hareid.no": !0, | |
"harstad.no": !0, | |
"hasvik.no": !0, | |
"aknoluokta.no": !0, | |
"xn--koluokta-7ya57h.no": !0, | |
"hattfjelldal.no": !0, | |
"aarborte.no": !0, | |
"haugesund.no": !0, | |
"hemne.no": !0, | |
"hemnes.no": !0, | |
"hemsedal.no": !0, | |
"heroy.more-og-romsdal.no": !0, | |
"xn--hery-ira.xn--mre-og-romsdal-qqb.no": !0, | |
"heroy.nordland.no": !0, | |
"xn--hery-ira.nordland.no": !0, | |
"hitra.no": !0, | |
"hjartdal.no": !0, | |
"hjelmeland.no": !0, | |
"hobol.no": !0, | |
"xn--hobl-ira.no": !0, | |
"hof.no": !0, | |
"hol.no": !0, | |
"hole.no": !0, | |
"holmestrand.no": !0, | |
"holtalen.no": !0, | |
"xn--holtlen-hxa.no": !0, | |
"hornindal.no": !0, | |
"horten.no": !0, | |
"hurdal.no": !0, | |
"hurum.no": !0, | |
"hvaler.no": !0, | |
"hyllestad.no": !0, | |
"hagebostad.no": !0, | |
"xn--hgebostad-g3a.no": !0, | |
"hoyanger.no": !0, | |
"xn--hyanger-q1a.no": !0, | |
"hoylandet.no": !0, | |
"xn--hylandet-54a.no": !0, | |
"ha.no": !0, | |
"xn--h-2fa.no": !0, | |
"ibestad.no": !0, | |
"inderoy.no": !0, | |
"xn--indery-fya.no": !0, | |
"iveland.no": !0, | |
"jevnaker.no": !0, | |
"jondal.no": !0, | |
"jolster.no": !0, | |
"xn--jlster-bya.no": !0, | |
"karasjok.no": !0, | |
"karasjohka.no": !0, | |
"xn--krjohka-hwab49j.no": !0, | |
"karlsoy.no": !0, | |
"galsa.no": !0, | |
"xn--gls-elac.no": !0, | |
"karmoy.no": !0, | |
"xn--karmy-yua.no": !0, | |
"kautokeino.no": !0, | |
"guovdageaidnu.no": !0, | |
"klepp.no": !0, | |
"klabu.no": !0, | |
"xn--klbu-woa.no": !0, | |
"kongsberg.no": !0, | |
"kongsvinger.no": !0, | |
"kragero.no": !0, | |
"xn--krager-gya.no": !0, | |
"kristiansand.no": !0, | |
"kristiansund.no": !0, | |
"krodsherad.no": !0, | |
"xn--krdsherad-m8a.no": !0, | |
"kvalsund.no": !0, | |
"rahkkeravju.no": !0, | |
"xn--rhkkervju-01af.no": !0, | |
"kvam.no": !0, | |
"kvinesdal.no": !0, | |
"kvinnherad.no": !0, | |
"kviteseid.no": !0, | |
"kvitsoy.no": !0, | |
"xn--kvitsy-fya.no": !0, | |
"kvafjord.no": !0, | |
"xn--kvfjord-nxa.no": !0, | |
"giehtavuoatna.no": !0, | |
"kvanangen.no": !0, | |
"xn--kvnangen-k0a.no": !0, | |
"navuotna.no": !0, | |
"xn--nvuotna-hwa.no": !0, | |
"kafjord.no": !0, | |
"xn--kfjord-iua.no": !0, | |
"gaivuotna.no": !0, | |
"xn--givuotna-8ya.no": !0, | |
"larvik.no": !0, | |
"lavangen.no": !0, | |
"lavagis.no": !0, | |
"loabat.no": !0, | |
"xn--loabt-0qa.no": !0, | |
"lebesby.no": !0, | |
"davvesiida.no": !0, | |
"leikanger.no": !0, | |
"leirfjord.no": !0, | |
"leka.no": !0, | |
"leksvik.no": !0, | |
"lenvik.no": !0, | |
"leangaviika.no": !0, | |
"xn--leagaviika-52b.no": !0, | |
"lesja.no": !0, | |
"levanger.no": !0, | |
"lier.no": !0, | |
"lierne.no": !0, | |
"lillehammer.no": !0, | |
"lillesand.no": !0, | |
"lindesnes.no": !0, | |
"lindas.no": !0, | |
"xn--linds-pra.no": !0, | |
"lom.no": !0, | |
"loppa.no": !0, | |
"lahppi.no": !0, | |
"xn--lhppi-xqa.no": !0, | |
"lund.no": !0, | |
"lunner.no": !0, | |
"luroy.no": !0, | |
"xn--lury-ira.no": !0, | |
"luster.no": !0, | |
"lyngdal.no": !0, | |
"lyngen.no": !0, | |
"ivgu.no": !0, | |
"lardal.no": !0, | |
"lerdal.no": !0, | |
"xn--lrdal-sra.no": !0, | |
"lodingen.no": !0, | |
"xn--ldingen-q1a.no": !0, | |
"lorenskog.no": !0, | |
"xn--lrenskog-54a.no": !0, | |
"loten.no": !0, | |
"xn--lten-gra.no": !0, | |
"malvik.no": !0, | |
"masoy.no": !0, | |
"xn--msy-ula0h.no": !0, | |
"muosat.no": !0, | |
"xn--muost-0qa.no": !0, | |
"mandal.no": !0, | |
"marker.no": !0, | |
"marnardal.no": !0, | |
"masfjorden.no": !0, | |
"meland.no": !0, | |
"meldal.no": !0, | |
"melhus.no": !0, | |
"meloy.no": !0, | |
"xn--mely-ira.no": !0, | |
"meraker.no": !0, | |
"xn--merker-kua.no": !0, | |
"moareke.no": !0, | |
"xn--moreke-jua.no": !0, | |
"midsund.no": !0, | |
"midtre-gauldal.no": !0, | |
"modalen.no": !0, | |
"modum.no": !0, | |
"molde.no": !0, | |
"moskenes.no": !0, | |
"moss.no": !0, | |
"mosvik.no": !0, | |
"malselv.no": !0, | |
"xn--mlselv-iua.no": !0, | |
"malatvuopmi.no": !0, | |
"xn--mlatvuopmi-s4a.no": !0, | |
"namdalseid.no": !0, | |
"aejrie.no": !0, | |
"namsos.no": !0, | |
"namsskogan.no": !0, | |
"naamesjevuemie.no": !0, | |
"xn--nmesjevuemie-tcba.no": !0, | |
"laakesvuemie.no": !0, | |
"nannestad.no": !0, | |
"narvik.no": !0, | |
"narviika.no": !0, | |
"naustdal.no": !0, | |
"nedre-eiker.no": !0, | |
"nes.akershus.no": !0, | |
"nes.buskerud.no": !0, | |
"nesna.no": !0, | |
"nesodden.no": !0, | |
"nesseby.no": !0, | |
"unjarga.no": !0, | |
"xn--unjrga-rta.no": !0, | |
"nesset.no": !0, | |
"nissedal.no": !0, | |
"nittedal.no": !0, | |
"nord-aurdal.no": !0, | |
"nord-fron.no": !0, | |
"nord-odal.no": !0, | |
"norddal.no": !0, | |
"nordkapp.no": !0, | |
"davvenjarga.no": !0, | |
"xn--davvenjrga-y4a.no": !0, | |
"nordre-land.no": !0, | |
"nordreisa.no": !0, | |
"raisa.no": !0, | |
"xn--risa-5na.no": !0, | |
"nore-og-uvdal.no": !0, | |
"notodden.no": !0, | |
"naroy.no": !0, | |
"xn--nry-yla5g.no": !0, | |
"notteroy.no": !0, | |
"xn--nttery-byae.no": !0, | |
"odda.no": !0, | |
"oksnes.no": !0, | |
"xn--ksnes-uua.no": !0, | |
"oppdal.no": !0, | |
"oppegard.no": !0, | |
"xn--oppegrd-ixa.no": !0, | |
"orkdal.no": !0, | |
"orland.no": !0, | |
"xn--rland-uua.no": !0, | |
"orskog.no": !0, | |
"xn--rskog-uua.no": !0, | |
"orsta.no": !0, | |
"xn--rsta-fra.no": !0, | |
"os.hedmark.no": !0, | |
"os.hordaland.no": !0, | |
"osen.no": !0, | |
"osteroy.no": !0, | |
"xn--ostery-fya.no": !0, | |
"ostre-toten.no": !0, | |
"xn--stre-toten-zcb.no": !0, | |
"overhalla.no": !0, | |
"ovre-eiker.no": !0, | |
"xn--vre-eiker-k8a.no": !0, | |
"oyer.no": !0, | |
"xn--yer-zna.no": !0, | |
"oygarden.no": !0, | |
"xn--ygarden-p1a.no": !0, | |
"oystre-slidre.no": !0, | |
"xn--ystre-slidre-ujb.no": !0, | |
"porsanger.no": !0, | |
"porsangu.no": !0, | |
"xn--porsgu-sta26f.no": !0, | |
"porsgrunn.no": !0, | |
"radoy.no": !0, | |
"xn--rady-ira.no": !0, | |
"rakkestad.no": !0, | |
"rana.no": !0, | |
"ruovat.no": !0, | |
"randaberg.no": !0, | |
"rauma.no": !0, | |
"rendalen.no": !0, | |
"rennebu.no": !0, | |
"rennesoy.no": !0, | |
"xn--rennesy-v1a.no": !0, | |
"rindal.no": !0, | |
"ringebu.no": !0, | |
"ringerike.no": !0, | |
"ringsaker.no": !0, | |
"rissa.no": !0, | |
"risor.no": !0, | |
"xn--risr-ira.no": !0, | |
"roan.no": !0, | |
"rollag.no": !0, | |
"rygge.no": !0, | |
"ralingen.no": !0, | |
"xn--rlingen-mxa.no": !0, | |
"rodoy.no": !0, | |
"xn--rdy-0nab.no": !0, | |
"romskog.no": !0, | |
"xn--rmskog-bya.no": !0, | |
"roros.no": !0, | |
"xn--rros-gra.no": !0, | |
"rost.no": !0, | |
"xn--rst-0na.no": !0, | |
"royken.no": !0, | |
"xn--ryken-vua.no": !0, | |
"royrvik.no": !0, | |
"xn--ryrvik-bya.no": !0, | |
"rade.no": !0, | |
"xn--rde-ula.no": !0, | |
"salangen.no": !0, | |
"siellak.no": !0, | |
"saltdal.no": !0, | |
"salat.no": !0, | |
"xn--slt-elab.no": !0, | |
"xn--slat-5na.no": !0, | |
"samnanger.no": !0, | |
"sande.more-og-romsdal.no": !0, | |
"sande.xn--mre-og-romsdal-qqb.no": !0, | |
"sande.vestfold.no": !0, | |
"sandefjord.no": !0, | |
"sandnes.no": !0, | |
"sandoy.no": !0, | |
"xn--sandy-yua.no": !0, | |
"sarpsborg.no": !0, | |
"sauda.no": !0, | |
"sauherad.no": !0, | |
"sel.no": !0, | |
"selbu.no": !0, | |
"selje.no": !0, | |
"seljord.no": !0, | |
"sigdal.no": !0, | |
"siljan.no": !0, | |
"sirdal.no": !0, | |
"skaun.no": !0, | |
"skedsmo.no": !0, | |
"ski.no": !0, | |
"skien.no": !0, | |
"skiptvet.no": !0, | |
"skjervoy.no": !0, | |
"xn--skjervy-v1a.no": !0, | |
"skierva.no": !0, | |
"xn--skierv-uta.no": !0, | |
"skjak.no": !0, | |
"xn--skjk-soa.no": !0, | |
"skodje.no": !0, | |
"skanland.no": !0, | |
"xn--sknland-fxa.no": !0, | |
"skanit.no": !0, | |
"xn--sknit-yqa.no": !0, | |
"smola.no": !0, | |
"xn--smla-hra.no": !0, | |
"snillfjord.no": !0, | |
"snasa.no": !0, | |
"xn--snsa-roa.no": !0, | |
"snoasa.no": !0, | |
"snaase.no": !0, | |
"xn--snase-nra.no": !0, | |
"sogndal.no": !0, | |
"sokndal.no": !0, | |
"sola.no": !0, | |
"solund.no": !0, | |
"songdalen.no": !0, | |
"sortland.no": !0, | |
"spydeberg.no": !0, | |
"stange.no": !0, | |
"stavanger.no": !0, | |
"steigen.no": !0, | |
"steinkjer.no": !0, | |
"stjordal.no": !0, | |
"xn--stjrdal-s1a.no": !0, | |
"stokke.no": !0, | |
"stor-elvdal.no": !0, | |
"stord.no": !0, | |
"stordal.no": !0, | |
"storfjord.no": !0, | |
"omasvuotna.no": !0, | |
"strand.no": !0, | |
"stranda.no": !0, | |
"stryn.no": !0, | |
"sula.no": !0, | |
"suldal.no": !0, | |
"sund.no": !0, | |
"sunndal.no": !0, | |
"surnadal.no": !0, | |
"sveio.no": !0, | |
"svelvik.no": !0, | |
"sykkylven.no": !0, | |
"sogne.no": !0, | |
"xn--sgne-gra.no": !0, | |
"somna.no": !0, | |
"xn--smna-gra.no": !0, | |
"sondre-land.no": !0, | |
"xn--sndre-land-0cb.no": !0, | |
"sor-aurdal.no": !0, | |
"xn--sr-aurdal-l8a.no": !0, | |
"sor-fron.no": !0, | |
"xn--sr-fron-q1a.no": !0, | |
"sor-odal.no": !0, | |
"xn--sr-odal-q1a.no": !0, | |
"sor-varanger.no": !0, | |
"xn--sr-varanger-ggb.no": !0, | |
"matta-varjjat.no": !0, | |
"xn--mtta-vrjjat-k7af.no": !0, | |
"sorfold.no": !0, | |
"xn--srfold-bya.no": !0, | |
"sorreisa.no": !0, | |
"xn--srreisa-q1a.no": !0, | |
"sorum.no": !0, | |
"xn--srum-gra.no": !0, | |
"tana.no": !0, | |
"deatnu.no": !0, | |
"time.no": !0, | |
"tingvoll.no": !0, | |
"tinn.no": !0, | |
"tjeldsund.no": !0, | |
"dielddanuorri.no": !0, | |
"tjome.no": !0, | |
"xn--tjme-hra.no": !0, | |
"tokke.no": !0, | |
"tolga.no": !0, | |
"torsken.no": !0, | |
"tranoy.no": !0, | |
"xn--trany-yua.no": !0, | |
"tromso.no": !0, | |
"xn--troms-zua.no": !0, | |
"tromsa.no": !0, | |
"romsa.no": !0, | |
"trondheim.no": !0, | |
"troandin.no": !0, | |
"trysil.no": !0, | |
"trana.no": !0, | |
"xn--trna-woa.no": !0, | |
"trogstad.no": !0, | |
"xn--trgstad-r1a.no": !0, | |
"tvedestrand.no": !0, | |
"tydal.no": !0, | |
"tynset.no": !0, | |
"tysfjord.no": !0, | |
"divtasvuodna.no": !0, | |
"divttasvuotna.no": !0, | |
"tysnes.no": !0, | |
"tysvar.no": !0, | |
"xn--tysvr-vra.no": !0, | |
"tonsberg.no": !0, | |
"xn--tnsberg-q1a.no": !0, | |
"ullensaker.no": !0, | |
"ullensvang.no": !0, | |
"ulvik.no": !0, | |
"utsira.no": !0, | |
"vadso.no": !0, | |
"xn--vads-jra.no": !0, | |
"cahcesuolo.no": !0, | |
"xn--hcesuolo-7ya35b.no": !0, | |
"vaksdal.no": !0, | |
"valle.no": !0, | |
"vang.no": !0, | |
"vanylven.no": !0, | |
"vardo.no": !0, | |
"xn--vard-jra.no": !0, | |
"varggat.no": !0, | |
"xn--vrggt-xqad.no": !0, | |
"vefsn.no": !0, | |
"vaapste.no": !0, | |
"vega.no": !0, | |
"vegarshei.no": !0, | |
"xn--vegrshei-c0a.no": !0, | |
"vennesla.no": !0, | |
"verdal.no": !0, | |
"verran.no": !0, | |
"vestby.no": !0, | |
"vestnes.no": !0, | |
"vestre-slidre.no": !0, | |
"vestre-toten.no": !0, | |
"vestvagoy.no": !0, | |
"xn--vestvgy-ixa6o.no": !0, | |
"vevelstad.no": !0, | |
"vik.no": !0, | |
"vikna.no": !0, | |
"vindafjord.no": !0, | |
"volda.no": !0, | |
"voss.no": !0, | |
"varoy.no": !0, | |
"xn--vry-yla5g.no": !0, | |
"vagan.no": !0, | |
"xn--vgan-qoa.no": !0, | |
"voagat.no": !0, | |
"vagsoy.no": !0, | |
"xn--vgsy-qoa0j.no": !0, | |
"vaga.no": !0, | |
"xn--vg-yiab.no": !0, | |
"valer.ostfold.no": !0, | |
"xn--vler-qoa.xn--stfold-9xa.no": !0, | |
"valer.hedmark.no": !0, | |
"xn--vler-qoa.hedmark.no": !0, | |
"*.np": !0, | |
nr: !0, | |
"biz.nr": !0, | |
"info.nr": !0, | |
"gov.nr": !0, | |
"edu.nr": !0, | |
"org.nr": !0, | |
"net.nr": !0, | |
"com.nr": !0, | |
nu: !0, | |
nz: !0, | |
"ac.nz": !0, | |
"co.nz": !0, | |
"cri.nz": !0, | |
"geek.nz": !0, | |
"gen.nz": !0, | |
"govt.nz": !0, | |
"health.nz": !0, | |
"iwi.nz": !0, | |
"kiwi.nz": !0, | |
"maori.nz": !0, | |
"mil.nz": !0, | |
"xn--mori-qsa.nz": !0, | |
"net.nz": !0, | |
"org.nz": !0, | |
"parliament.nz": !0, | |
"school.nz": !0, | |
om: !0, | |
"co.om": !0, | |
"com.om": !0, | |
"edu.om": !0, | |
"gov.om": !0, | |
"med.om": !0, | |
"museum.om": !0, | |
"net.om": !0, | |
"org.om": !0, | |
"pro.om": !0, | |
org: !0, | |
pa: !0, | |
"ac.pa": !0, | |
"gob.pa": !0, | |
"com.pa": !0, | |
"org.pa": !0, | |
"sld.pa": !0, | |
"edu.pa": !0, | |
"net.pa": !0, | |
"ing.pa": !0, | |
"abo.pa": !0, | |
"med.pa": !0, | |
"nom.pa": !0, | |
pe: !0, | |
"edu.pe": !0, | |
"gob.pe": !0, | |
"nom.pe": !0, | |
"mil.pe": !0, | |
"org.pe": !0, | |
"com.pe": !0, | |
"net.pe": !0, | |
pf: !0, | |
"com.pf": !0, | |
"org.pf": !0, | |
"edu.pf": !0, | |
"*.pg": !0, | |
ph: !0, | |
"com.ph": !0, | |
"net.ph": !0, | |
"org.ph": !0, | |
"gov.ph": !0, | |
"edu.ph": !0, | |
"ngo.ph": !0, | |
"mil.ph": !0, | |
"i.ph": !0, | |
pk: !0, | |
"com.pk": !0, | |
"net.pk": !0, | |
"edu.pk": !0, | |
"org.pk": !0, | |
"fam.pk": !0, | |
"biz.pk": !0, | |
"web.pk": !0, | |
"gov.pk": !0, | |
"gob.pk": !0, | |
"gok.pk": !0, | |
"gon.pk": !0, | |
"gop.pk": !0, | |
"gos.pk": !0, | |
"info.pk": !0, | |
pl: !0, | |
"com.pl": !0, | |
"net.pl": !0, | |
"org.pl": !0, | |
"aid.pl": !0, | |
"agro.pl": !0, | |
"atm.pl": !0, | |
"auto.pl": !0, | |
"biz.pl": !0, | |
"edu.pl": !0, | |
"gmina.pl": !0, | |
"gsm.pl": !0, | |
"info.pl": !0, | |
"mail.pl": !0, | |
"miasta.pl": !0, | |
"media.pl": !0, | |
"mil.pl": !0, | |
"nieruchomosci.pl": !0, | |
"nom.pl": !0, | |
"pc.pl": !0, | |
"powiat.pl": !0, | |
"priv.pl": !0, | |
"realestate.pl": !0, | |
"rel.pl": !0, | |
"sex.pl": !0, | |
"shop.pl": !0, | |
"sklep.pl": !0, | |
"sos.pl": !0, | |
"szkola.pl": !0, | |
"targi.pl": !0, | |
"tm.pl": !0, | |
"tourism.pl": !0, | |
"travel.pl": !0, | |
"turystyka.pl": !0, | |
"gov.pl": !0, | |
"ap.gov.pl": !0, | |
"ic.gov.pl": !0, | |
"is.gov.pl": !0, | |
"us.gov.pl": !0, | |
"kmpsp.gov.pl": !0, | |
"kppsp.gov.pl": !0, | |
"kwpsp.gov.pl": !0, | |
"psp.gov.pl": !0, | |
"wskr.gov.pl": !0, | |
"kwp.gov.pl": !0, | |
"mw.gov.pl": !0, | |
"ug.gov.pl": !0, | |
"um.gov.pl": !0, | |
"umig.gov.pl": !0, | |
"ugim.gov.pl": !0, | |
"upow.gov.pl": !0, | |
"uw.gov.pl": !0, | |
"starostwo.gov.pl": !0, | |
"pa.gov.pl": !0, | |
"po.gov.pl": !0, | |
"psse.gov.pl": !0, | |
"pup.gov.pl": !0, | |
"rzgw.gov.pl": !0, | |
"sa.gov.pl": !0, | |
"so.gov.pl": !0, | |
"sr.gov.pl": !0, | |
"wsa.gov.pl": !0, | |
"sko.gov.pl": !0, | |
"uzs.gov.pl": !0, | |
"wiih.gov.pl": !0, | |
"winb.gov.pl": !0, | |
"pinb.gov.pl": !0, | |
"wios.gov.pl": !0, | |
"witd.gov.pl": !0, | |
"wzmiuw.gov.pl": !0, | |
"piw.gov.pl": !0, | |
"wiw.gov.pl": !0, | |
"griw.gov.pl": !0, | |
"wif.gov.pl": !0, | |
"oum.gov.pl": !0, | |
"sdn.gov.pl": !0, | |
"zp.gov.pl": !0, | |
"uppo.gov.pl": !0, | |
"mup.gov.pl": !0, | |
"wuoz.gov.pl": !0, | |
"konsulat.gov.pl": !0, | |
"oirm.gov.pl": !0, | |
"augustow.pl": !0, | |
"babia-gora.pl": !0, | |
"bedzin.pl": !0, | |
"beskidy.pl": !0, | |
"bialowieza.pl": !0, | |
"bialystok.pl": !0, | |
"bielawa.pl": !0, | |
"bieszczady.pl": !0, | |
"boleslawiec.pl": !0, | |
"bydgoszcz.pl": !0, | |
"bytom.pl": !0, | |
"cieszyn.pl": !0, | |
"czeladz.pl": !0, | |
"czest.pl": !0, | |
"dlugoleka.pl": !0, | |
"elblag.pl": !0, | |
"elk.pl": !0, | |
"glogow.pl": !0, | |
"gniezno.pl": !0, | |
"gorlice.pl": !0, | |
"grajewo.pl": !0, | |
"ilawa.pl": !0, | |
"jaworzno.pl": !0, | |
"jelenia-gora.pl": !0, | |
"jgora.pl": !0, | |
"kalisz.pl": !0, | |
"kazimierz-dolny.pl": !0, | |
"karpacz.pl": !0, | |
"kartuzy.pl": !0, | |
"kaszuby.pl": !0, | |
"katowice.pl": !0, | |
"kepno.pl": !0, | |
"ketrzyn.pl": !0, | |
"klodzko.pl": !0, | |
"kobierzyce.pl": !0, | |
"kolobrzeg.pl": !0, | |
"konin.pl": !0, | |
"konskowola.pl": !0, | |
"kutno.pl": !0, | |
"lapy.pl": !0, | |
"lebork.pl": !0, | |
"legnica.pl": !0, | |
"lezajsk.pl": !0, | |
"limanowa.pl": !0, | |
"lomza.pl": !0, | |
"lowicz.pl": !0, | |
"lubin.pl": !0, | |
"lukow.pl": !0, | |
"malbork.pl": !0, | |
"malopolska.pl": !0, | |
"mazowsze.pl": !0, | |
"mazury.pl": !0, | |
"mielec.pl": !0, | |
"mielno.pl": !0, | |
"mragowo.pl": !0, | |
"naklo.pl": !0, | |
"nowaruda.pl": !0, | |
"nysa.pl": !0, | |
"olawa.pl": !0, | |
"olecko.pl": !0, | |
"olkusz.pl": !0, | |
"olsztyn.pl": !0, | |
"opoczno.pl": !0, | |
"opole.pl": !0, | |
"ostroda.pl": !0, | |
"ostroleka.pl": !0, | |
"ostrowiec.pl": !0, | |
"ostrowwlkp.pl": !0, | |
"pila.pl": !0, | |
"pisz.pl": !0, | |
"podhale.pl": !0, | |
"podlasie.pl": !0, | |
"polkowice.pl": !0, | |
"pomorze.pl": !0, | |
"pomorskie.pl": !0, | |
"prochowice.pl": !0, | |
"pruszkow.pl": !0, | |
"przeworsk.pl": !0, | |
"pulawy.pl": !0, | |
"radom.pl": !0, | |
"rawa-maz.pl": !0, | |
"rybnik.pl": !0, | |
"rzeszow.pl": !0, | |
"sanok.pl": !0, | |
"sejny.pl": !0, | |
"slask.pl": !0, | |
"slupsk.pl": !0, | |
"sosnowiec.pl": !0, | |
"stalowa-wola.pl": !0, | |
"skoczow.pl": !0, | |
"starachowice.pl": !0, | |
"stargard.pl": !0, | |
"suwalki.pl": !0, | |
"swidnica.pl": !0, | |
"swiebodzin.pl": !0, | |
"swinoujscie.pl": !0, | |
"szczecin.pl": !0, | |
"szczytno.pl": !0, | |
"tarnobrzeg.pl": !0, | |
"tgory.pl": !0, | |
"turek.pl": !0, | |
"tychy.pl": !0, | |
"ustka.pl": !0, | |
"walbrzych.pl": !0, | |
"warmia.pl": !0, | |
"warszawa.pl": !0, | |
"waw.pl": !0, | |
"wegrow.pl": !0, | |
"wielun.pl": !0, | |
"wlocl.pl": !0, | |
"wloclawek.pl": !0, | |
"wodzislaw.pl": !0, | |
"wolomin.pl": !0, | |
"wroclaw.pl": !0, | |
"zachpomor.pl": !0, | |
"zagan.pl": !0, | |
"zarow.pl": !0, | |
"zgora.pl": !0, | |
"zgorzelec.pl": !0, | |
pm: !0, | |
pn: !0, | |
"gov.pn": !0, | |
"co.pn": !0, | |
"org.pn": !0, | |
"edu.pn": !0, | |
"net.pn": !0, | |
post: !0, | |
pr: !0, | |
"com.pr": !0, | |
"net.pr": !0, | |
"org.pr": !0, | |
"gov.pr": !0, | |
"edu.pr": !0, | |
"isla.pr": !0, | |
"pro.pr": !0, | |
"biz.pr": !0, | |
"info.pr": !0, | |
"name.pr": !0, | |
"est.pr": !0, | |
"prof.pr": !0, | |
"ac.pr": !0, | |
pro: !0, | |
"aca.pro": !0, | |
"bar.pro": !0, | |
"cpa.pro": !0, | |
"jur.pro": !0, | |
"law.pro": !0, | |
"med.pro": !0, | |
"eng.pro": !0, | |
ps: !0, | |
"edu.ps": !0, | |
"gov.ps": !0, | |
"sec.ps": !0, | |
"plo.ps": !0, | |
"com.ps": !0, | |
"org.ps": !0, | |
"net.ps": !0, | |
pt: !0, | |
"net.pt": !0, | |
"gov.pt": !0, | |
"org.pt": !0, | |
"edu.pt": !0, | |
"int.pt": !0, | |
"publ.pt": !0, | |
"com.pt": !0, | |
"nome.pt": !0, | |
pw: !0, | |
"co.pw": !0, | |
"ne.pw": !0, | |
"or.pw": !0, | |
"ed.pw": !0, | |
"go.pw": !0, | |
"belau.pw": !0, | |
py: !0, | |
"com.py": !0, | |
"coop.py": !0, | |
"edu.py": !0, | |
"gov.py": !0, | |
"mil.py": !0, | |
"net.py": !0, | |
"org.py": !0, | |
qa: !0, | |
"com.qa": !0, | |
"edu.qa": !0, | |
"gov.qa": !0, | |
"mil.qa": !0, | |
"name.qa": !0, | |
"net.qa": !0, | |
"org.qa": !0, | |
"sch.qa": !0, | |
re: !0, | |
"com.re": !0, | |
"asso.re": !0, | |
"nom.re": !0, | |
ro: !0, | |
"com.ro": !0, | |
"org.ro": !0, | |
"tm.ro": !0, | |
"nt.ro": !0, | |
"nom.ro": !0, | |
"info.ro": !0, | |
"rec.ro": !0, | |
"arts.ro": !0, | |
"firm.ro": !0, | |
"store.ro": !0, | |
"www.ro": !0, | |
rs: !0, | |
"co.rs": !0, | |
"org.rs": !0, | |
"edu.rs": !0, | |
"ac.rs": !0, | |
"gov.rs": !0, | |
"in.rs": !0, | |
ru: !0, | |
"ac.ru": !0, | |
"com.ru": !0, | |
"edu.ru": !0, | |
"int.ru": !0, | |
"net.ru": !0, | |
"org.ru": !0, | |
"pp.ru": !0, | |
"adygeya.ru": !0, | |
"altai.ru": !0, | |
"amur.ru": !0, | |
"arkhangelsk.ru": !0, | |
"astrakhan.ru": !0, | |
"bashkiria.ru": !0, | |
"belgorod.ru": !0, | |
"bir.ru": !0, | |
"bryansk.ru": !0, | |
"buryatia.ru": !0, | |
"cbg.ru": !0, | |
"chel.ru": !0, | |
"chelyabinsk.ru": !0, | |
"chita.ru": !0, | |
"chukotka.ru": !0, | |
"chuvashia.ru": !0, | |
"dagestan.ru": !0, | |
"dudinka.ru": !0, | |
"e-burg.ru": !0, | |
"grozny.ru": !0, | |
"irkutsk.ru": !0, | |
"ivanovo.ru": !0, | |
"izhevsk.ru": !0, | |
"jar.ru": !0, | |
"joshkar-ola.ru": !0, | |
"kalmykia.ru": !0, | |
"kaluga.ru": !0, | |
"kamchatka.ru": !0, | |
"karelia.ru": !0, | |
"kazan.ru": !0, | |
"kchr.ru": !0, | |
"kemerovo.ru": !0, | |
"khabarovsk.ru": !0, | |
"khakassia.ru": !0, | |
"khv.ru": !0, | |
"kirov.ru": !0, | |
"koenig.ru": !0, | |
"komi.ru": !0, | |
"kostroma.ru": !0, | |
"krasnoyarsk.ru": !0, | |
"kuban.ru": !0, | |
"kurgan.ru": !0, | |
"kursk.ru": !0, | |
"lipetsk.ru": !0, | |
"magadan.ru": !0, | |
"mari.ru": !0, | |
"mari-el.ru": !0, | |
"marine.ru": !0, | |
"mordovia.ru": !0, | |
"msk.ru": !0, | |
"murmansk.ru": !0, | |
"nalchik.ru": !0, | |
"nnov.ru": !0, | |
"nov.ru": !0, | |
"novosibirsk.ru": !0, | |
"nsk.ru": !0, | |
"omsk.ru": !0, | |
"orenburg.ru": !0, | |
"oryol.ru": !0, | |
"palana.ru": !0, | |
"penza.ru": !0, | |
"perm.ru": !0, | |
"ptz.ru": !0, | |
"rnd.ru": !0, | |
"ryazan.ru": !0, | |
"sakhalin.ru": !0, | |
"samara.ru": !0, | |
"saratov.ru": !0, | |
"simbirsk.ru": !0, | |
"smolensk.ru": !0, | |
"spb.ru": !0, | |
"stavropol.ru": !0, | |
"stv.ru": !0, | |
"surgut.ru": !0, | |
"tambov.ru": !0, | |
"tatarstan.ru": !0, | |
"tom.ru": !0, | |
"tomsk.ru": !0, | |
"tsaritsyn.ru": !0, | |
"tsk.ru": !0, | |
"tula.ru": !0, | |
"tuva.ru": !0, | |
"tver.ru": !0, | |
"tyumen.ru": !0, | |
"udm.ru": !0, | |
"udmurtia.ru": !0, | |
"ulan-ude.ru": !0, | |
"vladikavkaz.ru": !0, | |
"vladimir.ru": !0, | |
"vladivostok.ru": !0, | |
"volgograd.ru": !0, | |
"vologda.ru": !0, | |
"voronezh.ru": !0, | |
"vrn.ru": !0, | |
"vyatka.ru": !0, | |
"yakutia.ru": !0, | |
"yamal.ru": !0, | |
"yaroslavl.ru": !0, | |
"yekaterinburg.ru": !0, | |
"yuzhno-sakhalinsk.ru": !0, | |
"amursk.ru": !0, | |
"baikal.ru": !0, | |
"cmw.ru": !0, | |
"fareast.ru": !0, | |
"jamal.ru": !0, | |
"kms.ru": !0, | |
"k-uralsk.ru": !0, | |
"kustanai.ru": !0, | |
"kuzbass.ru": !0, | |
"magnitka.ru": !0, | |
"mytis.ru": !0, | |
"nakhodka.ru": !0, | |
"nkz.ru": !0, | |
"norilsk.ru": !0, | |
"oskol.ru": !0, | |
"pyatigorsk.ru": !0, | |
"rubtsovsk.ru": !0, | |
"snz.ru": !0, | |
"syzran.ru": !0, | |
"vdonsk.ru": !0, | |
"zgrad.ru": !0, | |
"gov.ru": !0, | |
"mil.ru": !0, | |
"test.ru": !0, | |
rw: !0, | |
"gov.rw": !0, | |
"net.rw": !0, | |
"edu.rw": !0, | |
"ac.rw": !0, | |
"com.rw": !0, | |
"co.rw": !0, | |
"int.rw": !0, | |
"mil.rw": !0, | |
"gouv.rw": !0, | |
sa: !0, | |
"com.sa": !0, | |
"net.sa": !0, | |
"org.sa": !0, | |
"gov.sa": !0, | |
"med.sa": !0, | |
"pub.sa": !0, | |
"edu.sa": !0, | |
"sch.sa": !0, | |
sb: !0, | |
"com.sb": !0, | |
"edu.sb": !0, | |
"gov.sb": !0, | |
"net.sb": !0, | |
"org.sb": !0, | |
sc: !0, | |
"com.sc": !0, | |
"gov.sc": !0, | |
"net.sc": !0, | |
"org.sc": !0, | |
"edu.sc": !0, | |
sd: !0, | |
"com.sd": !0, | |
"net.sd": !0, | |
"org.sd": !0, | |
"edu.sd": !0, | |
"med.sd": !0, | |
"tv.sd": !0, | |
"gov.sd": !0, | |
"info.sd": !0, | |
se: !0, | |
"a.se": !0, | |
"ac.se": !0, | |
"b.se": !0, | |
"bd.se": !0, | |
"brand.se": !0, | |
"c.se": !0, | |
"d.se": !0, | |
"e.se": !0, | |
"f.se": !0, | |
"fh.se": !0, | |
"fhsk.se": !0, | |
"fhv.se": !0, | |
"g.se": !0, | |
"h.se": !0, | |
"i.se": !0, | |
"k.se": !0, | |
"komforb.se": !0, | |
"kommunalforbund.se": !0, | |
"komvux.se": !0, | |
"l.se": !0, | |
"lanbib.se": !0, | |
"m.se": !0, | |
"n.se": !0, | |
"naturbruksgymn.se": !0, | |
"o.se": !0, | |
"org.se": !0, | |
"p.se": !0, | |
"parti.se": !0, | |
"pp.se": !0, | |
"press.se": !0, | |
"r.se": !0, | |
"s.se": !0, | |
"t.se": !0, | |
"tm.se": !0, | |
"u.se": !0, | |
"w.se": !0, | |
"x.se": !0, | |
"y.se": !0, | |
"z.se": !0, | |
sg: !0, | |
"com.sg": !0, | |
"net.sg": !0, | |
"org.sg": !0, | |
"gov.sg": !0, | |
"edu.sg": !0, | |
"per.sg": !0, | |
sh: !0, | |
"com.sh": !0, | |
"net.sh": !0, | |
"gov.sh": !0, | |
"org.sh": !0, | |
"mil.sh": !0, | |
si: !0, | |
sj: !0, | |
sk: !0, | |
sl: !0, | |
"com.sl": !0, | |
"net.sl": !0, | |
"edu.sl": !0, | |
"gov.sl": !0, | |
"org.sl": !0, | |
sm: !0, | |
sn: !0, | |
"art.sn": !0, | |
"com.sn": !0, | |
"edu.sn": !0, | |
"gouv.sn": !0, | |
"org.sn": !0, | |
"perso.sn": !0, | |
"univ.sn": !0, | |
so: !0, | |
"com.so": !0, | |
"net.so": !0, | |
"org.so": !0, | |
sr: !0, | |
st: !0, | |
"co.st": !0, | |
"com.st": !0, | |
"consulado.st": !0, | |
"edu.st": !0, | |
"embaixada.st": !0, | |
"gov.st": !0, | |
"mil.st": !0, | |
"net.st": !0, | |
"org.st": !0, | |
"principe.st": !0, | |
"saotome.st": !0, | |
"store.st": !0, | |
su: !0, | |
"adygeya.su": !0, | |
"arkhangelsk.su": !0, | |
"balashov.su": !0, | |
"bashkiria.su": !0, | |
"bryansk.su": !0, | |
"dagestan.su": !0, | |
"grozny.su": !0, | |
"ivanovo.su": !0, | |
"kalmykia.su": !0, | |
"kaluga.su": !0, | |
"karelia.su": !0, | |
"khakassia.su": !0, | |
"krasnodar.su": !0, | |
"kurgan.su": !0, | |
"lenug.su": !0, | |
"mordovia.su": !0, | |
"msk.su": !0, | |
"murmansk.su": !0, | |
"nalchik.su": !0, | |
"nov.su": !0, | |
"obninsk.su": !0, | |
"penza.su": !0, | |
"pokrovsk.su": !0, | |
"sochi.su": !0, | |
"spb.su": !0, | |
"togliatti.su": !0, | |
"troitsk.su": !0, | |
"tula.su": !0, | |
"tuva.su": !0, | |
"vladikavkaz.su": !0, | |
"vladimir.su": !0, | |
"vologda.su": !0, | |
sv: !0, | |
"com.sv": !0, | |
"edu.sv": !0, | |
"gob.sv": !0, | |
"org.sv": !0, | |
"red.sv": !0, | |
sx: !0, | |
"gov.sx": !0, | |
sy: !0, | |
"edu.sy": !0, | |
"gov.sy": !0, | |
"net.sy": !0, | |
"mil.sy": !0, | |
"com.sy": !0, | |
"org.sy": !0, | |
sz: !0, | |
"co.sz": !0, | |
"ac.sz": !0, | |
"org.sz": !0, | |
tc: !0, | |
td: !0, | |
tel: !0, | |
tf: !0, | |
tg: !0, | |
th: !0, | |
"ac.th": !0, | |
"co.th": !0, | |
"go.th": !0, | |
"in.th": !0, | |
"mi.th": !0, | |
"net.th": !0, | |
"or.th": !0, | |
tj: !0, | |
"ac.tj": !0, | |
"biz.tj": !0, | |
"co.tj": !0, | |
"com.tj": !0, | |
"edu.tj": !0, | |
"go.tj": !0, | |
"gov.tj": !0, | |
"int.tj": !0, | |
"mil.tj": !0, | |
"name.tj": !0, | |
"net.tj": !0, | |
"nic.tj": !0, | |
"org.tj": !0, | |
"test.tj": !0, | |
"web.tj": !0, | |
tk: !0, | |
tl: !0, | |
"gov.tl": !0, | |
tm: !0, | |
"com.tm": !0, | |
"co.tm": !0, | |
"org.tm": !0, | |
"net.tm": !0, | |
"nom.tm": !0, | |
"gov.tm": !0, | |
"mil.tm": !0, | |
"edu.tm": !0, | |
tn: !0, | |
"com.tn": !0, | |
"ens.tn": !0, | |
"fin.tn": !0, | |
"gov.tn": !0, | |
"ind.tn": !0, | |
"intl.tn": !0, | |
"nat.tn": !0, | |
"net.tn": !0, | |
"org.tn": !0, | |
"info.tn": !0, | |
"perso.tn": !0, | |
"tourism.tn": !0, | |
"edunet.tn": !0, | |
"rnrt.tn": !0, | |
"rns.tn": !0, | |
"rnu.tn": !0, | |
"mincom.tn": !0, | |
"agrinet.tn": !0, | |
"defense.tn": !0, | |
"turen.tn": !0, | |
to: !0, | |
"com.to": !0, | |
"gov.to": !0, | |
"net.to": !0, | |
"org.to": !0, | |
"edu.to": !0, | |
"mil.to": !0, | |
tp: !0, | |
tr: !0, | |
"com.tr": !0, | |
"info.tr": !0, | |
"biz.tr": !0, | |
"net.tr": !0, | |
"org.tr": !0, | |
"web.tr": !0, | |
"gen.tr": !0, | |
"tv.tr": !0, | |
"av.tr": !0, | |
"dr.tr": !0, | |
"bbs.tr": !0, | |
"name.tr": !0, | |
"tel.tr": !0, | |
"gov.tr": !0, | |
"bel.tr": !0, | |
"pol.tr": !0, | |
"mil.tr": !0, | |
"k12.tr": !0, | |
"edu.tr": !0, | |
"kep.tr": !0, | |
"nc.tr": !0, | |
"gov.nc.tr": !0, | |
travel: !0, | |
tt: !0, | |
"co.tt": !0, | |
"com.tt": !0, | |
"org.tt": !0, | |
"net.tt": !0, | |
"biz.tt": !0, | |
"info.tt": !0, | |
"pro.tt": !0, | |
"int.tt": !0, | |
"coop.tt": !0, | |
"jobs.tt": !0, | |
"mobi.tt": !0, | |
"travel.tt": !0, | |
"museum.tt": !0, | |
"aero.tt": !0, | |
"name.tt": !0, | |
"gov.tt": !0, | |
"edu.tt": !0, | |
tv: !0, | |
tw: !0, | |
"edu.tw": !0, | |
"gov.tw": !0, | |
"mil.tw": !0, | |
"com.tw": !0, | |
"net.tw": !0, | |
"org.tw": !0, | |
"idv.tw": !0, | |
"game.tw": !0, | |
"ebiz.tw": !0, | |
"club.tw": !0, | |
"xn--zf0ao64a.tw": !0, | |
"xn--uc0atv.tw": !0, | |
"xn--czrw28b.tw": !0, | |
tz: !0, | |
"ac.tz": !0, | |
"co.tz": !0, | |
"go.tz": !0, | |
"hotel.tz": !0, | |
"info.tz": !0, | |
"me.tz": !0, | |
"mil.tz": !0, | |
"mobi.tz": !0, | |
"ne.tz": !0, | |
"or.tz": !0, | |
"sc.tz": !0, | |
"tv.tz": !0, | |
ua: !0, | |
"com.ua": !0, | |
"edu.ua": !0, | |
"gov.ua": !0, | |
"in.ua": !0, | |
"net.ua": !0, | |
"org.ua": !0, | |
"cherkassy.ua": !0, | |
"cherkasy.ua": !0, | |
"chernigov.ua": !0, | |
"chernihiv.ua": !0, | |
"chernivtsi.ua": !0, | |
"chernovtsy.ua": !0, | |
"ck.ua": !0, | |
"cn.ua": !0, | |
"cr.ua": !0, | |
"crimea.ua": !0, | |
"cv.ua": !0, | |
"dn.ua": !0, | |
"dnepropetrovsk.ua": !0, | |
"dnipropetrovsk.ua": !0, | |
"dominic.ua": !0, | |
"donetsk.ua": !0, | |
"dp.ua": !0, | |
"if.ua": !0, | |
"ivano-frankivsk.ua": !0, | |
"kh.ua": !0, | |
"kharkiv.ua": !0, | |
"kharkov.ua": !0, | |
"kherson.ua": !0, | |
"khmelnitskiy.ua": !0, | |
"khmelnytskyi.ua": !0, | |
"kiev.ua": !0, | |
"kirovograd.ua": !0, | |
"km.ua": !0, | |
"kr.ua": !0, | |
"krym.ua": !0, | |
"ks.ua": !0, | |
"kv.ua": !0, | |
"kyiv.ua": !0, | |
"lg.ua": !0, | |
"lt.ua": !0, | |
"lugansk.ua": !0, | |
"lutsk.ua": !0, | |
"lv.ua": !0, | |
"lviv.ua": !0, | |
"mk.ua": !0, | |
"mykolaiv.ua": !0, | |
"nikolaev.ua": !0, | |
"od.ua": !0, | |
"odesa.ua": !0, | |
"odessa.ua": !0, | |
"pl.ua": !0, | |
"poltava.ua": !0, | |
"rivne.ua": !0, | |
"rovno.ua": !0, | |
"rv.ua": !0, | |
"sb.ua": !0, | |
"sebastopol.ua": !0, | |
"sevastopol.ua": !0, | |
"sm.ua": !0, | |
"sumy.ua": !0, | |
"te.ua": !0, | |
"ternopil.ua": !0, | |
"uz.ua": !0, | |
"uzhgorod.ua": !0, | |
"vinnica.ua": !0, | |
"vinnytsia.ua": !0, | |
"vn.ua": !0, | |
"volyn.ua": !0, | |
"yalta.ua": !0, | |
"zaporizhzhe.ua": !0, | |
"zaporizhzhia.ua": !0, | |
"zhitomir.ua": !0, | |
"zhytomyr.ua": !0, | |
"zp.ua": !0, | |
"zt.ua": !0, | |
ug: !0, | |
"co.ug": !0, | |
"or.ug": !0, | |
"ac.ug": !0, | |
"sc.ug": !0, | |
"go.ug": !0, | |
"ne.ug": !0, | |
"com.ug": !0, | |
"org.ug": !0, | |
uk: !0, | |
"ac.uk": !0, | |
"co.uk": !0, | |
"gov.uk": !0, | |
"ltd.uk": !0, | |
"me.uk": !0, | |
"net.uk": !0, | |
"nhs.uk": !0, | |
"org.uk": !0, | |
"plc.uk": !0, | |
"police.uk": !0, | |
"*.sch.uk": !0, | |
us: !0, | |
"dni.us": !0, | |
"fed.us": !0, | |
"isa.us": !0, | |
"kids.us": !0, | |
"nsn.us": !0, | |
"ak.us": !0, | |
"al.us": !0, | |
"ar.us": !0, | |
"as.us": !0, | |
"az.us": !0, | |
"ca.us": !0, | |
"co.us": !0, | |
"ct.us": !0, | |
"dc.us": !0, | |
"de.us": !0, | |
"fl.us": !0, | |
"ga.us": !0, | |
"gu.us": !0, | |
"hi.us": !0, | |
"ia.us": !0, | |
"id.us": !0, | |
"il.us": !0, | |
"in.us": !0, | |
"ks.us": !0, | |
"ky.us": !0, | |
"la.us": !0, | |
"ma.us": !0, | |
"md.us": !0, | |
"me.us": !0, | |
"mi.us": !0, | |
"mn.us": !0, | |
"mo.us": !0, | |
"ms.us": !0, | |
"mt.us": !0, | |
"nc.us": !0, | |
"nd.us": !0, | |
"ne.us": !0, | |
"nh.us": !0, | |
"nj.us": !0, | |
"nm.us": !0, | |
"nv.us": !0, | |
"ny.us": !0, | |
"oh.us": !0, | |
"ok.us": !0, | |
"or.us": !0, | |
"pa.us": !0, | |
"pr.us": !0, | |
"ri.us": !0, | |
"sc.us": !0, | |
"sd.us": !0, | |
"tn.us": !0, | |
"tx.us": !0, | |
"ut.us": !0, | |
"vi.us": !0, | |
"vt.us": !0, | |
"va.us": !0, | |
"wa.us": !0, | |
"wi.us": !0, | |
"wv.us": !0, | |
"wy.us": !0, | |
"k12.ak.us": !0, | |
"k12.al.us": !0, | |
"k12.ar.us": !0, | |
"k12.as.us": !0, | |
"k12.az.us": !0, | |
"k12.ca.us": !0, | |
"k12.co.us": !0, | |
"k12.ct.us": !0, | |
"k12.dc.us": !0, | |
"k12.de.us": !0, | |
"k12.fl.us": !0, | |
"k12.ga.us": !0, | |
"k12.gu.us": !0, | |
"k12.ia.us": !0, | |
"k12.id.us": !0, | |
"k12.il.us": !0, | |
"k12.in.us": !0, | |
"k12.ks.us": !0, | |
"k12.ky.us": !0, | |
"k12.la.us": !0, | |
"k12.ma.us": !0, | |
"k12.md.us": !0, | |
"k12.me.us": !0, | |
"k12.mi.us": !0, | |
"k12.mn.us": !0, | |
"k12.mo.us": !0, | |
"k12.ms.us": !0, | |
"k12.mt.us": !0, | |
"k12.nc.us": !0, | |
"k12.ne.us": !0, | |
"k12.nh.us": !0, | |
"k12.nj.us": !0, | |
"k12.nm.us": !0, | |
"k12.nv.us": !0, | |
"k12.ny.us": !0, | |
"k12.oh.us": !0, | |
"k12.ok.us": !0, | |
"k12.or.us": !0, | |
"k12.pa.us": !0, | |
"k12.pr.us": !0, | |
"k12.ri.us": !0, | |
"k12.sc.us": !0, | |
"k12.tn.us": !0, | |
"k12.tx.us": !0, | |
"k12.ut.us": !0, | |
"k12.vi.us": !0, | |
"k12.vt.us": !0, | |
"k12.va.us": !0, | |
"k12.wa.us": !0, | |
"k12.wi.us": !0, | |
"k12.wy.us": !0, | |
"cc.ak.us": !0, | |
"cc.al.us": !0, | |
"cc.ar.us": !0, | |
"cc.as.us": !0, | |
"cc.az.us": !0, | |
"cc.ca.us": !0, | |
"cc.co.us": !0, | |
"cc.ct.us": !0, | |
"cc.dc.us": !0, | |
"cc.de.us": !0, | |
"cc.fl.us": !0, | |
"cc.ga.us": !0, | |
"cc.gu.us": !0, | |
"cc.hi.us": !0, | |
"cc.ia.us": !0, | |
"cc.id.us": !0, | |
"cc.il.us": !0, | |
"cc.in.us": !0, | |
"cc.ks.us": !0, | |
"cc.ky.us": !0, | |
"cc.la.us": !0, | |
"cc.ma.us": !0, | |
"cc.md.us": !0, | |
"cc.me.us": !0, | |
"cc.mi.us": !0, | |
"cc.mn.us": !0, | |
"cc.mo.us": !0, | |
"cc.ms.us": !0, | |
"cc.mt.us": !0, | |
"cc.nc.us": !0, | |
"cc.nd.us": !0, | |
"cc.ne.us": !0, | |
"cc.nh.us": !0, | |
"cc.nj.us": !0, | |
"cc.nm.us": !0, | |
"cc.nv.us": !0, | |
"cc.ny.us": !0, | |
"cc.oh.us": !0, | |
"cc.ok.us": !0, | |
"cc.or.us": !0, | |
"cc.pa.us": !0, | |
"cc.pr.us": !0, | |
"cc.ri.us": !0, | |
"cc.sc.us": !0, | |
"cc.sd.us": !0, | |
"cc.tn.us": !0, | |
"cc.tx.us": !0, | |
"cc.ut.us": !0, | |
"cc.vi.us": !0, | |
"cc.vt.us": !0, | |
"cc.va.us": !0, | |
"cc.wa.us": !0, | |
"cc.wi.us": !0, | |
"cc.wv.us": !0, | |
"cc.wy.us": !0, | |
"lib.ak.us": !0, | |
"lib.al.us": !0, | |
"lib.ar.us": !0, | |
"lib.as.us": !0, | |
"lib.az.us": !0, | |
"lib.ca.us": !0, | |
"lib.co.us": !0, | |
"lib.ct.us": !0, | |
"lib.dc.us": !0, | |
"lib.de.us": !0, | |
"lib.fl.us": !0, | |
"lib.ga.us": !0, | |
"lib.gu.us": !0, | |
"lib.hi.us": !0, | |
"lib.ia.us": !0, | |
"lib.id.us": !0, | |
"lib.il.us": !0, | |
"lib.in.us": !0, | |
"lib.ks.us": !0, | |
"lib.ky.us": !0, | |
"lib.la.us": !0, | |
"lib.ma.us": !0, | |
"lib.md.us": !0, | |
"lib.me.us": !0, | |
"lib.mi.us": !0, | |
"lib.mn.us": !0, | |
"lib.mo.us": !0, | |
"lib.ms.us": !0, | |
"lib.mt.us": !0, | |
"lib.nc.us": !0, | |
"lib.nd.us": !0, | |
"lib.ne.us": !0, | |
"lib.nh.us": !0, | |
"lib.nj.us": !0, | |
"lib.nm.us": !0, | |
"lib.nv.us": !0, | |
"lib.ny.us": !0, | |
"lib.oh.us": !0, | |
"lib.ok.us": !0, | |
"lib.or.us": !0, | |
"lib.pa.us": !0, | |
"lib.pr.us": !0, | |
"lib.ri.us": !0, | |
"lib.sc.us": !0, | |
"lib.sd.us": !0, | |
"lib.tn.us": !0, | |
"lib.tx.us": !0, | |
"lib.ut.us": !0, | |
"lib.vi.us": !0, | |
"lib.vt.us": !0, | |
"lib.va.us": !0, | |
"lib.wa.us": !0, | |
"lib.wi.us": !0, | |
"lib.wy.us": !0, | |
"pvt.k12.ma.us": !0, | |
"chtr.k12.ma.us": !0, | |
"paroch.k12.ma.us": !0, | |
uy: !0, | |
"com.uy": !0, | |
"edu.uy": !0, | |
"gub.uy": !0, | |
"mil.uy": !0, | |
"net.uy": !0, | |
"org.uy": !0, | |
uz: !0, | |
"co.uz": !0, | |
"com.uz": !0, | |
"net.uz": !0, | |
"org.uz": !0, | |
va: !0, | |
vc: !0, | |
"com.vc": !0, | |
"net.vc": !0, | |
"org.vc": !0, | |
"gov.vc": !0, | |
"mil.vc": !0, | |
"edu.vc": !0, | |
ve: !0, | |
"arts.ve": !0, | |
"co.ve": !0, | |
"com.ve": !0, | |
"e12.ve": !0, | |
"edu.ve": !0, | |
"firm.ve": !0, | |
"gob.ve": !0, | |
"gov.ve": !0, | |
"info.ve": !0, | |
"int.ve": !0, | |
"mil.ve": !0, | |
"net.ve": !0, | |
"org.ve": !0, | |
"rec.ve": !0, | |
"store.ve": !0, | |
"tec.ve": !0, | |
"web.ve": !0, | |
vg: !0, | |
vi: !0, | |
"co.vi": !0, | |
"com.vi": !0, | |
"k12.vi": !0, | |
"net.vi": !0, | |
"org.vi": !0, | |
vn: !0, | |
"com.vn": !0, | |
"net.vn": !0, | |
"org.vn": !0, | |
"edu.vn": !0, | |
"gov.vn": !0, | |
"int.vn": !0, | |
"ac.vn": !0, | |
"biz.vn": !0, | |
"info.vn": !0, | |
"name.vn": !0, | |
"pro.vn": !0, | |
"health.vn": !0, | |
vu: !0, | |
"com.vu": !0, | |
"edu.vu": !0, | |
"net.vu": !0, | |
"org.vu": !0, | |
wf: !0, | |
ws: !0, | |
"com.ws": !0, | |
"net.ws": !0, | |
"org.ws": !0, | |
"gov.ws": !0, | |
"edu.ws": !0, | |
yt: !0, | |
"xn--mgbaam7a8h": !0, | |
"xn--y9a3aq": !0, | |
"xn--54b7fta0cc": !0, | |
"xn--90ais": !0, | |
"xn--fiqs8s": !0, | |
"xn--fiqz9s": !0, | |
"xn--lgbbat1ad8j": !0, | |
"xn--wgbh1c": !0, | |
"xn--node": !0, | |
"xn--qxam": !0, | |
"xn--j6w193g": !0, | |
"xn--h2brj9c": !0, | |
"xn--mgbbh1a71e": !0, | |
"xn--fpcrj9c3d": !0, | |
"xn--gecrj9c": !0, | |
"xn--s9brj9c": !0, | |
"xn--45brj9c": !0, | |
"xn--xkc2dl3a5ee0h": !0, | |
"xn--mgba3a4f16a": !0, | |
"xn--mgba3a4fra": !0, | |
"xn--mgbtx2b": !0, | |
"xn--mgbayh7gpa": !0, | |
"xn--3e0b707e": !0, | |
"xn--80ao21a": !0, | |
"xn--fzc2c9e2c": !0, | |
"xn--xkc2al3hye2a": !0, | |
"xn--mgbc0a9azcg": !0, | |
"xn--d1alf": !0, | |
"xn--l1acc": !0, | |
"xn--mix891f": !0, | |
"xn--mix082f": !0, | |
"xn--mgbx4cd0ab": !0, | |
"xn--mgb9awbf": !0, | |
"xn--mgbai9azgqp6j": !0, | |
"xn--mgbai9a5eva00b": !0, | |
"xn--ygbi2ammx": !0, | |
"xn--90a3ac": !0, | |
"xn--o1ac.xn--90a3ac": !0, | |
"xn--c1avg.xn--90a3ac": !0, | |
"xn--90azh.xn--90a3ac": !0, | |
"xn--d1at.xn--90a3ac": !0, | |
"xn--o1ach.xn--90a3ac": !0, | |
"xn--80au.xn--90a3ac": !0, | |
"xn--p1ai": !0, | |
"xn--wgbl6a": !0, | |
"xn--mgberp4a5d4ar": !0, | |
"xn--mgberp4a5d4a87g": !0, | |
"xn--mgbqly7c0a67fbc": !0, | |
"xn--mgbqly7cvafr": !0, | |
"xn--mgbpl2fh": !0, | |
"xn--yfro4i67o": !0, | |
"xn--clchc0ea0b2g2a9gcd": !0, | |
"xn--ogbpf8fl": !0, | |
"xn--mgbtf8fl": !0, | |
"xn--o3cw4h": !0, | |
"xn--pgbs0dh": !0, | |
"xn--kpry57d": !0, | |
"xn--kprw13d": !0, | |
"xn--nnx388a": !0, | |
"xn--j1amh": !0, | |
"xn--mgb2ddes": !0, | |
xxx: !0, | |
"*.ye": !0, | |
"ac.za": !0, | |
"agrica.za": !0, | |
"alt.za": !0, | |
"co.za": !0, | |
"edu.za": !0, | |
"gov.za": !0, | |
"grondar.za": !0, | |
"law.za": !0, | |
"mil.za": !0, | |
"net.za": !0, | |
"ngo.za": !0, | |
"nis.za": !0, | |
"nom.za": !0, | |
"org.za": !0, | |
"school.za": !0, | |
"tm.za": !0, | |
"web.za": !0, | |
"*.zm": !0, | |
"*.zw": !0, | |
aaa: !0, | |
aarp: !0, | |
abarth: !0, | |
abb: !0, | |
abbott: !0, | |
abbvie: !0, | |
abc: !0, | |
able: !0, | |
abogado: !0, | |
abudhabi: !0, | |
academy: !0, | |
accenture: !0, | |
accountant: !0, | |
accountants: !0, | |
aco: !0, | |
active: !0, | |
actor: !0, | |
adac: !0, | |
ads: !0, | |
adult: !0, | |
aeg: !0, | |
aetna: !0, | |
afamilycompany: !0, | |
afl: !0, | |
africa: !0, | |
africamagic: !0, | |
agakhan: !0, | |
agency: !0, | |
aig: !0, | |
aigo: !0, | |
airbus: !0, | |
airforce: !0, | |
airtel: !0, | |
akdn: !0, | |
alfaromeo: !0, | |
alibaba: !0, | |
alipay: !0, | |
allfinanz: !0, | |
allstate: !0, | |
ally: !0, | |
alsace: !0, | |
alstom: !0, | |
americanexpress: !0, | |
americanfamily: !0, | |
amex: !0, | |
amfam: !0, | |
amica: !0, | |
amsterdam: !0, | |
analytics: !0, | |
android: !0, | |
anquan: !0, | |
anz: !0, | |
aol: !0, | |
apartments: !0, | |
app: !0, | |
apple: !0, | |
aquarelle: !0, | |
aramco: !0, | |
archi: !0, | |
army: !0, | |
arte: !0, | |
asda: !0, | |
associates: !0, | |
athleta: !0, | |
attorney: !0, | |
auction: !0, | |
audi: !0, | |
audible: !0, | |
audio: !0, | |
auspost: !0, | |
author: !0, | |
auto: !0, | |
autos: !0, | |
avianca: !0, | |
aws: !0, | |
axa: !0, | |
azure: !0, | |
baby: !0, | |
baidu: !0, | |
banamex: !0, | |
bananarepublic: !0, | |
band: !0, | |
bank: !0, | |
bar: !0, | |
barcelona: !0, | |
barclaycard: !0, | |
barclays: !0, | |
barefoot: !0, | |
bargains: !0, | |
basketball: !0, | |
bauhaus: !0, | |
bayern: !0, | |
bbc: !0, | |
bbt: !0, | |
bbva: !0, | |
bcg: !0, | |
bcn: !0, | |
beats: !0, | |
beer: !0, | |
bentley: !0, | |
berlin: !0, | |
best: !0, | |
bestbuy: !0, | |
bet: !0, | |
bharti: !0, | |
bible: !0, | |
bid: !0, | |
bike: !0, | |
bing: !0, | |
bingo: !0, | |
bio: !0, | |
black: !0, | |
blackfriday: !0, | |
blanco: !0, | |
blockbuster: !0, | |
blog: !0, | |
bloomberg: !0, | |
blue: !0, | |
bms: !0, | |
bmw: !0, | |
bnl: !0, | |
bnpparibas: !0, | |
boats: !0, | |
boehringer: !0, | |
bofa: !0, | |
bom: !0, | |
bond: !0, | |
boo: !0, | |
book: !0, | |
booking: !0, | |
boots: !0, | |
bosch: !0, | |
bostik: !0, | |
bot: !0, | |
boutique: !0, | |
bradesco: !0, | |
bridgestone: !0, | |
broadway: !0, | |
broker: !0, | |
brother: !0, | |
brussels: !0, | |
budapest: !0, | |
bugatti: !0, | |
build: !0, | |
builders: !0, | |
business: !0, | |
buy: !0, | |
buzz: !0, | |
bzh: !0, | |
cab: !0, | |
cafe: !0, | |
cal: !0, | |
call: !0, | |
calvinklein: !0, | |
camera: !0, | |
camp: !0, | |
cancerresearch: !0, | |
canon: !0, | |
capetown: !0, | |
capital: !0, | |
capitalone: !0, | |
car: !0, | |
caravan: !0, | |
cards: !0, | |
care: !0, | |
career: !0, | |
careers: !0, | |
cars: !0, | |
cartier: !0, | |
casa: !0, | |
"case": !0, | |
caseih: !0, | |
cash: !0, | |
casino: !0, | |
catering: !0, | |
cba: !0, | |
cbn: !0, | |
cbre: !0, | |
cbs: !0, | |
ceb: !0, | |
center: !0, | |
ceo: !0, | |
cern: !0, | |
cfa: !0, | |
cfd: !0, | |
chanel: !0, | |
channel: !0, | |
chase: !0, | |
chat: !0, | |
cheap: !0, | |
chintai: !0, | |
chloe: !0, | |
christmas: !0, | |
chrome: !0, | |
chrysler: !0, | |
church: !0, | |
cipriani: !0, | |
circle: !0, | |
cisco: !0, | |
citadel: !0, | |
citi: !0, | |
citic: !0, | |
city: !0, | |
cityeats: !0, | |
claims: !0, | |
cleaning: !0, | |
click: !0, | |
clinic: !0, | |
clothing: !0, | |
cloud: !0, | |
club: !0, | |
clubmed: !0, | |
coach: !0, | |
codes: !0, | |
coffee: !0, | |
college: !0, | |
cologne: !0, | |
comcast: !0, | |
commbank: !0, | |
community: !0, | |
company: !0, | |
computer: !0, | |
comsec: !0, | |
condos: !0, | |
construction: !0, | |
consulting: !0, | |
contact: !0, | |
contractors: !0, | |
cooking: !0, | |
cookingchannel: !0, | |
cool: !0, | |
corsica: !0, | |
country: !0, | |
coupon: !0, | |
coupons: !0, | |
courses: !0, | |
credit: !0, | |
creditcard: !0, | |
creditunion: !0, | |
cricket: !0, | |
crown: !0, | |
crs: !0, | |
cruises: !0, | |
csc: !0, | |
cuisinella: !0, | |
cymru: !0, | |
cyou: !0, | |
dabur: !0, | |
dad: !0, | |
dance: !0, | |
date: !0, | |
dating: !0, | |
datsun: !0, | |
day: !0, | |
dclk: !0, | |
dds: !0, | |
deal: !0, | |
dealer: !0, | |
deals: !0, | |
degree: !0, | |
delivery: !0, | |
dell: !0, | |
deloitte: !0, | |
delta: !0, | |
democrat: !0, | |
dental: !0, | |
dentist: !0, | |
desi: !0, | |
design: !0, | |
dev: !0, | |
dhl: !0, | |
diamonds: !0, | |
diet: !0, | |
digital: !0, | |
direct: !0, | |
directory: !0, | |
discount: !0, | |
discover: !0, | |
dish: !0, | |
dnp: !0, | |
docs: !0, | |
dodge: !0, | |
dog: !0, | |
doha: !0, | |
domains: !0, | |
doosan: !0, | |
dot: !0, | |
download: !0, | |
drive: !0, | |
dstv: !0, | |
dtv: !0, | |
dubai: !0, | |
duck: !0, | |
dunlop: !0, | |
duns: !0, | |
dupont: !0, | |
durban: !0, | |
dvag: !0, | |
dwg: !0, | |
earth: !0, | |
eat: !0, | |
edeka: !0, | |
education: !0, | |
email: !0, | |
emerck: !0, | |
emerson: !0, | |
energy: !0, | |
engineer: !0, | |
engineering: !0, | |
enterprises: !0, | |
epost: !0, | |
epson: !0, | |
equipment: !0, | |
ericsson: !0, | |
erni: !0, | |
esq: !0, | |
estate: !0, | |
esurance: !0, | |
etisalat: !0, | |
eurovision: !0, | |
eus: !0, | |
events: !0, | |
everbank: !0, | |
exchange: !0, | |
expert: !0, | |
exposed: !0, | |
express: !0, | |
extraspace: !0, | |
fage: !0, | |
fail: !0, | |
fairwinds: !0, | |
faith: !0, | |
family: !0, | |
fan: !0, | |
fans: !0, | |
farm: !0, | |
farmers: !0, | |
fashion: !0, | |
fast: !0, | |
fedex: !0, | |
feedback: !0, | |
ferrari: !0, | |
ferrero: !0, | |
fiat: !0, | |
fidelity: !0, | |
fido: !0, | |
film: !0, | |
"final": !0, | |
finance: !0, | |
financial: !0, | |
fire: !0, | |
firestone: !0, | |
firmdale: !0, | |
fish: !0, | |
fishing: !0, | |
fit: !0, | |
fitness: !0, | |
flickr: !0, | |
flights: !0, | |
flir: !0, | |
florist: !0, | |
flowers: !0, | |
flsmidth: !0, | |
fly: !0, | |
foo: !0, | |
foodnetwork: !0, | |
football: !0, | |
ford: !0, | |
forex: !0, | |
forsale: !0, | |
forum: !0, | |
foundation: !0, | |
fox: !0, | |
fresenius: !0, | |
frl: !0, | |
frogans: !0, | |
frontdoor: !0, | |
frontier: !0, | |
ftr: !0, | |
fujitsu: !0, | |
fujixerox: !0, | |
fund: !0, | |
furniture: !0, | |
futbol: !0, | |
fyi: !0, | |
gal: !0, | |
gallery: !0, | |
gallo: !0, | |
gallup: !0, | |
game: !0, | |
games: !0, | |
gap: !0, | |
garden: !0, | |
gbiz: !0, | |
gdn: !0, | |
gea: !0, | |
gent: !0, | |
genting: !0, | |
george: !0, | |
ggee: !0, | |
gift: !0, | |
gifts: !0, | |
gives: !0, | |
giving: !0, | |
glade: !0, | |
glass: !0, | |
gle: !0, | |
global: !0, | |
globo: !0, | |
gmail: !0, | |
gmo: !0, | |
gmx: !0, | |
godaddy: !0, | |
gold: !0, | |
goldpoint: !0, | |
golf: !0, | |
goo: !0, | |
goodhands: !0, | |
goodyear: !0, | |
goog: !0, | |
google: !0, | |
gop: !0, | |
got: !0, | |
gotv: !0, | |
grainger: !0, | |
graphics: !0, | |
gratis: !0, | |
green: !0, | |
gripe: !0, | |
group: !0, | |
guardian: !0, | |
gucci: !0, | |
guge: !0, | |
guide: !0, | |
guitars: !0, | |
guru: !0, | |
hamburg: !0, | |
hangout: !0, | |
haus: !0, | |
hbo: !0, | |
hdfc: !0, | |
hdfcbank: !0, | |
health: !0, | |
healthcare: !0, | |
help: !0, | |
helsinki: !0, | |
here: !0, | |
hermes: !0, | |
hgtv: !0, | |
hiphop: !0, | |
hisamitsu: !0, | |
hitachi: !0, | |
hiv: !0, | |
hkt: !0, | |
hockey: !0, | |
holdings: !0, | |
holiday: !0, | |
homedepot: !0, | |
homegoods: !0, | |
homes: !0, | |
homesense: !0, | |
honda: !0, | |
honeywell: !0, | |
horse: !0, | |
host: !0, | |
hosting: !0, | |
hot: !0, | |
hoteles: !0, | |
hotmail: !0, | |
house: !0, | |
how: !0, | |
hsbc: !0, | |
htc: !0, | |
hughes: !0, | |
hyatt: !0, | |
hyundai: !0, | |
ibm: !0, | |
icbc: !0, | |
ice: !0, | |
icu: !0, | |
ieee: !0, | |
ifm: !0, | |
iinet: !0, | |
ikano: !0, | |
imamat: !0, | |
imdb: !0, | |
immo: !0, | |
immobilien: !0, | |
industries: !0, | |
infiniti: !0, | |
ing: !0, | |
ink: !0, | |
institute: !0, | |
insurance: !0, | |
insure: !0, | |
intel: !0, | |
international: !0, | |
intuit: !0, | |
investments: !0, | |
ipiranga: !0, | |
irish: !0, | |
iselect: !0, | |
ismaili: !0, | |
ist: !0, | |
istanbul: !0, | |
itau: !0, | |
itv: !0, | |
iveco: !0, | |
iwc: !0, | |
jaguar: !0, | |
java: !0, | |
jcb: !0, | |
jcp: !0, | |
jeep: !0, | |
jetzt: !0, | |
jewelry: !0, | |
jio: !0, | |
jlc: !0, | |
jll: !0, | |
jmp: !0, | |
jnj: !0, | |
joburg: !0, | |
jot: !0, | |
joy: !0, | |
jpmorgan: !0, | |
jprs: !0, | |
juegos: !0, | |
juniper: !0, | |
kaufen: !0, | |
kddi: !0, | |
kerryhotels: !0, | |
kerrylogistics: !0, | |
kerryproperties: !0, | |
kfh: !0, | |
kia: !0, | |
kim: !0, | |
kinder: !0, | |
kindle: !0, | |
kitchen: !0, | |
kiwi: !0, | |
koeln: !0, | |
komatsu: !0, | |
kosher: !0, | |
kpmg: !0, | |
kpn: !0, | |
krd: !0, | |
kred: !0, | |
kuokgroup: !0, | |
kyknet: !0, | |
kyoto: !0, | |
lacaixa: !0, | |
ladbrokes: !0, | |
lamborghini: !0, | |
lancaster: !0, | |
lancia: !0, | |
lancome: !0, | |
land: !0, | |
landrover: !0, | |
lanxess: !0, | |
lasalle: !0, | |
lat: !0, | |
latino: !0, | |
latrobe: !0, | |
law: !0, | |
lawyer: !0, | |
lds: !0, | |
lease: !0, | |
leclerc: !0, | |
lefrak: !0, | |
legal: !0, | |
lego: !0, | |
lexus: !0, | |
lgbt: !0, | |
liaison: !0, | |
lidl: !0, | |
life: !0, | |
lifeinsurance: !0, | |
lifestyle: !0, | |
lighting: !0, | |
like: !0, | |
lilly: !0, | |
limited: !0, | |
limo: !0, | |
lincoln: !0, | |
linde: !0, | |
link: !0, | |
lipsy: !0, | |
live: !0, | |
living: !0, | |
lixil: !0, | |
loan: !0, | |
loans: !0, | |
locker: !0, | |
locus: !0, | |
loft: !0, | |
lol: !0, | |
london: !0, | |
lotte: !0, | |
lotto: !0, | |
love: !0, | |
lpl: !0, | |
lplfinancial: !0, | |
ltd: !0, | |
ltda: !0, | |
lundbeck: !0, | |
lupin: !0, | |
luxe: !0, | |
luxury: !0, | |
macys: !0, | |
madrid: !0, | |
maif: !0, | |
maison: !0, | |
makeup: !0, | |
man: !0, | |
management: !0, | |
mango: !0, | |
market: !0, | |
marketing: !0, | |
markets: !0, | |
marriott: !0, | |
marshalls: !0, | |
maserati: !0, | |
mattel: !0, | |
mba: !0, | |
mcd: !0, | |
mcdonalds: !0, | |
mckinsey: !0, | |
med: !0, | |
media: !0, | |
meet: !0, | |
melbourne: !0, | |
meme: !0, | |
memorial: !0, | |
men: !0, | |
menu: !0, | |
meo: !0, | |
metlife: !0, | |
miami: !0, | |
microsoft: !0, | |
mini: !0, | |
mint: !0, | |
mit: !0, | |
mitsubishi: !0, | |
mlb: !0, | |
mls: !0, | |
mma: !0, | |
mnet: !0, | |
mobily: !0, | |
moda: !0, | |
moe: !0, | |
moi: !0, | |
mom: !0, | |
monash: !0, | |
money: !0, | |
monster: !0, | |
montblanc: !0, | |
mopar: !0, | |
mormon: !0, | |
mortgage: !0, | |
moscow: !0, | |
moto: !0, | |
motorcycles: !0, | |
mov: !0, | |
movie: !0, | |
movistar: !0, | |
msd: !0, | |
mtn: !0, | |
mtpc: !0, | |
mtr: !0, | |
multichoice: !0, | |
mutual: !0, | |
mutuelle: !0, | |
mzansimagic: !0, | |
nab: !0, | |
nadex: !0, | |
nagoya: !0, | |
naspers: !0, | |
nationwide: !0, | |
natura: !0, | |
navy: !0, | |
nba: !0, | |
nec: !0, | |
netbank: !0, | |
netflix: !0, | |
network: !0, | |
neustar: !0, | |
"new": !0, | |
newholland: !0, | |
news: !0, | |
next: !0, | |
nextdirect: !0, | |
nexus: !0, | |
nfl: !0, | |
ngo: !0, | |
nhk: !0, | |
nico: !0, | |
nike: !0, | |
nikon: !0, | |
ninja: !0, | |
nissan: !0, | |
nokia: !0, | |
northwesternmutual: !0, | |
norton: !0, | |
now: !0, | |
nowruz: !0, | |
nowtv: !0, | |
nra: !0, | |
nrw: !0, | |
ntt: !0, | |
nyc: !0, | |
obi: !0, | |
observer: !0, | |
off: !0, | |
office: !0, | |
okinawa: !0, | |
olayan: !0, | |
olayangroup: !0, | |
oldnavy: !0, | |
ollo: !0, | |
omega: !0, | |
one: !0, | |
ong: !0, | |
onl: !0, | |
online: !0, | |
onyourside: !0, | |
ooo: !0, | |
open: !0, | |
oracle: !0, | |
orange: !0, | |
organic: !0, | |
orientexpress: !0, | |
osaka: !0, | |
otsuka: !0, | |
ott: !0, | |
ovh: !0, | |
page: !0, | |
pamperedchef: !0, | |
panasonic: !0, | |
panerai: !0, | |
paris: !0, | |
pars: !0, | |
partners: !0, | |
parts: !0, | |
party: !0, | |
passagens: !0, | |
pay: !0, | |
payu: !0, | |
pccw: !0, | |
pet: !0, | |
pfizer: !0, | |
pharmacy: !0, | |
philips: !0, | |
photo: !0, | |
photography: !0, | |
photos: !0, | |
physio: !0, | |
piaget: !0, | |
pics: !0, | |
pictet: !0, | |
pictures: !0, | |
pid: !0, | |
pin: !0, | |
ping: !0, | |
pink: !0, | |
pioneer: !0, | |
pizza: !0, | |
place: !0, | |
play: !0, | |
playstation: !0, | |
plumbing: !0, | |
plus: !0, | |
pnc: !0, | |
pohl: !0, | |
poker: !0, | |
politie: !0, | |
porn: !0, | |
pramerica: !0, | |
praxi: !0, | |
press: !0, | |
prime: !0, | |
prod: !0, | |
productions: !0, | |
prof: !0, | |
progressive: !0, | |
promo: !0, | |
properties: !0, | |
property: !0, | |
protection: !0, | |
pru: !0, | |
prudential: !0, | |
pub: !0, | |
qpon: !0, | |
quebec: !0, | |
quest: !0, | |
qvc: !0, | |
racing: !0, | |
raid: !0, | |
read: !0, | |
realestate: !0, | |
realtor: !0, | |
realty: !0, | |
recipes: !0, | |
red: !0, | |
redstone: !0, | |
redumbrella: !0, | |
rehab: !0, | |
reise: !0, | |
reisen: !0, | |
reit: !0, | |
reliance: !0, | |
ren: !0, | |
rent: !0, | |
rentals: !0, | |
repair: !0, | |
report: !0, | |
republican: !0, | |
rest: !0, | |
restaurant: !0, | |
review: !0, | |
reviews: !0, | |
rexroth: !0, | |
rich: !0, | |
richardli: !0, | |
ricoh: !0, | |
rightathome: !0, | |
ril: !0, | |
rio: !0, | |
rip: !0, | |
rocher: !0, | |
rocks: !0, | |
rodeo: !0, | |
rogers: !0, | |
room: !0, | |
rsvp: !0, | |
ruhr: !0, | |
run: !0, | |
rwe: !0, | |
ryukyu: !0, | |
saarland: !0, | |
safe: !0, | |
safety: !0, | |
sakura: !0, | |
sale: !0, | |
salon: !0, | |
samsclub: !0, | |
samsung: !0, | |
sandvik: !0, | |
sandvikcoromant: !0, | |
sanofi: !0, | |
sap: !0, | |
sapo: !0, | |
sarl: !0, | |
sas: !0, | |
save: !0, | |
saxo: !0, | |
sbi: !0, | |
sbs: !0, | |
sca: !0, | |
scb: !0, | |
schaeffler: !0, | |
schmidt: !0, | |
scholarships: !0, | |
school: !0, | |
schule: !0, | |
schwarz: !0, | |
science: !0, | |
scjohnson: !0, | |
scor: !0, | |
scot: !0, | |
seat: !0, | |
secure: !0, | |
security: !0, | |
seek: !0, | |
sener: !0, | |
services: !0, | |
ses: !0, | |
seven: !0, | |
sew: !0, | |
sex: !0, | |
sexy: !0, | |
sfr: !0, | |
shangrila: !0, | |
sharp: !0, | |
shaw: !0, | |
shell: !0, | |
shia: !0, | |
shiksha: !0, | |
shoes: !0, | |
shouji: !0, | |
show: !0, | |
showtime: !0, | |
shriram: !0, | |
silk: !0, | |
sina: !0, | |
singles: !0, | |
site: !0, | |
ski: !0, | |
skin: !0, | |
sky: !0, | |
skype: !0, | |
sling: !0, | |
smart: !0, | |
smile: !0, | |
sncf: !0, | |
soccer: !0, | |
social: !0, | |
softbank: !0, | |
software: !0, | |
sohu: !0, | |
solar: !0, | |
solutions: !0, | |
song: !0, | |
sony: !0, | |
soy: !0, | |
space: !0, | |
spiegel: !0, | |
spot: !0, | |
spreadbetting: !0, | |
srl: !0, | |
srt: !0, | |
stada: !0, | |
staples: !0, | |
star: !0, | |
starhub: !0, | |
statebank: !0, | |
statefarm: !0, | |
statoil: !0, | |
stc: !0, | |
stcgroup: !0, | |
stockholm: !0, | |
storage: !0, | |
store: !0, | |
studio: !0, | |
study: !0, | |
style: !0, | |
sucks: !0, | |
supersport: !0, | |
supplies: !0, | |
supply: !0, | |
support: !0, | |
surf: !0, | |
surgery: !0, | |
suzuki: !0, | |
swatch: !0, | |
swiftcover: !0, | |
swiss: !0, | |
sydney: !0, | |
symantec: !0, | |
systems: !0, | |
tab: !0, | |
taipei: !0, | |
talk: !0, | |
taobao: !0, | |
target: !0, | |
tatamotors: !0, | |
tatar: !0, | |
tattoo: !0, | |
tax: !0, | |
taxi: !0, | |
tci: !0, | |
tdk: !0, | |
team: !0, | |
tech: !0, | |
technology: !0, | |
telecity: !0, | |
telefonica: !0, | |
temasek: !0, | |
tennis: !0, | |
teva: !0, | |
thd: !0, | |
theater: !0, | |
theatre: !0, | |
theguardian: !0, | |
tiaa: !0, | |
tickets: !0, | |
tienda: !0, | |
tiffany: !0, | |
tips: !0, | |
tires: !0, | |
tirol: !0, | |
tjmaxx: !0, | |
tjx: !0, | |
tkmaxx: !0, | |
tmall: !0, | |
today: !0, | |
tokyo: !0, | |
tools: !0, | |
top: !0, | |
toray: !0, | |
toshiba: !0, | |
total: !0, | |
tours: !0, | |
town: !0, | |
toyota: !0, | |
toys: !0, | |
trade: !0, | |
trading: !0, | |
training: !0, | |
travelchannel: !0, | |
travelers: !0, | |
travelersinsurance: !0, | |
trust: !0, | |
trv: !0, | |
tube: !0, | |
tui: !0, | |
tunes: !0, | |
tushu: !0, | |
tvs: !0, | |
ubank: !0, | |
ubs: !0, | |
uconnect: !0, | |
university: !0, | |
uno: !0, | |
uol: !0, | |
ups: !0, | |
vacations: !0, | |
vana: !0, | |
vanguard: !0, | |
vegas: !0, | |
ventures: !0, | |
verisign: !0, | |
versicherung: !0, | |
vet: !0, | |
viajes: !0, | |
video: !0, | |
vig: !0, | |
viking: !0, | |
villas: !0, | |
vin: !0, | |
vip: !0, | |
virgin: !0, | |
visa: !0, | |
vision: !0, | |
vista: !0, | |
vistaprint: !0, | |
viva: !0, | |
vivo: !0, | |
vlaanderen: !0, | |
vodka: !0, | |
volkswagen: !0, | |
vote: !0, | |
voting: !0, | |
voto: !0, | |
voyage: !0, | |
vuelos: !0, | |
wales: !0, | |
walmart: !0, | |
walter: !0, | |
wang: !0, | |
wanggou: !0, | |
warman: !0, | |
watch: !0, | |
watches: !0, | |
weather: !0, | |
weatherchannel: !0, | |
webcam: !0, | |
weber: !0, | |
website: !0, | |
wed: !0, | |
wedding: !0, | |
weibo: !0, | |
weir: !0, | |
whoswho: !0, | |
wien: !0, | |
wiki: !0, | |
williamhill: !0, | |
win: !0, | |
windows: !0, | |
wine: !0, | |
winners: !0, | |
wme: !0, | |
wolterskluwer: !0, | |
woodside: !0, | |
work: !0, | |
works: !0, | |
world: !0, | |
wtc: !0, | |
wtf: !0, | |
xbox: !0, | |
xerox: !0, | |
xfinity: !0, | |
xihuan: !0, | |
xin: !0, | |
"xn--11b4c3d": !0, | |
"xn--1ck2e1b": !0, | |
"xn--1qqw23a": !0, | |
"xn--30rr7y": !0, | |
"xn--3bst00m": !0, | |
"xn--3ds443g": !0, | |
"xn--3oq18vl8pn36a": !0, | |
"xn--3pxu8k": !0, | |
"xn--42c2d9a": !0, | |
"xn--45q11c": !0, | |
"xn--4gbrim": !0, | |
"xn--4gq48lf9j": !0, | |
"xn--55qw42g": !0, | |
"xn--55qx5d": !0, | |
"xn--5su34j936bgsg": !0, | |
"xn--5tzm5g": !0, | |
"xn--6frz82g": !0, | |
"xn--6qq986b3xl": !0, | |
"xn--80adxhks": !0, | |
"xn--80asehdb": !0, | |
"xn--80aswg": !0, | |
"xn--8y0a063a": !0, | |
"xn--9dbq2a": !0, | |
"xn--9et52u": !0, | |
"xn--9krt00a": !0, | |
"xn--b4w605ferd": !0, | |
"xn--bck1b9a5dre4c": !0, | |
"xn--c1avg": !0, | |
"xn--c2br7g": !0, | |
"xn--cck2b3b": !0, | |
"xn--cg4bki": !0, | |
"xn--czr694b": !0, | |
"xn--czrs0t": !0, | |
"xn--czru2d": !0, | |
"xn--d1acj3b": !0, | |
"xn--eckvdtc9d": !0, | |
"xn--efvy88h": !0, | |
"xn--estv75g": !0, | |
"xn--fct429k": !0, | |
"xn--fhbei": !0, | |
"xn--fiq228c5hs": !0, | |
"xn--fiq64b": !0, | |
"xn--fjq720a": !0, | |
"xn--flw351e": !0, | |
"xn--fzys8d69uvgm": !0, | |
"xn--g2xx48c": !0, | |
"xn--gckr3f0f": !0, | |
"xn--hxt814e": !0, | |
"xn--i1b6b1a6a2e": !0, | |
"xn--imr513n": !0, | |
"xn--io0a7i": !0, | |
"xn--j1aef": !0, | |
"xn--jlq61u9w7b": !0, | |
"xn--jvr189m": !0, | |
"xn--kcrx77d1x4a": !0, | |
"xn--kpu716f": !0, | |
"xn--kput3i": !0, | |
"xn--mgba3a3ejt": !0, | |
"xn--mgba7c0bbn0a": !0, | |
"xn--mgbaakc7dvf": !0, | |
"xn--mgbab2bd": !0, | |
"xn--mgbb9fbpob": !0, | |
"xn--mgbca7dzdo": !0, | |
"xn--mgbt3dhd": !0, | |
"xn--mk1bu44c": !0, | |
"xn--mxtq1m": !0, | |
"xn--ngbc5azd": !0, | |
"xn--ngbe9e0a": !0, | |
"xn--nqv7f": !0, | |
"xn--nqv7fs00ema": !0, | |
"xn--nyqy26a": !0, | |
"xn--p1acf": !0, | |
"xn--pbt977c": !0, | |
"xn--pssy2u": !0, | |
"xn--q9jyb4c": !0, | |
"xn--qcka1pmc": !0, | |
"xn--rhqv96g": !0, | |
"xn--rovu88b": !0, | |
"xn--ses554g": !0, | |
"xn--t60b56a": !0, | |
"xn--tckwe": !0, | |
"xn--unup4y": !0, | |
"xn--vermgensberater-ctb": !0, | |
"xn--vermgensberatung-pwb": !0, | |
"xn--vhquv": !0, | |
"xn--vuq861b": !0, | |
"xn--w4r85el8fhu5dnra": !0, | |
"xn--w4rs40l": !0, | |
"xn--xhq521b": !0, | |
"xn--zfr164b": !0, | |
xperia: !0, | |
xyz: !0, | |
yachts: !0, | |
yahoo: !0, | |
yamaxun: !0, | |
yandex: !0, | |
yodobashi: !0, | |
yoga: !0, | |
yokohama: !0, | |
you: !0, | |
youtube: !0, | |
yun: !0, | |
zappos: !0, | |
zara: !0, | |
zero: !0, | |
zip: !0, | |
zippo: !0, | |
zone: !0, | |
zuerich: !0, | |
"cloudfront.net": !0, | |
"ap-northeast-1.compute.amazonaws.com": !0, | |
"ap-southeast-1.compute.amazonaws.com": !0, | |
"ap-southeast-2.compute.amazonaws.com": !0, | |
"cn-north-1.compute.amazonaws.cn": !0, | |
"compute.amazonaws.cn": !0, | |
"compute.amazonaws.com": !0, | |
"compute-1.amazonaws.com": !0, | |
"eu-west-1.compute.amazonaws.com": !0, | |
"eu-central-1.compute.amazonaws.com": !0, | |
"sa-east-1.compute.amazonaws.com": !0, | |
"us-east-1.amazonaws.com": !0, | |
"us-gov-west-1.compute.amazonaws.com": !0, | |
"us-west-1.compute.amazonaws.com": !0, | |
"us-west-2.compute.amazonaws.com": !0, | |
"z-1.compute-1.amazonaws.com": !0, | |
"z-2.compute-1.amazonaws.com": !0, | |
"elasticbeanstalk.com": !0, | |
"elb.amazonaws.com": !0, | |
"s3.amazonaws.com": !0, | |
"s3-ap-northeast-1.amazonaws.com": !0, | |
"s3-ap-southeast-1.amazonaws.com": !0, | |
"s3-ap-southeast-2.amazonaws.com": !0, | |
"s3-external-1.amazonaws.com": !0, | |
"s3-external-2.amazonaws.com": !0, | |
"s3-fips-us-gov-west-1.amazonaws.com": !0, | |
"s3-eu-central-1.amazonaws.com": !0, | |
"s3-eu-west-1.amazonaws.com": !0, | |
"s3-sa-east-1.amazonaws.com": !0, | |
"s3-us-gov-west-1.amazonaws.com": !0, | |
"s3-us-west-1.amazonaws.com": !0, | |
"s3-us-west-2.amazonaws.com": !0, | |
"s3.cn-north-1.amazonaws.com.cn": !0, | |
"s3.eu-central-1.amazonaws.com": !0, | |
"betainabox.com": !0, | |
"ae.org": !0, | |
"ar.com": !0, | |
"br.com": !0, | |
"cn.com": !0, | |
"com.de": !0, | |
"com.se": !0, | |
"de.com": !0, | |
"eu.com": !0, | |
"gb.com": !0, | |
"gb.net": !0, | |
"hu.com": !0, | |
"hu.net": !0, | |
"jp.net": !0, | |
"jpn.com": !0, | |
"kr.com": !0, | |
"mex.com": !0, | |
"no.com": !0, | |
"qc.com": !0, | |
"ru.com": !0, | |
"sa.com": !0, | |
"se.com": !0, | |
"se.net": !0, | |
"uk.com": !0, | |
"uk.net": !0, | |
"us.com": !0, | |
"uy.com": !0, | |
"za.bz": !0, | |
"za.com": !0, | |
"africa.com": !0, | |
"gr.com": !0, | |
"in.net": !0, | |
"us.org": !0, | |
"co.com": !0, | |
"c.la": !0, | |
"cloudcontrolled.com": !0, | |
"cloudcontrolapp.com": !0, | |
"co.ca": !0, | |
"c.cdn77.org": !0, | |
"cdn77-ssl.net": !0, | |
"r.cdn77.net": !0, | |
"rsc.cdn77.org": !0, | |
"ssl.origin.cdn77-secure.org": !0, | |
"co.nl": !0, | |
"co.no": !0, | |
"*.platform.sh": !0, | |
"cupcake.is": !0, | |
"dreamhosters.com": !0, | |
"duckdns.org": !0, | |
"dyndns-at-home.com": !0, | |
"dyndns-at-work.com": !0, | |
"dyndns-blog.com": !0, | |
"dyndns-free.com": !0, | |
"dyndns-home.com": !0, | |
"dyndns-ip.com": !0, | |
"dyndns-mail.com": !0, | |
"dyndns-office.com": !0, | |
"dyndns-pics.com": !0, | |
"dyndns-remote.com": !0, | |
"dyndns-server.com": !0, | |
"dyndns-web.com": !0, | |
"dyndns-wiki.com": !0, | |
"dyndns-work.com": !0, | |
"dyndns.biz": !0, | |
"dyndns.info": !0, | |
"dyndns.org": !0, | |
"dyndns.tv": !0, | |
"at-band-camp.net": !0, | |
"ath.cx": !0, | |
"barrel-of-knowledge.info": !0, | |
"barrell-of-knowledge.info": !0, | |
"better-than.tv": !0, | |
"blogdns.com": !0, | |
"blogdns.net": !0, | |
"blogdns.org": !0, | |
"blogsite.org": !0, | |
"boldlygoingnowhere.org": !0, | |
"broke-it.net": !0, | |
"buyshouses.net": !0, | |
"cechire.com": !0, | |
"dnsalias.com": !0, | |
"dnsalias.net": !0, | |
"dnsalias.org": !0, | |
"dnsdojo.com": !0, | |
"dnsdojo.net": !0, | |
"dnsdojo.org": !0, | |
"does-it.net": !0, | |
"doesntexist.com": !0, | |
"doesntexist.org": !0, | |
"dontexist.com": !0, | |
"dontexist.net": !0, | |
"dontexist.org": !0, | |
"doomdns.com": !0, | |
"doomdns.org": !0, | |
"dvrdns.org": !0, | |
"dyn-o-saur.com": !0, | |
"dynalias.com": !0, | |
"dynalias.net": !0, | |
"dynalias.org": !0, | |
"dynathome.net": !0, | |
"dyndns.ws": !0, | |
"endofinternet.net": !0, | |
"endofinternet.org": !0, | |
"endoftheinternet.org": !0, | |
"est-a-la-maison.com": !0, | |
"est-a-la-masion.com": !0, | |
"est-le-patron.com": !0, | |
"est-mon-blogueur.com": !0, | |
"for-better.biz": !0, | |
"for-more.biz": !0, | |
"for-our.info": !0, | |
"for-some.biz": !0, | |
"for-the.biz": !0, | |
"forgot.her.name": !0, | |
"forgot.his.name": !0, | |
"from-ak.com": !0, | |
"from-al.com": !0, | |
"from-ar.com": !0, | |
"from-az.net": !0, | |
"from-ca.com": !0, | |
"from-co.net": !0, | |
"from-ct.com": !0, | |
"from-dc.com": !0, | |
"from-de.com": !0, | |
"from-fl.com": !0, | |
"from-ga.com": !0, | |
"from-hi.com": !0, | |
"from-ia.com": !0, | |
"from-id.com": !0, | |
"from-il.com": !0, | |
"from-in.com": !0, | |
"from-ks.com": !0, | |
"from-ky.com": !0, | |
"from-la.net": !0, | |
"from-ma.com": !0, | |
"from-md.com": !0, | |
"from-me.org": !0, | |
"from-mi.com": !0, | |
"from-mn.com": !0, | |
"from-mo.com": !0, | |
"from-ms.com": !0, | |
"from-mt.com": !0, | |
"from-nc.com": !0, | |
"from-nd.com": !0, | |
"from-ne.com": !0, | |
"from-nh.com": !0, | |
"from-nj.com": !0, | |
"from-nm.com": !0, | |
"from-nv.com": !0, | |
"from-ny.net": !0, | |
"from-oh.com": !0, | |
"from-ok.com": !0, | |
"from-or.com": !0, | |
"from-pa.com": !0, | |
"from-pr.com": !0, | |
"from-ri.com": !0, | |
"from-sc.com": !0, | |
"from-sd.com": !0, | |
"from-tn.com": !0, | |
"from-tx.com": !0, | |
"from-ut.com": !0, | |
"from-va.com": !0, | |
"from-vt.com": !0, | |
"from-wa.com": !0, | |
"from-wi.com": !0, | |
"from-wv.com": !0, | |
"from-wy.com": !0, | |
"ftpaccess.cc": !0, | |
"fuettertdasnetz.de": !0, | |
"game-host.org": !0, | |
"game-server.cc": !0, | |
"getmyip.com": !0, | |
"gets-it.net": !0, | |
"go.dyndns.org": !0, | |
"gotdns.com": !0, | |
"gotdns.org": !0, | |
"groks-the.info": !0, | |
"groks-this.info": !0, | |
"ham-radio-op.net": !0, | |
"here-for-more.info": !0, | |
"hobby-site.com": !0, | |
"hobby-site.org": !0, | |
"home.dyndns.org": !0, | |
"homedns.org": !0, | |
"homeftp.net": !0, | |
"homeftp.org": !0, | |
"homeip.net": !0, | |
"homelinux.com": !0, | |
"homelinux.net": !0, | |
"homelinux.org": !0, | |
"homeunix.com": !0, | |
"homeunix.net": !0, | |
"homeunix.org": !0, | |
"iamallama.com": !0, | |
"in-the-band.net": !0, | |
"is-a-anarchist.com": !0, | |
"is-a-blogger.com": !0, | |
"is-a-bookkeeper.com": !0, | |
"is-a-bruinsfan.org": !0, | |
"is-a-bulls-fan.com": !0, | |
"is-a-candidate.org": !0, | |
"is-a-caterer.com": !0, | |
"is-a-celticsfan.org": !0, | |
"is-a-chef.com": !0, | |
"is-a-chef.net": !0, | |
"is-a-chef.org": !0, | |
"is-a-conservative.com": !0, | |
"is-a-cpa.com": !0, | |
"is-a-cubicle-slave.com": !0, | |
"is-a-democrat.com": !0, | |
"is-a-designer.com": !0, | |
"is-a-doctor.com": !0, | |
"is-a-financialadvisor.com": !0, | |
"is-a-geek.com": !0, | |
"is-a-geek.net": !0, | |
"is-a-geek.org": !0, | |
"is-a-green.com": !0, | |
"is-a-guru.com": !0, | |
"is-a-hard-worker.com": !0, | |
"is-a-hunter.com": !0, | |
"is-a-knight.org": !0, | |
"is-a-landscaper.com": !0, | |
"is-a-lawyer.com": !0, | |
"is-a-liberal.com": !0, | |
"is-a-libertarian.com": !0, | |
"is-a-linux-user.org": !0, | |
"is-a-llama.com": !0, | |
"is-a-musician.com": !0, | |
"is-a-nascarfan.com": !0, | |
"is-a-nurse.com": !0, | |
"is-a-painter.com": !0, | |
"is-a-patsfan.org": !0, | |
"is-a-personaltrainer.com": !0, | |
"is-a-photographer.com": !0, | |
"is-a-player.com": !0, | |
"is-a-republican.com": !0, | |
"is-a-rockstar.com": !0, | |
"is-a-socialist.com": !0, | |
"is-a-soxfan.org": !0, | |
"is-a-student.com": !0, | |
"is-a-teacher.com": !0, | |
"is-a-techie.com": !0, | |
"is-a-therapist.com": !0, | |
"is-an-accountant.com": !0, | |
"is-an-actor.com": !0, | |
"is-an-actress.com": !0, | |
"is-an-anarchist.com": !0, | |
"is-an-artist.com": !0, | |
"is-an-engineer.com": !0, | |
"is-an-entertainer.com": !0, | |
"is-by.us": !0, | |
"is-certified.com": !0, | |
"is-found.org": !0, | |
"is-gone.com": !0, | |
"is-into-anime.com": !0, | |
"is-into-cars.com": !0, | |
"is-into-cartoons.com": !0, | |
"is-into-games.com": !0, | |
"is-leet.com": !0, | |
"is-lost.org": !0, | |
"is-not-certified.com": !0, | |
"is-saved.org": !0, | |
"is-slick.com": !0, | |
"is-uberleet.com": !0, | |
"is-very-bad.org": !0, | |
"is-very-evil.org": !0, | |
"is-very-good.org": !0, | |
"is-very-nice.org": !0, | |
"is-very-sweet.org": !0, | |
"is-with-theband.com": !0, | |
"isa-geek.com": !0, | |
"isa-geek.net": !0, | |
"isa-geek.org": !0, | |
"isa-hockeynut.com": !0, | |
"issmarterthanyou.com": !0, | |
"isteingeek.de": !0, | |
"istmein.de": !0, | |
"kicks-ass.net": !0, | |
"kicks-ass.org": !0, | |
"knowsitall.info": !0, | |
"land-4-sale.us": !0, | |
"lebtimnetz.de": !0, | |
"leitungsen.de": !0, | |
"likes-pie.com": !0, | |
"likescandy.com": !0, | |
"merseine.nu": !0, | |
"mine.nu": !0, | |
"misconfused.org": !0, | |
"mypets.ws": !0, | |
"myphotos.cc": !0, | |
"neat-url.com": !0, | |
"office-on-the.net": !0, | |
"on-the-web.tv": !0, | |
"podzone.net": !0, | |
"podzone.org": !0, | |
"readmyblog.org": !0, | |
"saves-the-whales.com": !0, | |
"scrapper-site.net": !0, | |
"scrapping.cc": !0, | |
"selfip.biz": !0, | |
"selfip.com": !0, | |
"selfip.info": !0, | |
"selfip.net": !0, | |
"selfip.org": !0, | |
"sells-for-less.com": !0, | |
"sells-for-u.com": !0, | |
"sells-it.net": !0, | |
"sellsyourhome.org": !0, | |
"servebbs.com": !0, | |
"servebbs.net": !0, | |
"servebbs.org": !0, | |
"serveftp.net": !0, | |
"serveftp.org": !0, | |
"servegame.org": !0, | |
"shacknet.nu": !0, | |
"simple-url.com": !0, | |
"space-to-rent.com": !0, | |
"stuff-4-sale.org": !0, | |
"stuff-4-sale.us": !0, | |
"teaches-yoga.com": !0, | |
"thruhere.net": !0, | |
"traeumtgerade.de": !0, | |
"webhop.biz": !0, | |
"webhop.info": !0, | |
"webhop.net": !0, | |
"webhop.org": !0, | |
"worse-than.tv": !0, | |
"writesthisblog.com": !0, | |
"eu.org": !0, | |
"al.eu.org": !0, | |
"asso.eu.org": !0, | |
"at.eu.org": !0, | |
"au.eu.org": !0, | |
"be.eu.org": !0, | |
"bg.eu.org": !0, | |
"ca.eu.org": !0, | |
"cd.eu.org": !0, | |
"ch.eu.org": !0, | |
"cn.eu.org": !0, | |
"cy.eu.org": !0, | |
"cz.eu.org": !0, | |
"de.eu.org": !0, | |
"dk.eu.org": !0, | |
"edu.eu.org": !0, | |
"ee.eu.org": !0, | |
"es.eu.org": !0, | |
"fi.eu.org": !0, | |
"fr.eu.org": !0, | |
"gr.eu.org": !0, | |
"hr.eu.org": !0, | |
"hu.eu.org": !0, | |
"ie.eu.org": !0, | |
"il.eu.org": !0, | |
"in.eu.org": !0, | |
"int.eu.org": !0, | |
"is.eu.org": !0, | |
"it.eu.org": !0, | |
"jp.eu.org": !0, | |
"kr.eu.org": !0, | |
"lt.eu.org": !0, | |
"lu.eu.org": !0, | |
"lv.eu.org": !0, | |
"mc.eu.org": !0, | |
"me.eu.org": !0, | |
"mk.eu.org": !0, | |
"mt.eu.org": !0, | |
"my.eu.org": !0, | |
"net.eu.org": !0, | |
"ng.eu.org": !0, | |
"nl.eu.org": !0, | |
"no.eu.org": !0, | |
"nz.eu.org": !0, | |
"paris.eu.org": !0, | |
"pl.eu.org": !0, | |
"pt.eu.org": !0, | |
"q-a.eu.org": !0, | |
"ro.eu.org": !0, | |
"ru.eu.org": !0, | |
"se.eu.org": !0, | |
"si.eu.org": !0, | |
"sk.eu.org": !0, | |
"tr.eu.org": !0, | |
"uk.eu.org": !0, | |
"us.eu.org": !0, | |
"a.ssl.fastly.net": !0, | |
"b.ssl.fastly.net": !0, | |
"global.ssl.fastly.net": !0, | |
"a.prod.fastly.net": !0, | |
"global.prod.fastly.net": !0, | |
"firebaseapp.com": !0, | |
"flynnhub.com": !0, | |
"service.gov.uk": !0, | |
"github.io": !0, | |
"githubusercontent.com": !0, | |
"ro.com": !0, | |
"appspot.com": !0, | |
"blogspot.ae": !0, | |
"blogspot.al": !0, | |
"blogspot.am": !0, | |
"blogspot.ba": !0, | |
"blogspot.be": !0, | |
"blogspot.bg": !0, | |
"blogspot.bj": !0, | |
"blogspot.ca": !0, | |
"blogspot.cf": !0, | |
"blogspot.ch": !0, | |
"blogspot.cl": !0, | |
"blogspot.co.at": !0, | |
"blogspot.co.id": !0, | |
"blogspot.co.il": !0, | |
"blogspot.co.ke": !0, | |
"blogspot.co.nz": !0, | |
"blogspot.co.uk": !0, | |
"blogspot.co.za": !0, | |
"blogspot.com": !0, | |
"blogspot.com.ar": !0, | |
"blogspot.com.au": !0, | |
"blogspot.com.br": !0, | |
"blogspot.com.by": !0, | |
"blogspot.com.co": !0, | |
"blogspot.com.cy": !0, | |
"blogspot.com.ee": !0, | |
"blogspot.com.eg": !0, | |
"blogspot.com.es": !0, | |
"blogspot.com.mt": !0, | |
"blogspot.com.ng": !0, | |
"blogspot.com.tr": !0, | |
"blogspot.com.uy": !0, | |
"blogspot.cv": !0, | |
"blogspot.cz": !0, | |
"blogspot.de": !0, | |
"blogspot.dk": !0, | |
"blogspot.fi": !0, | |
"blogspot.fr": !0, | |
"blogspot.gr": !0, | |
"blogspot.hk": !0, | |
"blogspot.hr": !0, | |
"blogspot.hu": !0, | |
"blogspot.ie": !0, | |
"blogspot.in": !0, | |
"blogspot.is": !0, | |
"blogspot.it": !0, | |
"blogspot.jp": !0, | |
"blogspot.kr": !0, | |
"blogspot.li": !0, | |
"blogspot.lt": !0, | |
"blogspot.lu": !0, | |
"blogspot.md": !0, | |
"blogspot.mk": !0, | |
"blogspot.mr": !0, | |
"blogspot.mx": !0, | |
"blogspot.my": !0, | |
"blogspot.nl": !0, | |
"blogspot.no": !0, | |
"blogspot.pe": !0, | |
"blogspot.pt": !0, | |
"blogspot.qa": !0, | |
"blogspot.re": !0, | |
"blogspot.ro": !0, | |
"blogspot.rs": !0, | |
"blogspot.ru": !0, | |
"blogspot.se": !0, | |
"blogspot.sg": !0, | |
"blogspot.si": !0, | |
"blogspot.sk": !0, | |
"blogspot.sn": !0, | |
"blogspot.td": !0, | |
"blogspot.tw": !0, | |
"blogspot.ug": !0, | |
"blogspot.vn": !0, | |
"codespot.com": !0, | |
"googleapis.com": !0, | |
"googlecode.com": !0, | |
"pagespeedmobilizer.com": !0, | |
"withgoogle.com": !0, | |
"withyoutube.com": !0, | |
"herokuapp.com": !0, | |
"herokussl.com": !0, | |
"iki.fi": !0, | |
"biz.at": !0, | |
"info.at": !0, | |
"co.pl": !0, | |
"azurewebsites.net": !0, | |
"azure-mobile.net": !0, | |
"cloudapp.net": !0, | |
"bmoattachments.org": !0, | |
"4u.com": !0, | |
"nfshost.com": !0, | |
"nyc.mn": !0, | |
"nid.io": !0, | |
"operaunite.com": !0, | |
"outsystemscloud.com": !0, | |
"art.pl": !0, | |
"gliwice.pl": !0, | |
"krakow.pl": !0, | |
"poznan.pl": !0, | |
"wroc.pl": !0, | |
"zakopane.pl": !0, | |
"pantheon.io": !0, | |
"gotpantheon.com": !0, | |
"priv.at": !0, | |
"qa2.com": !0, | |
"rhcloud.com": !0, | |
"sandcats.io": !0, | |
"biz.ua": !0, | |
"co.ua": !0, | |
"pp.ua": !0, | |
"sinaapp.com": !0, | |
"vipsinaapp.com": !0, | |
"1kapp.com": !0, | |
"gda.pl": !0, | |
"gdansk.pl": !0, | |
"gdynia.pl": !0, | |
"med.pl": !0, | |
"sopot.pl": !0, | |
"hk.com": !0, | |
"hk.org": !0, | |
"ltd.hk": !0, | |
"inc.hk": !0, | |
"yolasite.com": !0, | |
"za.net": !0, | |
"za.org": !0 | |
}) | |
}, { | |
punycode: 147 | |
}], | |
25: [function(e, t, a) { | |
"use strict"; | |
function o() {} | |
a.Store = o, o.prototype.synchronous = !1, o.prototype.findCookie = function(e, t, a, o) { | |
throw new Error("findCookie is not implemented") | |
}, o.prototype.findCookies = function(e, t, a) { | |
throw new Error("findCookies is not implemented") | |
}, o.prototype.putCookie = function(e, t) { | |
throw new Error("putCookie is not implemented") | |
}, o.prototype.updateCookie = function(e, t, a) { | |
throw new Error("updateCookie is not implemented") | |
}, o.prototype.removeCookie = function(e, t, a, o) { | |
throw new Error("removeCookie is not implemented") | |
}, o.prototype.removeCookies = function(e, t, a) { | |
throw new Error("removeCookies is not implemented") | |
}, o.prototype.getAllCookies = function(e) { | |
throw new Error("getAllCookies is not implemented (therefore jar cannot be serialized)") | |
} | |
}, {}], | |
26: [function(e, t, a) { | |
var o, n, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
n = 90, t.exports = o = function() { | |
function e() { | |
this.replay = bind(this.replay, this), this._onConfirmationActionMessage = bind(this._onConfirmationActionMessage, this), this._currentReplays = {}, honey.messages.addListener("confirmation:action", this._onConfirmationActionMessage) | |
} | |
return e.prototype._onConfirmationActionMessage = function(e, t, a) { | |
var o; | |
switch (null != t ? t.action : void 0) { | |
case "replay": | |
return this.replay(null != (o = t.data) ? o.url : void 0); | |
default: | |
throw new InvalidParametersError("Invalid action type: " + (null != t ? t.action : void 0)) | |
} | |
}, e.prototype.replay = function(e) { | |
var t; | |
return t = $('<iframe src="' + e + '" />').appendTo("body"), setTimeout(function(e) { | |
return function() { | |
return t.remove() | |
} | |
}(this), 1e3 * n) | |
}, e | |
}() | |
}, {}], | |
27: [function(e, t, a) { | |
var o, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
t.exports = o = function() { | |
function e() { | |
this.getAllForDomain = bind(this.getAllForDomain, this) | |
} | |
return e.prototype.getAllForDomain = function(e) { | |
return honey._native.cookies.getAllForDomain(e) | |
}, e | |
}() | |
}, {}], | |
28: [function(e, t, a) { | |
var o, n, i, r, u, s, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
s = e("url"), o = e("../../../data/bldata"), u = 1800, n = 21600, r = 259200, t.exports = i = function() { | |
function e() { | |
this._checkForUpdates = bind(this._checkForUpdates, this), this._updateBlData = bind(this._updateBlData, this), this._onCheckMessage = bind(this._onCheckMessage, this), this.check = bind(this.check, this), honey.messages.addListener("domainbl:check", this._onCheckMessage), this._storage = honey.storage.local.prefixed("domainBl"), this._urlRegexes = [], this._domainRegexes = [], this.ready = Promise.resolve().then(function(e) { | |
return function() { | |
if ("development" === honey.environment) throw new NotFoundError; | |
return e._storage.get("bldata") | |
} | |
}(this))["catch"](NotFoundError, function(e) { | |
return function() { | |
return o | |
} | |
}(this)).then(function(e) { | |
return function(t) { | |
return e._updateBlData(t || o) | |
} | |
}(this))["catch"](function(e) { | |
return function(t) { | |
return e._storage.del("bldata")["catch"](function() {}), honey.logger.debug("Failed to initialise blacklisted domains data: " + ((null != t ? t.message : void 0) || "unknown error"), t) | |
} | |
}(this))["finally"](function(e) { | |
return function() { | |
return "production" === honey.environment && e._checkForUpdates(), null | |
} | |
}(this)) | |
} | |
return e.prototype.check = function(e) { | |
return Promise.resolve().then(function(t) { | |
return function() { | |
var a, o, n, i, r, u, c; | |
if (e = function() { | |
try { | |
return s.parse(e) | |
} catch (t) {} | |
}(), null != e ? e.href : void 0) { | |
if (e.hostname) | |
for (r = t._domainRegexes, a = 0, n = r.length; n > a; a++) | |
if (c = r[a], e.hostname.match(c)) throw new DomainBlacklistedError; | |
for (u = t._urlRegexes, o = 0, i = u.length; i > o; o++) | |
if (c = u[o], e.href.match(c)) throw new DomainBlacklistedError; | |
return !0 | |
} | |
} | |
}(this)) | |
}, e.prototype._onCheckMessage = function(e, t, a) { | |
return this.check(null != t ? t.url : void 0) | |
}, e.prototype._updateBlData = function(e) { | |
var t, a, o, n, i, r, u, s, c; | |
if (!Array.isArray(null != e ? e.domains : void 0) || !Array.isArray(null != e ? e.urls : void 0)) throw new InvalidDataError("invalid bldata"); | |
for (t = [], u = e.domains, a = 0, n = u.length; n > a; a++) { | |
r = u[a]; | |
try { | |
(r = honey.util.cleanString(r)) && t.push(new RegExp(r, "i")) | |
} catch (l) {} | |
} | |
for (c = [], s = e.urls, o = 0, i = s.length; i > o; o++) { | |
r = s[o]; | |
try { | |
(r = honey.util.cleanString(r)) && c.push(new RegExp(r, "i")) | |
} catch (l) {} | |
} | |
return this._domainRegexes = t, this._urlRegexes = c | |
}, e.prototype._checkForUpdates = function() { | |
var e; | |
return this._checkingForUpdates ? this._checkingForUpdates : (e = { | |
checkInterval: o.interval || n | |
}, this._checkingForUpdates = Promise.resolve().then(function(e) { | |
return function() { | |
if (clearTimeout(e._checkForUpdatesTo), delete e._checkForUpdatesTo, !navigator.onLine) throw new OperationSkippedError("Computer is offline"); | |
return honey.logger.debug("Fetching latest store modules meta"), $.getAsync(CDN_URL + "/bldata/bldata.json") | |
} | |
}(this)).then(function(t) { | |
return function(a) { | |
if (!((null != a ? a.domains : void 0) && (null != a ? a.urls : void 0))) throw new InvalidDataError; | |
return t._updateBlData(a), e.checkInterval = a.interval, t._storage.set("bldata", a) | |
} | |
}(this)).then(function(e) { | |
return function() { | |
return honey.logger.debug("Updated blacklisted domains data") | |
} | |
}(this))["catch"](InvalidDataError, function(e) { | |
return function() { | |
return honey.logger.debug("Blacklisted domains data is invalid") | |
} | |
}(this))["catch"](function(e) { | |
return function(e) { | |
return null == e && (e = new Error("unknown")), e.message = "Domains blacklist: " + e.message, honey.logger.error(e) | |
} | |
}(this))["finally"](function(t) { | |
return function() { | |
var a; | |
return delete t._checkingForUpdates, a = honey.util.parsePositiveInt(e.checkInterval, n), u > a ? a = u : a > r && (a = r), t._checkForUpdatesTo = setTimeout(t._checkForUpdates, 1e3 * a), honey.logger.debug("Next domains blacklist update check is in " + Moment.duration(a, "seconds").humanize()) | |
} | |
}(this))) | |
}, e | |
}() | |
}, { | |
"../../../data/bldata": 58, | |
url: 177 | |
}], | |
29: [function(e, t, a) { | |
var bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
t.exports = function() { | |
function e() { | |
this._resetFilters = bind(this._resetFilters, this), this._createListener = bind(this._createListener, this), this._removeListener = bind(this._removeListener, this), this._generateRequest = bind(this._generateRequest, this), this._generateTemplate = bind(this._generateTemplate, this), this._sendRequestToContent = bind(this._sendRequestToContent, this), this._bundleRequest = bind(this._bundleRequest, this), this._stopWatchingListener = bind(this._stopWatchingListener, this), this._startWatchingListener = bind(this._startWatchingListener, this), this._coupons = [], this._currentTabId = null, this._setupDAC = !0, this._headers = {}, this._body = {}, honey.messages.addListener("site_support:startWatching", this._startWatchingListener), honey.messages.addListener("site_support:stopWatching", this._stopWatchingListener) | |
} | |
return e.prototype._startWatchingListener = function(e, t, a) { | |
var o, n, i, r, u; | |
if (t.store.metadata.pns_gDAC) return this._startTime = Date.now(), this._currentTabId = a.tabId, this._store = null != t ? t.store : void 0, this._test = null != t && null != (o = t.store) ? o.pns_gDACtest : void 0, this._coupons = null != t && null != (n = t.coupons) ? n.map(function(e) { | |
return { | |
code: e.code, | |
visible: e.visible | |
} | |
}) : void 0, this._requestFound = !1, Array.isArray(null != t && null != (i = t.store) ? i.partialUrls : void 0) && (null != (r = this._coupons) ? r.length : void 0) ? (u = t.store.partialUrls.map(function(e) { | |
return "*://*." + e + "/*" | |
}), this._resetFilters(u), this._timeOut = Promise.delay(3e5).then(function(e) { | |
return function() { | |
return e._finish("timed_out") | |
} | |
}(this))["catch"](function() {})) : void 0 | |
}, e.prototype._stopWatchingListener = function(e, t, a) { | |
return a.tabId === this._currentTabId ? (this._timeOut && this._timeOut.cancel(), this._removeListeners()) : void 0 | |
}, e.prototype._bundleRequest = function(e) { | |
var t, a; | |
if (!(e.tabId < 0)) return null != e.requestHeaders ? this._headers[e.requestId] = e : this._body[e.requestId] = e, null != this._headers[e.requestId] && null != this._body[e.requestId] ? (a = this._headers[e.requestId], t = this._body[e.requestId], delete this._headers[e.requestId], delete this._body[e.requestId], this._sendRequestToContent(a, t)) : void 0 | |
}, e.prototype._sendRequestToContent = function(e, t) { | |
var a, o; | |
return o = null, this._requestFound || "DELETE" === t.method ? void 0 : (t.tabId === this._currentTabId && (o = this._generateTemplate(e, t)), o ? (a = JSON.stringify(this._generateRequest(o, e, t)), this._test && console.log("** sending template to content - ", a), this._requestFound = !0, honey.storage.local.set("dacRequest", a).then(function() { | |
return honey.messages.send("stores:current:generate_dac", { | |
ready: !0 | |
}, { | |
allTabs: !0 | |
}) | |
})["catch"](function() {})) : void 0) | |
}, e.prototype._generateTemplate = function(e, t) { | |
var a, o, n, i, r, u; | |
return u = null, o = null, r = null != t ? t.requestBody : void 0, o = (a = null != r && null != (n = r.raw) && null != (i = n[0]) ? i.bytes : void 0) ? String.fromCharCode.apply(null, new Uint8Array(a)) : null != (null != r ? r.formData : void 0) ? JSON.stringify(null != r ? r.formData : void 0) : JSON.stringify(t.url), (null != o ? o.match("HONEYNEXTCOUPON") : void 0) && (u = null != (null != r ? r.formData : void 0) ? this._formatFormData(o) : JSON.parse(o)), u | |
}, e.prototype._formatFormData = function(e) { | |
var t, a, o, n, i; | |
t = {}, a = "", n = JSON.parse(e); | |
for (o in n) i = n[o], i instanceof Array ? t[o] = i[0] : t[o] = i; | |
for (o in t) i = t[o], a += a.length > 0 ? "&" + o + "=" + i : o + "=" + i; | |
return t | |
}, e.prototype._generateRequest = function(e, t, a) { | |
var o, n, i, r, u; | |
return i = {}, r = {}, u = null, null != (o = t.requestHeaders) && o.forEach(function(e) { | |
return "User-Agent" !== e.name && "Referer" !== e.name && "Accept-Encoding" !== e.name && "Cookie" !== e.name ? r[e.name] = e.value : void 0 | |
}), this._test && console.log("** template - ", e), (null != (n = this._store.metadata) ? n.pns_gDACjsonContentType : void 0) && (e = JSON.stringify(e)), i = "GET" === a.method ? { | |
type: a.method, | |
contentType: a.type, | |
url: JSON.parse(e), | |
headers: r | |
} : { | |
type: a.method, | |
contentType: a.type, | |
url: a.url, | |
data: e, | |
headers: r | |
} | |
}, e.prototype._removeListener = function() { | |
return honey.webHooks.removeBeforeRequestListener(this._bundleRequest), honey.webHooks.removeBeforeSendHeadersListener(this._bundleRequest) | |
}, e.prototype._createListener = function(e) { | |
return honey.webHooks.addBeforeRequestListener(this._bundleRequest, { | |
urls: e | |
}, ["main_frame"]), honey.webHooks.addBeforeSendHeadersListener(this._bundleRequest, { | |
urls: e | |
}, ["main_frame"]) | |
}, e.prototype._resetFilters = function(e) { | |
return this._removeListener(), this._createListener(e) | |
}, e | |
}() | |
}, {}], | |
30: [function(e, t, a) { | |
var o, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
t.exports = o = function() { | |
function e() { | |
this._b64Encode = bind(this._b64Encode, this), this.getB64FromCDN = bind(this.getB64FromCDN, this), this._onActionMessage = bind(this._onActionMessage, this), honey.messages.addListener("imageloader:action", this._onActionMessage) | |
} | |
return e.prototype._onActionMessage = function(e, t, a) { | |
switch (null != t ? t.action : void 0) { | |
case "getB64FromCDN": | |
return this.getB64FromCDN(null != t ? t.path : void 0); | |
default: | |
throw new InvalidParametersError("action") | |
} | |
}, e.prototype.getB64FromCDN = function(e) { | |
return new Promise(function(t) { | |
return function(a, o) { | |
var n; | |
return n = function() { | |
var t; | |
switch (honey.util.cleanStringLower(null != e && "function" == typeof e.split && null != (t = e.split(".")) ? t.pop() : void 0)) { | |
case "jpg": | |
case "jpeg": | |
return "jpg"; | |
case "png": | |
return "png"; | |
case "svg": | |
return "svg+xml"; | |
default: | |
throw new InvalidParametersError("file_type") | |
} | |
}(), $.ajax({ | |
url: CDN_URL + "/images/" + e, | |
type: "GET", | |
mimeType: "text/plain; charset=x-user-defined" | |
}).done(function(e, o, i) { | |
return a("data:image/" + n + ";base64," + t._b64Encode(e)) | |
}).fail(function(e, t, a) { | |
var n, i; | |
return i = parseInt(null != e ? e.status : void 0) || 0, n = (i + " " + ((null != e ? e.statusText : void 0) || "")).trim(), a = 404 === i ? new NotFoundError(n) : new Error(n), a.data = { | |
status: i, | |
statusText: "undefined" != typeof req && null !== req ? req.statusText : void 0, | |
responseText: "undefined" != typeof req && null !== req ? req.responseText : void 0, | |
responseJSON: "undefined" != typeof req && null !== req ? req.responseJSON : void 0 | |
}, o(a) | |
}) | |
} | |
}(this)) | |
}, e.prototype._b64Encode = function(e) { | |
var t, a, o, n, i, r, u; | |
for (t = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", u = "", i = 0, r = e.length; r > i;) { | |
if (a = 255 & e.charCodeAt(i++), i === r) { | |
u += t.charAt(a >> 2), u += t.charAt((3 & a) << 4), u += "=="; | |
break | |
} | |
if (o = e.charCodeAt(i++), i === r) { | |
u += t.charAt(a >> 2), u += t.charAt((3 & a) << 4 | (240 & o) >> 4), u += t.charAt((15 & o) << 2), u += "="; | |
break | |
} | |
n = e.charCodeAt(i++), u += t.charAt(a >> 2), u += t.charAt((3 & a) << 4 | (240 & o) >> 4), u += t.charAt((15 & o) << 2 | (192 & n) >> 6), u += t.charAt(63 & n) | |
} | |
return u | |
}, e | |
}() | |
}, {}], | |
31: [function(e, t, a) { | |
var o, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
t.exports = o = function() { | |
function e() { | |
this._addInstallCookieData = bind(this._addInstallCookieData, this), this._sendInstallReport = bind(this._sendInstallReport, this), this._onBackgroundInstalledMessage = bind(this._onBackgroundInstalledMessage, this), honey.messages.addListener("background:installed", this._onBackgroundInstalledMessage), Promise.resolve().then(function(e) { | |
return function() { | |
return honey.user.ready | |
} | |
}(this)).then(function(e) { | |
return function() { | |
return honey.storage.local.get("install:pending_report") | |
} | |
}(this)).then(function(e) { | |
return function(t) { | |
return e._sendInstallReport(t) | |
} | |
}(this))["catch"](function() {}) | |
} | |
return e.prototype._onBackgroundInstalledMessage = function(e, t, a) { | |
var o; | |
return "install" === (null != t ? t.reason : void 0) && Promise.resolve().then(function(e) { | |
return function() { | |
return honey.user.ready | |
} | |
}(this)).then(function(e) { | |
return function() { | |
return Promise.all([honey.storage.local.get("install:synced")["catch"](NotFoundError, function() { | |
return !1 | |
}), honey.storage.local.get("install:repeat")["catch"](NotFoundError, function() { | |
return !1 | |
})]) | |
} | |
}(this)).spread(function(e) { | |
return function(t, a) { | |
return "development" !== honey.environment ? Promise.all([e._sendInstallReport({ | |
synced: !!t | |
}), t || a ? void 0 : (honey.tabs.open({ | |
url: "https://www.joinhoney.com/welcome" | |
}), honey.storage.local.set("install:repeat", !0)["catch"](function() {}))]) : void 0 | |
} | |
}(this))["catch"](function() {}), (o = window.localStorage.getItem("user_settings")) && window.localStorage.removeItem("user_settings"), null | |
}, e.prototype._sendInstallReport = function(e, t) { | |
return null == t && (t = 5), this._sendingInstallReport ? this._sendingInstallReport : this._sendingInstallReport = Promise.resolve().then(function(e) { | |
return function() { | |
return honey.user.getLoggedInUser()["catch"](function() {}) | |
} | |
}(this)).then(function(t) { | |
return function() { | |
return Promise.all([honey.user.getExv(), t._addInstallCookieData(e)["catch"](function() {})]) | |
} | |
}(this)).spread(function(t) { | |
return function(t) { | |
return $.ajaxAsync({ | |
type: "POST", | |
url: DATA_API_URL + "/extusers/install", | |
dataType: "json", | |
contentType: "application/json", | |
data: JSON.stringify({ | |
exv: t, | |
synced: e.synced, | |
campaign: e.campaign, | |
visitor_id: e.visitor_id, | |
first_referrer_url: e.first_referrer_url | |
}) | |
}) | |
} | |
}(this)).then(function(e) { | |
return function() { | |
return honey.storage.local.del("install:pending_report")["catch"](function() {}) | |
} | |
}(this))["catch"](function(a) { | |
return function(o) { | |
return t = Math.max(5, Math.min(1800, honey.util.parsePositiveInt(t))), setTimeout(a._sendInstallReport, 1e3 * t, e, 2 * t), honey.storage.local.set("install:pending_report", e)["catch"](function() {}) | |
} | |
}(this))["finally"](function(e) { | |
return function() { | |
return delete e._sendingInstallReport | |
} | |
}(this)) | |
}, e.prototype._addInstallCookieData = function(e) { | |
return Promise.resolve().then(function(e) { | |
return function() { | |
return honey.cookies.getAllForDomain("joinhoney.com") | |
} | |
}(this)).each(function(t) { | |
return function(t) { | |
var a, o, n; | |
try { | |
switch (honey.util.cleanStringLower(null != t ? t.name : void 0)) { | |
case "visitor": | |
return null != e.visitor_id ? e.visitor_id : e.visitor_id = honey.util.cleanString(t.value); | |
case "referrer": | |
return null != e.first_referrer_url ? e.first_referrer_url : e.first_referrer_url = null != (n = JSON.parse(decodeURIComponent(t.value))) ? n.referrer : void 0; | |
case "honeycampaign": | |
if (a = JSON.parse(decodeURIComponent(t.value)), o = honey.util.cleanString(null != a ? a.campaign : void 0)) return null != e.campaign ? e.campaign : e.campaign = { | |
id: o, | |
token: honey.util.cleanString(a.token), | |
track_id: honey.util.cleanString(a.tid) | |
} | |
} | |
} catch (i) {} | |
} | |
}(this)) | |
}, e | |
}() | |
}, {}], | |
32: [function(e, t, a) { | |
var o, n, i, r, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
r = e("socket.io-client"), n = 5, o = 600, t.exports = i = function() { | |
function e() { | |
this.start = bind(this.start, this), this._backoff = n, this._reload_ws = null | |
} | |
return e.prototype.start = function() { | |
return this._reload_ws = r("ws://localhost:35729/livereload"), this._reload_ws.on("connect", function(e) { | |
return function() { | |
return honey.logger.debug("Live reload websocket is listening. Id is " + e._reload_ws.id) | |
} | |
}(this)), this._reload_ws.on("error", function(e) { | |
return function(e) { | |
return honey.logger.error("Live reload websocket error: " + e) | |
} | |
}(this)), this._reload_ws.on("reload", function(e) { | |
return function() { | |
var e; | |
return honey.logger.debug("Live reload signal received: reloading the extension"), "undefined" != typeof chrome && null !== chrome && null != (e = chrome.runtime) && "function" == typeof e.reload ? e.reload() : void 0 | |
} | |
}(this)) | |
}, e | |
}() | |
}, { | |
"socket.io-client": 156 | |
}], | |
33: [function(e, t, a) { | |
"use strict"; | |
function o(e, t) { | |
return $.getAsync(DATA_API_URL + "/v2/products/details/storeId/1/" + t.asin + "?priceHistory=30").then(function(e) { | |
var t = null; | |
return e.priceHistory && e.priceHistory.history && e.priceHistory.history.length > 4 && (t = e.priceHistory.numChanges), t | |
}) | |
} | |
t.exports = function() { | |
honey.messages.addListener("optimus:fetch:product:priceChanges", o) | |
} | |
}, {}], | |
34: [function(e, t, a) { | |
var o, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
t.exports = o = function() { | |
function e() { | |
this._onProductFetcherMessage = bind(this._onProductFetcherMessage, this), honey.messages.addListener("product_fetcher:action", this._onProductFetcherMessage) | |
} | |
return e.prototype._onProductFetcherMessage = function(e, t, a) { | |
switch (null != t ? t.action : void 0) { | |
case "getDesiredIds": | |
return this._getDesiredIds(null != t ? t.data : void 0); | |
default: | |
throw new InvalidParametersError("action") | |
} | |
}, e.prototype._getDesiredIds = function(e) { | |
return (null != e ? e.storeId : void 0) && (null != e ? e.prodIds : void 0) ? honey.user.getExv().then(function(t) { | |
return function(t) { | |
return $.ajaxAsync(STAT_API_URL + "/pr/check", { | |
type: "POST", | |
contentType: "application/json", | |
data: JSON.stringify({ | |
exv: t, | |
ids: e.prodIds, | |
store_id: e.storeId | |
}) | |
}) | |
} | |
}(this)) : Promise.resolve({}) | |
}, e | |
}() | |
}, {}], | |
35: [function(e, t, a) { | |
var o, n, i, r, u, s, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
i = 500, r = 100, u = 10, o = 1, n = [/^current\sstore\sis\snot\sfound$/i, /^failed\sto\ssend\sto\ssdata/i, /^computer\sis\soffline$/i, /chromemethodbfe/i], t.exports = s = function() { | |
function e() { | |
this._camelKeysToSnake = bind(this._camelKeysToSnake, this), this._onBeforeSendHeadersWebHook = bind(this._onBeforeSendHeadersWebHook, this), this._processQueue = bind(this._processQueue, this), this._sendEventImmediately = bind(this._sendEventImmediately, this), this._onStatsEventMessage = bind(this._onStatsEventMessage, this), this.sendException = bind(this.sendException, this), this.sendEvent = bind(this.sendEvent, this); | |
var e; | |
this._queue = [], this._nextSendMoment = Moment(), this._nextErrorSend = Moment(), this._nextSendTimeout = null, honey.messages.addListener("stats:event", this._onStatsEventMessage), e = [STAT_API_URL + "/*"], honey.webHooks.addBeforeSendHeadersListener(this._onBeforeSendHeadersWebHook, { | |
urls: e, | |
blocking: !0 | |
}) | |
} | |
return e.prototype.sendEvent = function(e, t, a) { | |
var o; | |
return o = null != t ? t.store : void 0, Promise.resolve().then(function(e) { | |
return function() { | |
var e, a; | |
return (null != o ? o.id : void 0) && (null != o ? o.sessionId : void 0) ? o : (e = null != o ? o.id : void 0) ? honey.stores.getStoreById(e) : (a = honey.util.cleanString(null != t ? t.referrer_url : void 0)) ? honey.stores.getStoreByUrl(a) : void 0 | |
} | |
}(this))["catch"](function() {}).then(function(a) { | |
return function(a) { | |
var n; | |
if (!(e = honey.util.cleanStringLower(e))) throw new InvalidParametersError("code"); | |
return null == t && (t = {}), t.store = { | |
id: null != a ? a.id : void 0, | |
session_id: null != a ? a.sessionId : void 0, | |
subid1: null != o ? o.subid1 : void 0, | |
subid2: null != o ? o.subid2 : void 0, | |
subid3: null != o ? o.subid3 : void 0 | |
}, null != (n = honey.user) && "function" == typeof n.getSessionId ? n.getSessionId()["catch"](function() {}) : void 0 | |
} | |
}(this)).then(function(o) { | |
return function(n) { | |
var i; | |
return t.session_id = n || 0, i = o._camelKeysToSnake(t), "development" === honey.environment ? (honey.logger.debug("sdata event bypassed (" + honey.environment + "): " + e, i), Promise.resolve()) : (null != a ? a.immediate : void 0) ? o._sendEventImmediately(e, i) : "ext000010" === e ? o.sendException(i) : (i.code = e, o._queue.push(i), o._processQueue()) | |
} | |
}(this))["catch"](function() {}) | |
}, e.prototype.sendException = function(e) { | |
var t, a; | |
return t = null != (a = e.exception) ? a.message : void 0, n.every(function(e) { | |
return function(e) { | |
return !(null != t ? t.match(e) : void 0) | |
} | |
}(this)) && this._nextErrorSend.isBefore() ? (this._sendEventImmediately("ext000010", e), this._nextErrorSend = Moment().add(o, "minutes")) : void 0 | |
}, e.prototype._onStatsEventMessage = function(e, t, a) { | |
return (null != t ? t.code : void 0) ? this.sendEvent(t.code, t.data, t.options) : void 0 | |
}, e.prototype._sendEventImmediately = function(e, t) { | |
return honey.user.getExv().then(function(a) { | |
return function(a) { | |
var o, n; | |
return n = honey.util.cleanString(t.referrer_url), delete t.referrer_url, o = "ext000010" === e ? ERR_API_URL : STAT_API_URL, $.ajaxAsync({ | |
type: "POST", | |
url: o + "/ev/" + e, | |
dataType: "json", | |
contentType: "application/json", | |
headers: { | |
"X-Referer": n | |
}, | |
data: JSON.stringify({ | |
src: "extension", | |
exv: a, | |
event: t | |
}) | |
}) | |
} | |
}(this))["catch"](function(e) { | |
return function(e) {} | |
}(this)) | |
}, e.prototype._processQueue = function() { | |
return this._queue.length > i && (this._queue = this._queue.slice(-i)), this._isSending || !this._queue.length || this._nextSendMoment.isAfter() ? void 0 : (this._isSending = !0, Promise.resolve().then(function(e) { | |
return function() { | |
return honey.user.getExv() | |
} | |
}(this)).then(function(e) { | |
return function(t) { | |
var a; | |
return a = e._queue.splice(0, r), a.length ? $.ajaxAsync({ | |
type: "POST", | |
url: STAT_API_URL + "/evs", | |
dataType: "json", | |
contentType: "application/json", | |
data: JSON.stringify({ | |
src: "extension", | |
exv: t, | |
events: a | |
}) | |
}) : void 0 | |
} | |
}(this))["catch"](function(e) { | |
return function(e) { | |
var t; | |
return honey.logger.error("Failed to send to sdata: " + (null != e && null != (t = e.data) ? t.status : void 0) + " " + ((null != e ? e.message : void 0) || "unknown error")) | |
} | |
}(this))["finally"](function(e) { | |
return function() { | |
return e._isSending = !1, clearTimeout(e._nextSendTimeout), e._nextSendMoment = Moment().add(u, "seconds"), e._nextSendTimeout = setTimeout(e._processQueue, 100 + 1e3 * u) | |
} | |
}(this))) | |
}, e.prototype._onBeforeSendHeadersWebHook = function(e) { | |
var t, a, o, n, i, r, u, s; | |
for (r = -1, i = -1, s = e.requestHeaders, a = o = 0, n = s.length; n > o; a = ++o) switch (t = s[a], honey.util.cleanStringLower(t.name)) { | |
case "referer": | |
r = a; | |
break; | |
case "x-honey-stats-referer": | |
i = a | |
} | |
return 0 > i ? void 0 : (u = s[i].value, s.splice(i, 1), r >= 0 ? s[r].value = u : s.push({ | |
name: "Referer", | |
value: u | |
}), { | |
requestHeaders: s | |
}) | |
}, e.prototype._camelKeysToSnake = function(e) { | |
var t; | |
return t = {}, Object.keys(e).forEach(function(a) { | |
return function(o) { | |
var n, i, r; | |
return r = e[o], n = o.replace(/[a-z][A-Z]/, function(e) { | |
return e[0] + "_" + e[1] | |
}).toLowerCase(), r && "object" == typeof r && !Array.isArray(r) ? (i = a._camelKeysToSnake(r), t[n] = i) : Array.isArray(r) ? t[n] = r.slice() : t[n] = r | |
} | |
}(this)), t | |
}, e | |
}() | |
}, {}], | |
36: [function(e, t, a) { | |
var bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
t.exports = function() { | |
function e() { | |
this._resetFilters = bind(this._resetFilters, this), this._createListener = bind(this._createListener, this), this._removeListener = bind(this._removeListener, this), this._onBeforeRequest = bind(this._onBeforeRequest, this), this._finish = bind(this._finish, this), this._stopWatchingListener = bind(this._stopWatchingListener, this), this._startWatchingListener = bind(this._startWatchingListener, this), this._coupons = [], this._currentTabId = null, this._setupDAC = !0, honey.messages.addListener("site_support:startWatching", this._startWatchingListener), honey.messages.addListener("site_support:stopWatching", this._stopWatchingListener) | |
} | |
return e.prototype._startWatchingListener = function(e, t, a) { | |
var o, n, i, r; | |
return this._startTime = Date.now(), this._currentTabId = a.tabId, this._store = null != t ? t.store : void 0, this._coupons = null != t && null != (o = t.coupons) ? o.map(function(e) { | |
return { | |
code: e.code, | |
tested: !1 | |
} | |
}) : void 0, Array.isArray(null != t && null != (n = t.store) ? n.partialUrls : void 0) && (null != (i = this._coupons) ? i.length : void 0) ? (r = t.store.partialUrls.map(function(e) { | |
return "*://*." + e + "/*" | |
}), this._resetFilters(r), this._timeOut = Promise.delay(3e5).then(function(e) { | |
return function() { | |
return e._finish("timed_out") | |
} | |
}(this))["catch"](function() {})) : void 0 | |
}, e.prototype._stopWatchingListener = function(e, t, a) { | |
return a.tabId === this._currentTabId ? (this._timeOut && this._timeOut.cancel(), this._finish("complete")) : void 0 | |
}, e.prototype._finish = function(e) { | |
var t; | |
return null == e && (e = "complete"), this._removeListener(), this._currentTabId = null, t = 0, this._coupons.forEach(function(e) { | |
return e.tested ? t++ : void 0 | |
}), honey.stats.sendEvent("ext003012", { | |
total_codes: this._coupons.length, | |
codes_seen: t, | |
status: e, | |
duration_sec: (Date.now() - this._startTime) / 1e3, | |
coupons: this._coupons, | |
store: { | |
id: this._store.id | |
} | |
}) | |
}, e.prototype._onBeforeRequest = function(e) { | |
var t, a, o, n, i, r, u, s, c, l; | |
if (e.tabId === this._currentTabId) { | |
for (a = (t = null != e && null != (r = e.requestBody) && null != (u = r.raw) && null != (s = u[0]) ? s.bytes : void 0) ? String.fromCharCode.apply(null, new Uint8Array(t)) : JSON.stringify(null != e ? e.requestBody : void 0), c = this._coupons, l = [], n = 0, i = c.length; i > n; n++) o = c[n], e.url.match(o.code) || (null != a ? a.match(o.code) : void 0) ? (o.tested = !0, l.push(null != o.method ? o.method : o.method = e.method)) : l.push(void 0); | |
return l | |
} | |
}, e.prototype._removeListener = function() { | |
return honey.webHooks.removeBeforeRequestListener(this._onBeforeRequest) | |
}, e.prototype._createListener = function(e) { | |
return honey.webHooks.addBeforeRequestListener(this._onBeforeRequest, e, ["main_frame"]) | |
}, e.prototype._resetFilters = function(e) { | |
return this._removeListener(), this._createListener(e) | |
}, e | |
}() | |
}, {}], | |
37: [function(e, t, a) { | |
var o, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
t.exports = o = function() { | |
function e() { | |
this.getAllIds = bind(this.getAllIds, this), this.getAll = bind(this.getAll, this), this.get = bind(this.get, this), this.close = bind(this.close, this), this.openFBAuthWindow = bind(this.openFBAuthWindow, this), this.open = bind(this.open, this), this._onPageLoadMessage = bind(this._onPageLoadMessage, this), this._onTabsActionMessage = bind(this._onTabsActionMessage, this), honey.messages.addListener("tabs:action", this._onTabsActionMessage), honey.messages.addListener("page:load", this._onPageLoadMessage), this._delayedOpen = {} | |
} | |
var t; | |
return e.prototype._onTabsActionMessage = function(e, t, a) { | |
switch (null != t ? t.action : void 0) { | |
case "open": | |
return this.open(t.data); | |
default: | |
throw new InvalidParametersError("action") | |
} | |
}, e.prototype._onPageLoadMessage = function(e, t, a) { | |
var o; | |
return (o = this._delayedOpen[a.tabId]) ? (delete this._delayedOpen[a.tabId], honey.messages.send("ui:action", { | |
action: "open", | |
data: o | |
}, { | |
tab: a.tabId | |
})) : void 0 | |
}, e.prototype.open = function(e) { | |
var t, a; | |
if (!(a = null != e && null != (t = e.url) && "function" == typeof t.trim ? t.trim() : void 0)) throw new InvalidParametersError("url"); | |
return honey._native.tabs.open({ | |
url: a, | |
active: "active" in e ? !!e.active : !0 | |
}).then(function(t) { | |
return function(a) { | |
var o; | |
return (o = null != e ? e.extensionState : void 0) && (t._delayedOpen[a] = o), a | |
} | |
}(this)) | |
}, t = "https://www.facebook.com/v2.5/dialog/oauth?response_type=code&scope=public_profile%2Cemail%2Cuser_friends&display=popup&redirect_uri=https%3A%2F%2Fd.joinhoney.com%2Flogin%2Ffb&client_id=1551397998523315", e.prototype.openFBAuthWindow = function() { | |
var e; | |
if (e = t, !(e = null != e && "function" == typeof e.trim ? e.trim() : void 0)) throw new InvalidParametersError("url"); | |
return honey._native.tabs.openFBAuthWindow(e) | |
}, e.prototype.close = function(e) { | |
if (!e) throw new InvalidParametersError("tabId"); | |
return honey._native.tabs.close(e) | |
}, e.prototype.get = function(e) { | |
if (!e) throw new InvalidParametersError("tabId"); | |
return honey._native.tabs.get(e) | |
}, e.prototype.getAll = function() { | |
return honey._native.tabs.getAll() | |
}, e.prototype.getAllIds = function() { | |
return honey._native.tabs.getAllIds() | |
}, e | |
}() | |
}, {}], | |
38: [function(e, t, a) { | |
var o, n, i, r, u, s, c, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}, | |
l = function(e, t) { | |
function a() { | |
this.constructor = e | |
} | |
for (var o in t) m.call(t, o) && (e[o] = t[o]); | |
return a.prototype = t.prototype, e.prototype = new a, e.__super__ = t.prototype, e | |
}, | |
m = {}.hasOwnProperty; | |
s = 180, o = "pns_merchcoupon", i = "Facebook's being fussy. If you created your Facebook account with a phone number, add your email and try again. Or join with your email below :)", n = [1, 2, 3], r = "https://www.facebook.com/tr?id=454105921439264&ev=ExtensionActive", u = "https://www.facebook.com/tr?id=878703805520439&ev=ExtensionActive", t.exports = c = function(e) { | |
function t() { | |
this.engageExclusive = bind(this.engageExclusive, this), this.rewardExclusive = bind(this.rewardExclusive, this), this.onboardingDemoClose = bind(this.onboardingDemoClose, this), this.onboardingStatus = bind(this.onboardingStatus, this), this.onboardingProgress = bind(this.onboardingProgress, this), this.initOnboarding = bind(this.initOnboarding, this), this.setHasAgreedToAttribution = bind(this.setHasAgreedToAttribution, this), this.getHasAgreedToAttribution = bind(this.getHasAgreedToAttribution, this), this.getSessionId = bind(this.getSessionId, this), this._startSession = bind(this._startSession, this), this._onPageLoad = bind(this._onPageLoad, this), this._onUserActionMessage = bind(this._onUserActionMessage, this), this._checkUpgradeDeviceId = bind(this._checkUpgradeDeviceId, this), this._checkUpgradeUserId = bind(this._checkUpgradeUserId, this), t.__super__.constructor.apply(this, arguments), honey.messages.addListener("page:load", this._onPageLoad), honey.messages.addListener("user:action", this._onUserActionMessage), this.ready = Promise.all([this._checkUpgradeUserId(), this._checkUpgradeDeviceId()].map(function(e) { | |
return e.reflect() | |
})), honey.ready.then(function(e) { | |
return function() { | |
return e._startSession() | |
} | |
}(this)) | |
} | |
return l(t, e), t.prototype.updateSettings = function(e) { | |
return $.ajaxAsync({ | |
url: DATA_API_URL + "/users", | |
contentType: "application/json", | |
data: JSON.stringify({ | |
settings: e | |
}), | |
type: "PATCH" | |
}).then(function(e) { | |
return function() { | |
var t; | |
return e.getLoggedInUser(t = !0) | |
} | |
}(this))["catch"](function() {}) | |
}, t.prototype._checkUpgradeUserId = function() { | |
return Promise.resolve().then(function(e) { | |
return function() { | |
return e._storageLocal.get("id")["catch"](NotFoundError, function() { | |
return null | |
}) | |
} | |
}(this)).then(function(e) { | |
return function(t) { | |
if ("string" == typeof t && honey.util.parsePositiveInt(t)) throw new OperationSkippedError; | |
return e._storageSync.get("id")["catch"](NotFoundError, function() { | |
return null | |
})["catch"](UnavailableError, function() { | |
return null | |
}) | |
} | |
}(this)).then(function(e) { | |
return function(e) { | |
return "string" == typeof e && honey.util.parsePositiveInt(e) ? honey.storage.local.set("install:synced", !0)["catch"](function() {}).then(function() { | |
return e | |
}) : honey.storage.sync.get("honey_userID", { | |
raw: !0 | |
})["catch"](UnavailableError, function() { | |
throw new NotFoundError | |
}) | |
} | |
}(this))["catch"](NotFoundError, function(e) { | |
return function() { | |
var e, t, a, o; | |
try { | |
if (e = decodeURIComponent(window.localStorage.getItem("savehoney_userID")) || decodeURIComponent(window.localStorage.getItem("honey_userID")), t = null != e && "function" == typeof e.match && null != (a = e.match(/^\s*(\d+)\s*$/)) ? a[1] : void 0) return t; | |
if (t = null != e && "function" == typeof e.match && null != (o = e.match(/^\s*\"\s*(\d+)\s*\"\s*$/)) ? o[1] : void 0) return t | |
} catch (n) {} | |
return null | |
} | |
}(this)).then(function(e) { | |
return function(t) { | |
return t = "string" == typeof t && !t.match(/000$/) && honey.util.parsePositiveInt(t) ? honey.util.cleanString(t) || honey.util.createId() : honey.util.createId(), Promise.all([e._storageLocal.set("id", t).reflect(), e._storageSync.set("id", t).reflect()]) | |
} | |
}(this))["catch"](OperationSkippedError, function(e) { | |
return function() {} | |
}(this)) | |
}, t.prototype._checkUpgradeDeviceId = function() { | |
return Promise.resolve().then(function(e) { | |
return function() { | |
return e._storageLocal.get("device-id")["catch"](NotFoundError, function() { | |
return null | |
}) | |
} | |
}(this)).then(function(e) { | |
return function(e) { | |
var t, a, o; | |
if ("string" == typeof e && honey.util.parsePositiveInt(e)) throw new OperationSkippedError; | |
try { | |
if (e = window.localStorage.getItem("pns_deviceID"), | |
t = null != e && "function" == typeof e.match && null != (a = e.match(/^\s*(\d+)\s*$/)) ? a[1] : void 0) return t; | |
if (t = null != e && "function" == typeof e.match && null != (o = e.match(/^\s*\"\s*(\d+)\s*\"\s*$/)) ? o[1] : void 0) return t | |
} catch (n) {} | |
return null | |
} | |
}(this))["catch"](NotFoundError, function(e) { | |
return function() { | |
return null | |
} | |
}(this)).then(function(e) { | |
return function(t) { | |
return t = "string" == typeof t && !t.match(/000$/) && honey.util.parsePositiveInt(t) ? honey.util.cleanString(t) || honey.util.createId() : honey.util.createId(), e._storageLocal.set("device-id", t) | |
} | |
}(this))["catch"](OperationSkippedError, function(e) { | |
return function() {} | |
}(this)) | |
}, t.prototype._onUserActionMessage = function(e, t, a) { | |
var o, n, i, r, u, s, c, l, m, p, h, d, g; | |
switch (null != t ? t.action : void 0) { | |
case "getLoggedInUser": | |
return this.getLoggedInUser(null != (o = t.data) ? o.fetch : void 0); | |
case "fbAuth": | |
return this.fbAuth(); | |
case "getSessionId": | |
return this.getSessionId(); | |
case "logout": | |
return this.logout(); | |
case "login": | |
return this.login(null != (n = t.data) ? n.email : void 0, null != (s = t.data) ? s.password : void 0); | |
case "register": | |
return this.register(null != (c = t.data) ? c.email : void 0, null != (l = t.data) ? l.password : void 0); | |
case "edit": | |
return this.edit(t.data); | |
case "resetPwd": | |
return this.resetPwd(null != (m = t.data) ? m.email : void 0); | |
case "updateSettings": | |
return this.updateSettings(null != (p = t.data) ? p.settings : void 0); | |
case "updateLocalSettings": | |
return this.updateLocalSettings(null != (h = t.data) ? h.settings : void 0); | |
case "getHasAgreedToAttribution": | |
return this.getHasAgreedToAttribution(null != (d = t.data) ? d.userId : void 0); | |
case "setHasAgreedToAttribution": | |
return this.setHasAgreedToAttribution(null != (g = t.data) ? g.userId : void 0); | |
case "initOnboarding": | |
return this.initOnboarding(); | |
case "onboardingProgress": | |
return this.onboardingProgress(null != (i = t.data) ? i.step : void 0); | |
case "onboardingStatus": | |
return this.onboardingStatus(); | |
case "onboardingDemoClose": | |
return this.onboardingDemoClose(); | |
case "rewardExclusive": | |
return this.rewardExclusive(null != (r = t.data) ? r.storeId : void 0); | |
case "engageExclusive": | |
return this.engageExclusive(null != (u = t.data) ? u.exclusiveId : void 0); | |
default: | |
throw new InvalidParametersError("action") | |
} | |
}, t.prototype.fbAuth = function() { | |
return honey.tabs.openFBAuthWindow().then(function() { | |
return honey.user.getLoggedInUser() | |
})["catch"](function() { | |
return honey.user.getLoggedInUser() | |
})["catch"](function() { | |
throw new Error(i) | |
}) | |
}, t.prototype._onPageLoad = function() { | |
return Promise.resolve().then(function(e) { | |
return function() { | |
var t; | |
return (null != (t = e._session) ? t.expires : void 0) > Moment().unix() ? e._session.expires = Moment().add(s, "minutes").unix() : e._startSession() | |
} | |
}(this)).then(function(e) { | |
return function() { | |
return e._storageLocal.get("ping")["catch"](function() { | |
return 0 | |
}) | |
} | |
}(this)).then(function(e) { | |
return function(e) { | |
if (Moment.unix(e).isAfter(Moment().subtract(6, "hour"))) throw new OperationSkippedError; | |
honey.stats.sendEvent("ext000001"), $.getAsync(r)["catch"](function() {}), $.getAsync(u)["catch"](function() {}) | |
} | |
}(this)).then(function(e) { | |
return function() { | |
return e._storageLocal.set("ping", Moment().unix()) | |
} | |
}(this)).then(function(e) { | |
return function() { | |
return e._storageLocal.get("migrated")["catch"](NotFoundError, function() {}) | |
} | |
}(this)).then(function(e) { | |
return function(t) { | |
return t ? void 0 : e._storageLocal.get("trackPageViews").then(function(e) { | |
return $.ajaxAsync({ | |
url: DATA_API_URL + "/users", | |
data: { | |
data: { | |
settings: e | |
} | |
}, | |
type: "PATCH" | |
}) | |
}).then(function() { | |
return Promise.all([e._storageLocal.del("trackPageViews"), e._storageLocal.del("trackProductViews")["catch"](function() {}), e._storageLocal.set("migrated", !0)]) | |
})["catch"](NotFoundError, function() {})["catch"](function(e) { | |
return console.error("Error migrating settings " + (null != e ? e.stack : void 0)) | |
}) | |
} | |
}(this))["catch"](OperationSkippedError, function() {}) | |
}, t.prototype._startSession = function() { | |
var e; | |
return this._session = { | |
id: Moment().valueOf(), | |
expires: Moment().add(s, "minutes").unix() | |
}, e = [], e.push(this.getLoggedInUser()["catch"](function(e) { | |
return function() {} | |
}(this))), e.push(honey.messages.send("user:session:started", { | |
sessionId: this._session.id | |
}, { | |
allTabs: !0, | |
background: !0, | |
ignoreResponse: !0 | |
})), e.push(honey.stats.sendEvent("ext005001")), Promise.all(e.map(function(e) { | |
return function(e) { | |
return e.reflect() | |
} | |
}(this))).then(function(e) { | |
return function() { | |
return e._session.id | |
} | |
}(this)) | |
}, t.prototype.getLoggedInUser = function(e) { | |
var t; | |
return null == e && (e = !0), e ? (t = null, Promise.all([$.getAsync(DATA_API_URL + "/users"), this._storageLocal.get("id")["catch"](NotFoundError, function(e) { | |
return function() {} | |
}(this))]).spread(function(a) { | |
return function(o, n) { | |
var i; | |
return e && a._storageLocal.set("user", o), (null != (i = t = o) ? i.id : void 0) && (null != t ? t.id : void 0) !== n ? Promise.all([a._storageLocal.set("user", t), a._storageLocal.set("id", null != t ? t.id : void 0), a._storageSync.set("id", null != t ? t.id : void 0)]) : void 0 | |
} | |
}(this)).then(function(e) { | |
return function() { | |
return honey.messages.send("user:current:update", { | |
user: t | |
}, { | |
allTabs: !0, | |
ignoreResponse: !0 | |
}), t || function() { | |
throw new UnauthorizedError | |
}() | |
} | |
}(this))) : this._storageLocal.get("user") | |
}, t.prototype.getSessionId = function() { | |
var e, t; | |
return (null != (e = this._session) ? e.id : void 0) && (null != (t = this._session) ? t.expires : void 0) > Moment().unix() ? Promise.resolve(this._session.id) : this._startSession() | |
}, t.prototype.getHasAgreedToAttribution = function(e) { | |
return this._storageLocal.get("agreedToAttribution-" + e)["catch"](NotFoundError, function() { | |
return !1 | |
}) | |
}, t.prototype.setHasAgreedToAttribution = function(e) { | |
return this._storageLocal.set("agreedToAttribution-" + e, !0) | |
}, t.prototype.initOnboarding = function() { | |
return $.postAsync(DATA_API_URL + "/onboarding") | |
}, t.prototype.onboardingProgress = function(e) { | |
return $.ajaxAsync({ | |
type: "PATCH", | |
url: DATA_API_URL + "/onboarding?step=" + e | |
}).then(function(e) { | |
return function(e) { | |
return honey.messages.send("user:onboarding:update", { | |
onboarding: e | |
}, { | |
allTabs: !0, | |
ignoreResponse: !0 | |
}), e | |
} | |
}(this))["catch"](function() {}) | |
}, t.prototype.onboardingStatus = function() { | |
return $.getAsync(DATA_API_URL + "/onboarding").then(function(e) { | |
return function(e) { | |
return honey.messages.send("user:onboarding:update", { | |
onboarding: e | |
}, { | |
allTabs: !0, | |
ignoreResponse: !0 | |
}), e | |
} | |
}(this)) | |
}, t.prototype.onboardingDemoClose = function() { | |
return honey.messages.send("onboarding:demo:close", {}, { | |
allTabs: !0 | |
}) | |
}, t.prototype.rewardExclusive = function(e) { | |
return $.postAsync(DATA_API_URL + "/gift/show", { | |
storeId: e | |
}).then(function(e) { | |
return function(e) { | |
return e | |
} | |
}(this))["catch"](function() {}) | |
}, t.prototype.engageExclusive = function(e) { | |
return $.postAsync(DATA_API_URL + "/gift/engage", { | |
exclusiveId: e | |
}).then(function(e) { | |
return function(e) { | |
return e | |
} | |
}(this))["catch"](function() {}) | |
}, t | |
}(e("../../base/user")) | |
}, { | |
"../../base/user": 42 | |
}], | |
39: [function(e, t, a) { | |
var o, n, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}, | |
i = [].indexOf || function(e) { | |
for (var t = 0, a = this.length; a > t; t++) | |
if (t in this && this[t] === e) return t; | |
return -1 | |
}; | |
o = ["BeforeRequest", "BeforeSendHeaders", "SendHeaders", "HeadersReceived", "AuthRequired", "BeforeRedirect", "ResponseStarted", "Complete", "ErrorOccurred"], t.exports = n = function() { | |
function e() { | |
this.removeAllNonCoreListeners = bind(this.removeAllNonCoreListeners, this), this._removeListener = bind(this._removeListener, this), this._addListener = bind(this._addListener, this), this._listeners = {}, o.forEach(function(e) { | |
return function(t) { | |
return e._listeners[t] = [], Object.defineProperty(e, "add" + t + "Listener", { | |
value: function(a, o) { | |
return e._addListener(t, a, o, !1) | |
} | |
}), Object.defineProperty(e, "add" + t + "CoreListener", { | |
value: function(a, o) { | |
return e._addListener(t, a, o, !0) | |
} | |
}), Object.defineProperty(e, "remove" + t + "Listener", { | |
value: function(a) { | |
return e._removeListener(t, a) | |
} | |
}) | |
} | |
}(this)) | |
} | |
return e.prototype._addListener = function(e, t, a, o) { | |
if ("function" != typeof t) throw new InvalidParametersError("listener"); | |
return honey._native.webHooks["add" + e + "Listener"](t, a), o || i.call(this._listeners[e], t) >= 0 ? void 0 : this._listeners[e].push(t) | |
}, e.prototype._removeListener = function(e, t) { | |
var a; | |
return honey._native.webHooks["remove" + e + "Listener"](t), (a = this._listeners[e].indexOf(t)) >= 0 ? this._listeners[e].splice(a, 1) : void 0 | |
}, e.prototype.removeAllNonCoreListeners = function() { | |
var e, t, a, o, n, i, r; | |
n = 0, i = this._listeners; | |
for (r in i) { | |
for (o = i[r], e = 0, t = o.length; t > e; e++) a = o[e], honey._native.webHooks["remove" + r + "Listener"](a), ++n; | |
this._listeners[r] = [] | |
} | |
return n | |
}, e | |
}() | |
}, {}], | |
40: [function(e, t, a) { | |
"use strict"; | |
function o(e, t) { | |
var a = void 0; | |
if ("object" === ("undefined" == typeof t ? "undefined" : n(t))) switch (t.action) { | |
case "makeGrouponRequest": | |
a = $.getAsync(t.data.reqUrl); | |
break; | |
default: | |
throw new InvalidParametersError("action") | |
} | |
return a | |
} | |
var n = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { | |
return typeof e | |
} : function(e) { | |
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e | |
}; | |
t.exports = function() { | |
honey.messages.addListener("yelp:action", o) | |
} | |
}, {}], | |
41: [function(e, t, a) { | |
Promise = e("bluebird"), window.Moment = e("moment"), window.CryptoJS = e("browserify-cryptojs"), e("browserify-cryptojs/components/enc-base64"), e("browserify-cryptojs/components/md5"), e("browserify-cryptojs/components/sha1"), e("browserify-cryptojs/components/sha256"), e("browserify-cryptojs/components/cipher-core"), e("browserify-cryptojs/components/aes"), Promise.config({ | |
longStackTraces: "development" === honey.environment, | |
cancellation: !0, | |
warnings: { | |
wForgottenReturn: !1 | |
} | |
}), honey.ready = Promise.resolve().then(function() { | |
var t, a; | |
return e("../shared"), t = { | |
button: e("./button"), | |
cookies: e("./cookies"), | |
tabs: e("./tabs"), | |
webHooks: e("./web_hooks"), | |
adbBp: e("./adb_bp"), | |
ckBp: e("./ck_bp"), | |
confirmation: e("./confirmation"), | |
domainBlacklist: e("./domain_blacklist"), | |
productFetcher: e("./product_fetcher"), | |
imageLoader: e("./image_loader"), | |
stats: e("./stats"), | |
stores: e("./Stores")["default"], | |
user: e("./user"), | |
storeSupport: e("./store_support"), | |
generatedDAC: e("./generated_dac"), | |
ajax: e("./ajax"), | |
cartDetector: e("./cart_detector")["default"], | |
yelp: e("./yelp"), | |
optimus: e("./optimus") | |
}, a = Object.keys(t).map(function(e) { | |
return function(e) { | |
return Promise["try"](function() { | |
return (honey[e] = new t[e]).ready | |
}).reflect() | |
} | |
}(this)), new(e("./install")), a | |
}).map(function(e) { | |
return e.isFulfilled() ? void 0 : honey.logger.error(e.reason()) | |
}).then(function() { | |
return honey.webHooks.addBeforeSendHeadersListener(function(e) { | |
return function(e) { | |
var t; | |
return t = e.requestHeaders, t.push({ | |
name: "X-Honey", | |
value: honey.version.toString() | |
}), { | |
requestHeaders: t | |
} | |
} | |
}(this), { | |
urls: ["https://*.joinhoney.com/*", "http://*.joinhoney.com/*"], | |
blocking: !0 | |
}) | |
}).then(function() { | |
return "ch" === honey.platform && "development" === honey.environment && (new(e("./live_reload"))).start(), honey.messages.send("background:started", {}, { | |
background: !0, | |
allTabs: !0, | |
ignoreResponse: !0 | |
})["catch"](function(e) { | |
return honey.logger.error(e.name + ": e.message") | |
}) | |
}).then(function() { | |
return honey.logger.debug("Honey " + honey.version + " background script is ready") | |
})["catch"](function(e) { | |
throw honey.logger.error(e.name + ": e.message"), e | |
}), "development" !== honey.environment && honey._native.globalEvents.setUninstallURL("https://www.joinhoney.com/uninstall"), honey._native.globalEvents.addOnInstallListener(function(e) { | |
return honey.ready.then(function(t) { | |
return function() { | |
return honey.messages.send("background:installed", e, { | |
background: !0, | |
allTabs: !0, | |
ignoreResponse: !0 | |
})["catch"](function(e) { | |
return honey.logger.error(e.name + ": e.message") | |
}) | |
} | |
}(this)) | |
}) | |
}, { | |
"../shared": 45, | |
"./Stores": 9, | |
"./adb_bp": 13, | |
"./ajax": 16, | |
"./button": 17, | |
"./cart_detector": 18, | |
"./ck_bp": 19, | |
"./confirmation": 26, | |
"./cookies": 27, | |
"./domain_blacklist": 28, | |
"./generated_dac": 29, | |
"./image_loader": 30, | |
"./install": 31, | |
"./live_reload": 32, | |
"./optimus": 33, | |
"./product_fetcher": 34, | |
"./stats": 35, | |
"./store_support": 36, | |
"./tabs": 37, | |
"./user": 38, | |
"./web_hooks": 39, | |
"./yelp": 40, | |
bluebird: 81, | |
"browserify-cryptojs": 89, | |
"browserify-cryptojs/components/aes": 83, | |
"browserify-cryptojs/components/cipher-core": 84, | |
"browserify-cryptojs/components/enc-base64": 85, | |
"browserify-cryptojs/components/md5": 86, | |
"browserify-cryptojs/components/sha1": 87, | |
"browserify-cryptojs/components/sha256": 88, | |
moment: 132 | |
}], | |
42: [function(e, t, a) { | |
var o, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
t.exports = o = function() { | |
function e() { | |
this.resetPwd = bind(this.resetPwd, this), this.getExv = bind(this.getExv, this), this._storageLocal = honey.storage.local.prefixed("user"), this._storageSync = honey.storage.sync.prefixed("user") | |
} | |
return e.prototype.getUserId = function() { | |
return this._storageLocal.get("id")["catch"](NotFoundError, function(e) { | |
return function() { | |
return honey.util.createId() | |
} | |
}(this)) | |
}, e.prototype.getDeviceId = function() { | |
return this._storageLocal.get("device-id")["catch"](NotFoundError, function(e) { | |
return function() { | |
return honey.util.createId() | |
} | |
}(this)) | |
}, e.prototype.updateLocalSettings = function(e) { | |
return this._storageLocal.get("user").then(function(t) { | |
return function(a) { | |
var o, n, i; | |
for (o in e) i = e[o], null != (n = a.settings) && (n[o] = i); | |
return t._storageLocal.set("user", a) | |
} | |
}(this)) | |
}, e.prototype.edit = function(e) { | |
return Promise["try"](function(t) { | |
return function() { | |
return $.ajaxAsync({ | |
type: "PATCH", | |
url: DATA_API_URL + "/users", | |
data: e | |
}) | |
} | |
}(this)).then(function(e) { | |
return function(e) { | |
return honey.messages.send("user:current:update", { | |
user: e | |
}, { | |
allTabs: !0, | |
ignoreResponse: !0 | |
}), e || function() { | |
throw new NotFoundError | |
}() | |
} | |
}(this)) | |
}, e.prototype.register = function(e, t) { | |
return this.getExv().then(function(a) { | |
return function(a) { | |
return $.postAsync(DATA_API_URL + "/extusers", { | |
email: e, | |
password: t, | |
v: a | |
}) | |
} | |
}(this)).then(function(e) { | |
return function(t) { | |
var a; | |
return honey.messages.send("user:current:update", { | |
user: t | |
}, { | |
allTabs: !0, | |
ignoreResponse: !0 | |
}), null != (a = honey.stats) && a.sendEvent("usr001001", { | |
register_source: "extension" | |
})["catch"](function() {}), e._storageLocal.set("id", t.id), t | |
} | |
}(this)) | |
}, e.prototype.login = function(e, t) { | |
return this.getExv().then(function(a) { | |
return function(a) { | |
return $.postAsync(DATA_API_URL + "/extusers/login", { | |
username: e, | |
password: t, | |
v: a | |
}) | |
} | |
}(this)).then(function(e) { | |
return function(t) { | |
var a; | |
return honey.messages.send("user:current:update", { | |
user: t | |
}, { | |
allTabs: !0, | |
ignoreResponse: !0 | |
}), null != (a = honey.stats) && a.sendEvent("usr001002")["catch"](function() {}), e._storageLocal.set("user", t), e._storageLocal.set("id", null != t ? t.id : void 0), e._storageSync.set("id", null != t ? t.id : void 0), t | |
} | |
}(this)) | |
}, e.prototype.logout = function() { | |
return $.postAsync(DATA_API_URL + "/extusers/logout").then(function(e) { | |
return function(t) { | |
return e._storageLocal.del("user") | |
} | |
}(this)).then(function(e) { | |
return function() { | |
var e; | |
return honey.messages.send("user:current:update", { | |
user: null | |
}, { | |
allTabs: !0, | |
ignoreResponse: !0 | |
}), null != (e = honey.stats) && e.sendEvent("usr001003")["catch"](function() {}), !0 | |
} | |
}(this)) | |
}, e.prototype.getExv = function() { | |
return Promise.all(["function" == typeof this.getUserId ? this.getUserId()["catch"](function() { | |
return "0" | |
}) : void 0, "function" == typeof this.getDeviceId ? this.getDeviceId()["catch"](function() { | |
return "0" | |
}) : void 0]).spread(function(e) { | |
return function(e, t) { | |
var a, o; | |
return a = [honey.platform, (null != (o = honey.version) && "function" == typeof o.toString ? o.toString() : void 0) || "0.0.0", e, t].join(".") | |
} | |
}(this)) | |
}, e.prototype.resetPwd = function(e) { | |
return $.postAsync(DATA_API_URL + "/request", { | |
type: "send_password_reset_email", | |
email: e | |
}).then(function(e) { | |
return e | |
}) | |
}, e | |
}() | |
}, {}], | |
43: [function(e, t, a) { | |
var o, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
t.exports = o = function() { | |
function e() { | |
this.copy = bind(this.copy, this) | |
} | |
return e.prototype.isAvailable = function() { | |
return honey._native.clipboard.isAvailable() | |
}, e.prototype.copy = function(e) { | |
return honey._native.clipboard.copy(e) | |
}, e | |
}() | |
}, {}], | |
44: [function(e, t, a) { | |
var o, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
t.exports = o = function() { | |
function e() { | |
this.get = bind(this.get, this), this.set = bind(this.set, this), this._storageLocal = honey.storage.local.prefixed("config"), this._storageSync = honey.storage.sync.prefixed("config") | |
} | |
return e.prototype.set = function(e, t, a) { | |
var o; | |
return o = (null != a ? a.local : void 0) ? this._storageLocal : this._storageSync, o.set(e, t) | |
}, e.prototype.get = function(e) { | |
return Promise.resolve().then(function(t) { | |
return function() { | |
return t._storageLocal.get(e) | |
} | |
}(this))["catch"](NotFoundError, function(t) { | |
return function() { | |
return t._storageSync.get(e) | |
} | |
}(this)) | |
}, e | |
}() | |
}, {}], | |
45: [function(e, t, a) { | |
var o, n; | |
o = e("@honeyscience/honey-errors"), n = new(e("./util")), window.DATA_API_URL ? honey.logger.debug("DATA_API_URL already set, skipping shared loading") : (window.DATA_API_URL = window.env.DATA_API_URL || "https://d.joinhoney.com", window.STAT_API_URL = window.env.STAT_API_URL || "https://s.joinhoney.com", window.ERR_API_URL = window.env.ERR_API_URL || "https://err.joinhoney.com", window.WEB_URL = window.env.WEB_URL || "https://www.joinhoney.com", window.CDN_URL = window.env.CDN_URL || "https://cdn.joinhoney.com", window.$ = e("jquery"), $.readyAsync = new Promise(function(e) { | |
return $(function() { | |
return e() | |
}) | |
}), window.Version = e("./version"), honey.version = new window.Version(honey.version), Promise.onPossiblyUnhandledRejection(function(e) { | |
var t; | |
return null != (t = honey.logger) ? t.error(e) : void 0 | |
}), ["ajax", "get", "post"].map(function(e) { | |
return $[e + "Async"] = function() { | |
var t; | |
return Promise.resolve(t = $[e].apply(this, arguments))["catch"](Promise.TimeoutError, Promise.CancellationError, function(e) { | |
throw t.abort(), e | |
})["catch"](function(e) { | |
var t, a, n, i, r, u; | |
throw u = parseInt(null != e ? e.status : void 0) || 0, a = o.errorClass(null != (i = e.responseJSON) ? i.error : void 0), n = null != e && null != (r = e.responseJSON) ? r.message : void 0, t = new a(n), t.data = { | |
status: u, | |
statusText: null != e ? e.statusText : void 0, | |
responseText: null != e ? e.responseText : void 0, | |
responseJSON: null != e ? e.responseJSON : void 0 | |
}, t | |
}) | |
} | |
}), Promise.log = function(e) { | |
return e.then(function(e) { | |
return function(e) { | |
return console.log(e), e | |
} | |
}(this))["catch"](function(e) { | |
throw console.error(e), e | |
}) | |
}, "function" != typeof Object.assign && (Object.assign = n.assign), o.errors.define("Unavailable"), null == honey.util && (honey.util = n), null == honey.logger && (honey.logger = new(e("./logger"))), null == honey.session && (honey.session = new(e("./session"))), null == honey.messages && (honey.messages = new(e("./messages"))), null == honey.storage && (honey.storage = new(e("./storage"))), null == honey.config && (honey.config = new(e("./config"))), null == honey.clipboard && (honey.clipboard = new(e("./clipboard"))), null == honey.errors && (honey.errors = o)) | |
}, { | |
"./clipboard": 43, | |
"./config": 44, | |
"./logger": 46, | |
"./messages": 47, | |
"./session": 48, | |
"./storage": 51, | |
"./util": 56, | |
"./version": 57, | |
"@honeyscience/honey-errors": 63, | |
jquery: 127 | |
}], | |
46: [function(e, t, a) { | |
var o, n, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
o = { | |
trace: 100, | |
debug: 200, | |
info: 300, | |
warn: 400, | |
error: 500 | |
}, t.exports = n = function() { | |
function e() { | |
this._console = bind(this._console, this), this._log = bind(this._log, this), this.setLevel = bind(this.setLevel, this), this.getLevel = bind(this.getLevel, this), "production" === honey.environment ? this.setLevel("error") : this.setLevel("debug"), Object.keys(o).forEach(function(e) { | |
return function(t) { | |
return Object.defineProperty(e, t, { | |
value: function(a, o) { | |
return e._log(t, a, o) | |
} | |
}) | |
} | |
}(this)), Object.defineProperty(this, "console", { | |
value: this._console | |
}) | |
} | |
return e.prototype.getLevel = function() { | |
return this._level | |
}, e.prototype.setLevel = function(e) { | |
var t; | |
if (!(t = o[e = honey.util.cleanStringLower(e)])) throw new InvalidParameterError("level"); | |
return this._level = e, this._levelNum = t | |
}, e.prototype._log = function(e, t, a) { | |
var n, i, r, u, s, c, l, m, p, h, d; | |
try { | |
if (!((s = o[e]) >= this._levelNum)) return; | |
if (null == a && (a = {}), "production" !== honey.environment && (d = (new Date).toISOString(), c = t instanceof Error ? [d + " honey." + e, honey.util.cleanString(t.stack) + "\n"] : (null != t ? t.message : void 0) ? [d + " honey." + e + ": " + honey.util.cleanString(t.message)] : [d + " honey." + e + ": " + honey.util.cleanString(t)], Object.keys(a).length && c.push(a), l = s >= o.error ? "error" : e, console[l].apply(console, c)), s >= o.error) { | |
if (n = { | |
level: e, | |
level_num: s, | |
name: "Error" | |
}, t instanceof Error) | |
for (n.name = honey.util.cleanString(t.name, "Error"), n.stack = honey.util.cleanString(t.stack), n.message = honey.util.cleanString(t.message), m = Object.getOwnPropertyNames(t), i = 0, u = m.length; u > i; i++) r = m[i], "function" != typeof t[r] && "name" !== r && "message" !== r && "stack" !== r && null == a[r] && (a[r] = t[r]); | |
else "string" == typeof t ? n.message = t : n.message = function() { | |
try { | |
return JSON.stringify(t) | |
} catch (e) {} | |
}(); | |
try { | |
n.xtra = Object.keys(a).length ? JSON.stringify(a) : void 0 | |
} catch (g) {} | |
null != (p = honey.stats) && p.sendException({ | |
exception: n, | |
referrer_url: "background" === honey.context ? "background" : null != (h = window.location) ? h.href : void 0 | |
}) | |
} | |
} catch (g) {} | |
return void 0 | |
}, e.prototype._console = function() { | |
var e; | |
return (null != arguments ? arguments[0] : void 0) instanceof Error ? console.error((null != (e = arguments[0]) ? e.stack : void 0) || arguments[0]) : console.log.apply(console, arguments) | |
}, e | |
}() | |
}, {}], | |
47: [function(e, t, a) { | |
var o, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}, | |
n = [].indexOf || function(e) { | |
for (var t = 0, a = this.length; a > t; t++) | |
if (t in this && this[t] === e) return t; | |
return -1 | |
}; | |
t.exports = o = function() { | |
function e() { | |
this.removeAllNonCoreListeners = bind(this.removeAllNonCoreListeners, this), this.removeCoreListener = bind(this.removeCoreListener, this), this.removeListener = bind(this.removeListener, this), this.addCoreListener = bind(this.addCoreListener, this), this.addListener = bind(this.addListener, this), this.send = bind(this.send, this), this._nonCoreListeners = {} | |
} | |
return e.prototype.send = function(e, t, a) { | |
return honey._native.messages.send(honey.util.cleanStringLower(e), t, a) | |
}, e.prototype.addListener = function(e, t) { | |
var a; | |
if (!(e = honey.util.cleanStringLower(e))) throw new InvalidParametersError("type"); | |
if ("function" != typeof t) throw new InvalidParametersError("listener"); | |
return null == (a = this._nonCoreListeners)[e] && (a[e] = []), n.call(this._nonCoreListeners[e], t) >= 0 ? !1 : (this._nonCoreListeners[e].push(t), honey._native.messages.addListener(e, t)) | |
}, e.prototype.addCoreListener = function(e, t) { | |
if (!(e = honey.util.cleanStringLower(e))) throw new InvalidParametersError("type"); | |
if ("function" != typeof t) throw new InvalidParametersError("listener"); | |
return honey._native.messages.addListener(e, t) | |
}, e.prototype.removeListener = function(e, t) { | |
var a, o, n; | |
if (!(e = honey.util.cleanStringLower(e))) throw new InvalidParametersError("type"); | |
if ("function" != typeof t) throw new InvalidParametersError("listener"); | |
return (a = null != (o = this._nonCoreListeners) && null != (n = o[e]) ? n.indexOf(t) : void 0) >= 0 && (this._nonCoreListeners[e].splice(a, 1), this._nonCoreListeners[e].length || delete this._nonCoreListeners[e]), honey._native.messages.removeListener(e, t) | |
}, e.prototype.removeCoreListener = function(e, t) { | |
if (!(e = honey.util.cleanStringLower(e))) throw new InvalidParametersError("type"); | |
if ("function" != typeof t) throw new InvalidParametersError("listener"); | |
return honey._native.messages.removeListener(e, t) | |
}, e.prototype.removeAllNonCoreListeners = function() { | |
var e, t, a, o, n, i, r; | |
n = this._nonCoreListeners; | |
for (r in n) | |
for (o = n[r], i = this._nonCoreListeners[r] || [], e = 0, t = i.length; t > e; e++) a = i[e], honey._native.messages.removeListener(r, a); | |
return this._nonCoreListeners = {} | |
}, e | |
}() | |
}, {}], | |
48: [function(e, t, a) { | |
var o; | |
t.exports = o = function() { | |
function e() {} | |
return e.prototype.get = function() { | |
return honey._native.session.get() | |
}, e.prototype.reset = function() { | |
return honey._native.session.reset() | |
}, e | |
}() | |
}, {}], | |
49: [function(e, t, a) { | |
var o, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
t.exports = o = function() { | |
function e() { | |
this.prefixed = bind(this.prefixed, this), this.del = bind(this.del, this), this.set = bind(this.set, this), this.get = bind(this.get, this), this.isAvailable = bind(this.isAvailable, this) | |
} | |
return e.prototype.isAvailable = function() { | |
return this._isAvailable() | |
}, e.prototype.get = function(e, t) { | |
return Promise.resolve().then(function(a) { | |
return function() { | |
if (!a.isAvailable()) throw new UnavailableError(a.type + "_storage_unavailable"); | |
if (!(e = honey.util.cleanString(e))) throw new InvalidParametersError("key"); | |
return a._get(e, t) | |
} | |
}(this)) | |
}, e.prototype.set = function(e, t, a) { | |
return Promise.resolve().then(function(o) { | |
return function() { | |
if (!o.isAvailable()) throw new UnavailableError(o.type + "_storage_unavailable"); | |
if (!(e = honey.util.cleanString(e))) throw new InvalidParametersError("key"); | |
return void 0 === t ? o._del(e, a) : o._set(e, t, a) | |
} | |
}(this)) | |
}, e.prototype.del = function(e, t) { | |
return Promise.resolve().then(function(a) { | |
return function() { | |
if (!a.isAvailable()) throw new UnavailableError(a.type + "_storage_unavailable"); | |
if (!(e = honey.util.cleanString(e))) throw new InvalidParametersError("key"); | |
return a._del(e, t) | |
} | |
}(this)) | |
}, e.prototype.prefixed = function(e) { | |
return { | |
isAvailable: function(e) { | |
return function() { | |
return e.isAvailable() | |
} | |
}(this), | |
del: function(t) { | |
return function(a, o) { | |
return t.del(e + ":" + a, o) | |
} | |
}(this), | |
get: function(t) { | |
return function(a, o) { | |
return t.get(e + ":" + a, o) | |
} | |
}(this), | |
set: function(t) { | |
return function(a, o, n) { | |
return t.set(e + ":" + a, o, n) | |
} | |
}(this) | |
} | |
}, e | |
}() | |
}, {}], | |
50: [function(e, t, a) { | |
var o; | |
t.exports = o = function() { | |
function e() {} | |
return e.prototype.getAssetURL = function(e) { | |
return honey._native.storage.bundled.getAssetURL(e) | |
}, e.prototype.isAvailable = function() { | |
return honey._native.storage.bundled.isAvailable() | |
}, e | |
}() | |
}, {}], | |
51: [function(e, t, a) { | |
var o; | |
t.exports = o = function() { | |
function t() {} | |
return t.prototype.local = new(e("./local")), t.prototype.sync = new(e("./sync")), t.prototype.bundled = new(e("./bundled")), t | |
}() | |
}, { | |
"./bundled": 50, | |
"./local": 52, | |
"./sync": 53 | |
}], | |
52: [function(e, t, a) { | |
var o, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}, | |
n = function(e, t) { | |
function a() { | |
this.constructor = e | |
} | |
for (var o in t) i.call(t, o) && (e[o] = t[o]); | |
return a.prototype = t.prototype, e.prototype = new a, e.__super__ = t.prototype, e | |
}, | |
i = {}.hasOwnProperty; | |
t.exports = o = function(e) { | |
function t() { | |
this._del = bind(this._del, this), this._set = bind(this._set, this), this._get = bind(this._get, this), this._isAvailable = bind(this._isAvailable, this), t.__super__.constructor.apply(this, arguments), Object.defineProperty(this, "type", { | |
value: "local" | |
}) | |
} | |
return n(t, e), t.prototype._isAvailable = function() { | |
return honey._native.storage.local.isAvailable() | |
}, t.prototype._get = function(e, t) { | |
return honey._native.storage.local.get(e, t) | |
}, t.prototype._set = function(e, t, a) { | |
return honey._native.storage.local.set(e, t, a) | |
}, t.prototype._del = function(e, t) { | |
return honey._native.storage.local.del(e, t) | |
}, t | |
}(e("./base")) | |
}, { | |
"./base": 49 | |
}], | |
53: [function(e, t, a) { | |
var o, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}, | |
n = function(e, t) { | |
function a() { | |
this.constructor = e | |
} | |
for (var o in t) i.call(t, o) && (e[o] = t[o]); | |
return a.prototype = t.prototype, e.prototype = new a, e.__super__ = t.prototype, e | |
}, | |
i = {}.hasOwnProperty; | |
t.exports = o = function(e) { | |
function t() { | |
this._del = bind(this._del, this), this._set = bind(this._set, this), this._get = bind(this._get, this), this._isAvailable = bind(this._isAvailable, this), t.__super__.constructor.apply(this, arguments), Object.defineProperty(this, "type", { | |
value: "sync" | |
}) | |
} | |
return n(t, e), t.prototype._isAvailable = function() { | |
return honey._native.storage.sync.isAvailable() | |
}, t.prototype._get = function(e, t) { | |
return honey._native.storage.sync.get(e, t) | |
}, t.prototype._set = function(e, t, a) { | |
return honey._native.storage.sync.set(e, t, a) | |
}, t.prototype._del = function(e, t) { | |
return honey._native.storage.sync.del(e, t) | |
}, t | |
}(e("./base")) | |
}, { | |
"./base": 49 | |
}], | |
54: [function(e, t, a) { | |
t.exports = { | |
AC: { | |
currencyCode: "USD", | |
currencySymbol: "$", | |
currencyName: "United States Dollar" | |
}, | |
AD: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
AF: { | |
currencyCode: "AFN", | |
currencySymbol: "\u060b", | |
currencyName: "Afghanistan Afghani" | |
}, | |
AG: { | |
currencyCode: "XCD", | |
currencySymbol: "$", | |
currencyName: "East Caribbean Dollar" | |
}, | |
AI: { | |
currencyCode: "XCD", | |
currencySymbol: "$", | |
currencyName: "East Caribbean Dollar" | |
}, | |
AL: { | |
currencyCode: "ALL", | |
currencySymbol: "Lek", | |
currencyName: "Albania Lek" | |
}, | |
AR: { | |
currencyCode: "ARS", | |
currencySymbol: "$", | |
currencyName: "Argentina Peso" | |
}, | |
AS: { | |
currencyCode: "USD", | |
currencySymbol: "$", | |
currencyName: "United States Dollar" | |
}, | |
AT: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
AU: { | |
currencyCode: "AUD", | |
currencySymbol: "$", | |
currencyName: "Australia Dollar" | |
}, | |
AW: { | |
currencyCode: "AWG", | |
currencySymbol: "\u0192", | |
currencyName: "Aruba Guilder" | |
}, | |
AZ: { | |
currencyCode: "AZN", | |
currencySymbol: "\u043c\u0430\u043d", | |
currencyName: "Azerbaijan New Manat" | |
}, | |
BA: { | |
currencyCode: "BAM", | |
currencySymbol: "KM", | |
currencyName: "Bosnia and Herzegovina Convertible Marka" | |
}, | |
BB: { | |
currencyCode: "BBD", | |
currencySymbol: "$", | |
currencyName: "Barbados Dollar" | |
}, | |
BE: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
BG: { | |
currencyCode: "BGN", | |
currencySymbol: "\u043b\u0432", | |
currencyName: "Bulgaria Lev" | |
}, | |
BL: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
BM: { | |
currencyCode: "BMD", | |
currencySymbol: "$", | |
currencyName: "Bermuda Dollar" | |
}, | |
BN: { | |
currencyCode: "BND", | |
currencySymbol: "$", | |
currencyName: "Brunei Darussalam Dollar" | |
}, | |
BO: { | |
currencyCode: "BOB", | |
currencySymbol: "$b", | |
currencyName: "Bolivia Boliviano" | |
}, | |
BQ: { | |
currencyCode: "USD", | |
currencySymbol: "$", | |
currencyName: "United States Dollar" | |
}, | |
BR: { | |
currencyCode: "BRL", | |
currencySymbol: "R$", | |
currencyName: "Brazil Real" | |
}, | |
BS: { | |
currencyCode: "BSD", | |
currencySymbol: "$", | |
currencyName: "Bahamas Dollar" | |
}, | |
BT: { | |
currencyCode: "INR", | |
currencySymbol: "Rs.", | |
currencyName: "India Rupee" | |
}, | |
BV: { | |
currencyCode: "NOK", | |
currencySymbol: "kr", | |
currencyName: "Norway Krone" | |
}, | |
BW: { | |
currencyCode: "BWP", | |
currencySymbol: "P", | |
currencyName: "Botswana Pula" | |
}, | |
BY: { | |
currencyCode: "BYR", | |
currencySymbol: "p.", | |
currencyName: "Belarus Ruble" | |
}, | |
BZ: { | |
currencyCode: "BZD", | |
currencySymbol: "BZ$", | |
currencyName: "Belize Dollar" | |
}, | |
CA: { | |
currencyCode: "CAD", | |
currencySymbol: "$", | |
currencyName: "Canada Dollar" | |
}, | |
CC: { | |
currencyCode: "AUD", | |
currencySymbol: "$", | |
currencyName: "Australia Dollar" | |
}, | |
CH: { | |
currencyCode: "CHF", | |
currencySymbol: "CHF", | |
currencyName: "Switzerland Franc" | |
}, | |
CK: { | |
currencyCode: "NZD", | |
currencySymbol: "$", | |
currencyName: "New Zealand Dollar" | |
}, | |
CL: { | |
currencyCode: "CLP", | |
currencySymbol: "$", | |
currencyName: "Chile Peso" | |
}, | |
CN: { | |
currencyCode: "CNY", | |
currencySymbol: "\xa5", | |
currencyName: "China Yuan Renminbi" | |
}, | |
CO: { | |
currencyCode: "COP", | |
currencySymbol: "$", | |
currencyName: "Colombia Peso" | |
}, | |
CP: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
CR: { | |
currencyCode: "CRC", | |
currencySymbol: "\u20a1", | |
currencyName: "Costa Rica Colon" | |
}, | |
CU: { | |
currencyCode: "CUP", | |
currencySymbol: "\u20b1", | |
currencyName: "Cuba Peso" | |
}, | |
CW: { | |
currencyCode: "ANG", | |
currencySymbol: "\u0192", | |
currencyName: "Netherlands Antilles Guilder" | |
}, | |
CX: { | |
currencyCode: "AUD", | |
currencySymbol: "$", | |
currencyName: "Australia Dollar" | |
}, | |
CY: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
CZ: { | |
currencyCode: "CZK", | |
currencySymbol: "K\u010d", | |
currencyName: "Czech Republic Koruna" | |
}, | |
DE: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
DG: { | |
currencyCode: "USD", | |
currencySymbol: "$", | |
currencyName: "United States Dollar" | |
}, | |
DK: { | |
currencyCode: "DKK", | |
currencySymbol: "kr", | |
currencyName: "Denmark Krone" | |
}, | |
DM: { | |
currencyCode: "XCD", | |
currencySymbol: "$", | |
currencyName: "East Caribbean Dollar" | |
}, | |
DO: { | |
currencyCode: "DOP", | |
currencySymbol: "RD$", | |
currencyName: "Dominican Republic Peso" | |
}, | |
EA: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
EC: { | |
currencyCode: "USD", | |
currencySymbol: "$", | |
currencyName: "United States Dollar" | |
}, | |
EE: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
EG: { | |
currencyCode: "EGP", | |
currencySymbol: "\xa3", | |
currencyName: "Egypt Pound" | |
}, | |
ES: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
EU: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
FI: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
FJ: { | |
currencyCode: "FJD", | |
currencySymbol: "$", | |
currencyName: "Fiji Dollar" | |
}, | |
FK: { | |
currencyCode: "FKP", | |
currencySymbol: "\xa3", | |
currencyName: "Falkland Islands (Malvinas) Pound" | |
}, | |
FM: { | |
currencyCode: "USD", | |
currencySymbol: "$", | |
currencyName: "United States Dollar" | |
}, | |
FO: { | |
currencyCode: "DKK", | |
currencySymbol: "kr", | |
currencyName: "Denmark Krone" | |
}, | |
FR: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
FX: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
GB: { | |
currencyCode: "GBP", | |
currencySymbol: "\xa3", | |
currencyName: "United Kingdom Pound" | |
}, | |
GD: { | |
currencyCode: "XCD", | |
currencySymbol: "$", | |
currencyName: "East Caribbean Dollar" | |
}, | |
GF: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
GG: { | |
currencyCode: "GBP", | |
currencySymbol: "\xa3", | |
currencyName: "United Kingdom Pound" | |
}, | |
GI: { | |
currencyCode: "GIP", | |
currencySymbol: "\xa3", | |
currencyName: "Gibraltar Pound" | |
}, | |
GL: { | |
currencyCode: "DKK", | |
currencySymbol: "kr", | |
currencyName: "Denmark Krone" | |
}, | |
GP: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
GR: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
GS: { | |
currencyCode: "GBP", | |
currencySymbol: "\xa3", | |
currencyName: "United Kingdom Pound" | |
}, | |
GT: { | |
currencyCode: "GTQ", | |
currencySymbol: "Q", | |
currencyName: "Guatemala Quetzal" | |
}, | |
GU: { | |
currencyCode: "USD", | |
currencySymbol: "$", | |
currencyName: "United States Dollar" | |
}, | |
GY: { | |
currencyCode: "GYD", | |
currencySymbol: "$", | |
currencyName: "Guyana Dollar" | |
}, | |
HK: { | |
currencyCode: "HKD", | |
currencySymbol: "$", | |
currencyName: "Hong Kong Dollar" | |
}, | |
HM: { | |
currencyCode: "AUD", | |
currencySymbol: "$", | |
currencyName: "Australia Dollar" | |
}, | |
HN: { | |
currencyCode: "HNL", | |
currencySymbol: "L", | |
currencyName: "Honduras Lempira" | |
}, | |
HR: { | |
currencyCode: "HRK", | |
currencySymbol: "kn", | |
currencyName: "Croatia Kuna" | |
}, | |
HU: { | |
currencyCode: "HUF", | |
currencySymbol: "Ft", | |
currencyName: "Hungary Forint" | |
}, | |
IC: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
ID: { | |
currencyCode: "IDR", | |
currencySymbol: "Rp", | |
currencyName: "Indonesia Rupiah" | |
}, | |
IE: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
IL: { | |
currencyCode: "ILS", | |
currencySymbol: "\u20aa", | |
currencyName: "Israel Shekel" | |
}, | |
IM: { | |
currencyCode: "GBP", | |
currencySymbol: "\xa3", | |
currencyName: "United Kingdom Pound" | |
}, | |
IN: { | |
currencyCode: "INR", | |
currencySymbol: "", | |
currencyName: "India Rupee" | |
}, | |
IO: { | |
currencyCode: "USD", | |
currencySymbol: "$", | |
currencyName: "United States Dollar" | |
}, | |
IR: { | |
currencyCode: "IRR", | |
currencySymbol: "\ufdfc", | |
currencyName: "Iran Rial" | |
}, | |
IS: { | |
currencyCode: "ISK", | |
currencySymbol: "kr", | |
currencyName: "Iceland Krona" | |
}, | |
IT: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
JE: { | |
currencyCode: "GBP", | |
currencySymbol: "\xa3", | |
currencyName: "United Kingdom Pound" | |
}, | |
JM: { | |
currencyCode: "JMD", | |
currencySymbol: "J$", | |
currencyName: "Jamaica Dollar" | |
}, | |
JP: { | |
currencyCode: "JPY", | |
currencySymbol: "\xa5", | |
currencyName: "Japan Yen" | |
}, | |
KG: { | |
currencyCode: "KGS", | |
currencySymbol: "\u043b\u0432", | |
currencyName: "Kyrgyzstan Som" | |
}, | |
KH: { | |
currencyCode: "KHR", | |
currencySymbol: "\u17db", | |
currencyName: "Cambodia Riel" | |
}, | |
KI: { | |
currencyCode: "AUD", | |
currencySymbol: "$", | |
currencyName: "Australia Dollar" | |
}, | |
KN: { | |
currencyCode: "XCD", | |
currencySymbol: "$", | |
currencyName: "East Caribbean Dollar" | |
}, | |
KP: { | |
currencyCode: "KPW", | |
currencySymbol: "\u20a9", | |
currencyName: "Korea (North) Won" | |
}, | |
KR: { | |
currencyCode: "KRW", | |
currencySymbol: "\u20a9", | |
currencyName: "Korea (South) Won" | |
}, | |
KY: { | |
currencyCode: "KYD", | |
currencySymbol: "$", | |
currencyName: "Cayman Islands Dollar" | |
}, | |
KZ: { | |
currencyCode: "KZT", | |
currencySymbol: "\u043b\u0432", | |
currencyName: "Kazakhstan Tenge" | |
}, | |
LA: { | |
currencyCode: "LAK", | |
currencySymbol: "\u20ad", | |
currencyName: "Laos Kip" | |
}, | |
LB: { | |
currencyCode: "LBP", | |
currencySymbol: "\xa3", | |
currencyName: "Lebanon Pound" | |
}, | |
LC: { | |
currencyCode: "XCD", | |
currencySymbol: "$", | |
currencyName: "East Caribbean Dollar" | |
}, | |
LI: { | |
currencyCode: "CHF", | |
currencySymbol: "CHF", | |
currencyName: "Switzerland Franc" | |
}, | |
LK: { | |
currencyCode: "LKR", | |
currencySymbol: "\u20a8", | |
currencyName: "Sri Lanka Rupee" | |
}, | |
LR: { | |
currencyCode: "LRD", | |
currencySymbol: "$", | |
currencyName: "Liberia Dollar" | |
}, | |
LT: { | |
currencyCode: "LTL", | |
currencySymbol: "Lt", | |
currencyName: "Lithuania Litas" | |
}, | |
LU: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
LV: { | |
currencyCode: "LVL", | |
currencySymbol: "Ls", | |
currencyName: "Latvia Lat" | |
}, | |
MC: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
ME: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
MF: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
MH: { | |
currencyCode: "USD", | |
currencySymbol: "$", | |
currencyName: "United States Dollar" | |
}, | |
MK: { | |
currencyCode: "MKD", | |
currencySymbol: "\u0434\u0435\u043d", | |
currencyName: "Macedonia Denar" | |
}, | |
MN: { | |
currencyCode: "MNT", | |
currencySymbol: "\u20ae", | |
currencyName: "Mongolia Tughrik" | |
}, | |
MP: { | |
currencyCode: "USD", | |
currencySymbol: "$", | |
currencyName: "United States Dollar" | |
}, | |
MQ: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
MS: { | |
currencyCode: "XCD", | |
currencySymbol: "$", | |
currencyName: "East Caribbean Dollar" | |
}, | |
MT: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
MU: { | |
currencyCode: "MUR", | |
currencySymbol: "\u20a8", | |
currencyName: "Mauritius Rupee" | |
}, | |
MX: { | |
currencyCode: "MXN", | |
currencySymbol: "$", | |
currencyName: "Mexico Peso" | |
}, | |
MY: { | |
currencyCode: "MYR", | |
currencySymbol: "RM", | |
currencyName: "Malaysia Ringgit" | |
}, | |
MZ: { | |
currencyCode: "MZN", | |
currencySymbol: "MT", | |
currencyName: "Mozambique Metical" | |
}, | |
NA: { | |
currencyCode: "NAD", | |
currencySymbol: "$", | |
currencyName: "Namibia Dollar" | |
}, | |
NF: { | |
currencyCode: "AUD", | |
currencySymbol: "$", | |
currencyName: "Australia Dollar" | |
}, | |
NG: { | |
currencyCode: "NGN", | |
currencySymbol: "\u20a6", | |
currencyName: "Nigeria Naira" | |
}, | |
NI: { | |
currencyCode: "NIO", | |
currencySymbol: "C$", | |
currencyName: "Nicaragua Cordoba" | |
}, | |
NL: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
NO: { | |
currencyCode: "NOK", | |
currencySymbol: "kr", | |
currencyName: "Norway Krone" | |
}, | |
NP: { | |
currencyCode: "NPR", | |
currencySymbol: "\u20a8", | |
currencyName: "Nepal Rupee" | |
}, | |
NR: { | |
currencyCode: "AUD", | |
currencySymbol: "$", | |
currencyName: "Australia Dollar" | |
}, | |
NU: { | |
currencyCode: "NZD", | |
currencySymbol: "$", | |
currencyName: "New Zealand Dollar" | |
}, | |
NZ: { | |
currencyCode: "NZD", | |
currencySymbol: "$", | |
currencyName: "New Zealand Dollar" | |
}, | |
OM: { | |
currencyCode: "OMR", | |
currencySymbol: "\ufdfc", | |
currencyName: "Oman Rial" | |
}, | |
PA: { | |
currencyCode: "PAB", | |
currencySymbol: "B/.", | |
currencyName: "Panama Balboa" | |
}, | |
PE: { | |
currencyCode: "PEN", | |
currencySymbol: "S/.", | |
currencyName: "Peru Nuevo Sol" | |
}, | |
PH: { | |
currencyCode: "PHP", | |
currencySymbol: "\u20b1", | |
currencyName: "Philippines Peso" | |
}, | |
PK: { | |
currencyCode: "PKR", | |
currencySymbol: "\u20a8", | |
currencyName: "Pakistan Rupee" | |
}, | |
PL: { | |
currencyCode: "PLN", | |
currencySymbol: "z\u0142", | |
currencyName: "Poland Zloty" | |
}, | |
PM: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
PN: { | |
currencyCode: "NZD", | |
currencySymbol: "$", | |
currencyName: "New Zealand Dollar" | |
}, | |
PR: { | |
currencyCode: "USD", | |
currencySymbol: "$", | |
currencyName: "United States Dollar" | |
}, | |
PT: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
PW: { | |
currencyCode: "USD", | |
currencySymbol: "$", | |
currencyName: "United States Dollar" | |
}, | |
PY: { | |
currencyCode: "PYG", | |
currencySymbol: "Gs", | |
currencyName: "Paraguay Guarani" | |
}, | |
QA: { | |
currencyCode: "QAR", | |
currencySymbol: "\ufdfc", | |
currencyName: "Qatar Riyal" | |
}, | |
RE: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
RO: { | |
currencyCode: "RON", | |
currencySymbol: "lei", | |
currencyName: "Romania New Leu" | |
}, | |
RS: { | |
currencyCode: "RSD", | |
currencySymbol: "\u0414\u0438\u043d.", | |
currencyName: "Serbia Dinar" | |
}, | |
RU: { | |
currencyCode: "RUB", | |
currencySymbol: "\u0440\u0443\u0431", | |
currencyName: "Russia Ruble" | |
}, | |
SA: { | |
currencyCode: "SAR", | |
currencySymbol: "\ufdfc", | |
currencyName: "Saudi Arabia Riyal" | |
}, | |
SB: { | |
currencyCode: "SBD", | |
currencySymbol: "$", | |
currencyName: "Solomon Islands Dollar" | |
}, | |
SC: { | |
currencyCode: "SCR", | |
currencySymbol: "\u20a8", | |
currencyName: "Seychelles Rupee" | |
}, | |
SE: { | |
currencyCode: "SEK", | |
currencySymbol: "kr", | |
currencyName: "Sweden Krona" | |
}, | |
SG: { | |
currencyCode: "SGD", | |
currencySymbol: "$", | |
currencyName: "Singapore Dollar" | |
}, | |
SH: { | |
currencyCode: "SHP", | |
currencySymbol: "\xa3", | |
currencyName: "Saint Helena Pound" | |
}, | |
SI: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
SJ: { | |
currencyCode: "NOK", | |
currencySymbol: "kr", | |
currencyName: "Norway Krone" | |
}, | |
SK: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
SM: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
SO: { | |
currencyCode: "SOS", | |
currencySymbol: "S", | |
currencyName: "Somalia Shilling" | |
}, | |
SR: { | |
currencyCode: "SRD", | |
currencySymbol: "$", | |
currencyName: "Suriname Dollar" | |
}, | |
SU: { | |
currencyCode: "RUB", | |
currencySymbol: "\u0440\u0443\u0431", | |
currencyName: "Russia Ruble" | |
}, | |
SV: { | |
currencyCode: "USD", | |
currencySymbol: "$", | |
currencyName: "United States Dollar" | |
}, | |
SX: { | |
currencyCode: "ANG", | |
currencySymbol: "\u0192", | |
currencyName: "Netherlands Antilles Guilder" | |
}, | |
SY: { | |
currencyCode: "SYP", | |
currencySymbol: "\xa3", | |
currencyName: "Syria Pound" | |
}, | |
TA: { | |
currencyCode: "GBP", | |
currencySymbol: "\xa3", | |
currencyName: "United Kingdom Pound" | |
}, | |
TC: { | |
currencyCode: "USD", | |
currencySymbol: "$", | |
currencyName: "United States Dollar" | |
}, | |
TF: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
TH: { | |
currencyCode: "THB", | |
currencySymbol: "\u0e3f", | |
currencyName: "Thailand Baht" | |
}, | |
TK: { | |
currencyCode: "NZD", | |
currencySymbol: "$", | |
currencyName: "New Zealand Dollar" | |
}, | |
TL: { | |
currencyCode: "USD", | |
currencySymbol: "$", | |
currencyName: "United States Dollar" | |
}, | |
TR: { | |
currencyCode: "TRY", | |
currencySymbol: "", | |
currencyName: "Turkey Lira" | |
}, | |
TT: { | |
currencyCode: "TTD", | |
currencySymbol: "TT$", | |
currencyName: "Trinidad and Tobago Dollar" | |
}, | |
TV: { | |
currencyCode: "AUD", | |
currencySymbol: "$", | |
currencyName: "Australia Dollar" | |
}, | |
TW: { | |
currencyCode: "TWD", | |
currencySymbol: "NT$", | |
currencyName: "Taiwan New Dollar" | |
}, | |
UA: { | |
currencyCode: "UAH", | |
currencySymbol: "\u20b4", | |
currencyName: "Ukraine Hryvnia" | |
}, | |
UK: { | |
currencyCode: "GBP", | |
currencySymbol: "\xa3", | |
currencyName: "United Kingdom Pound" | |
}, | |
UM: { | |
currencyCode: "USD", | |
currencySymbol: "$", | |
currencyName: "United States Dollar" | |
}, | |
US: { | |
currencyCode: "USD", | |
currencySymbol: "$", | |
currencyName: "United States Dollar" | |
}, | |
UY: { | |
currencyCode: "UYU", | |
currencySymbol: "$U", | |
currencyName: "Uruguay Peso" | |
}, | |
UZ: { | |
currencyCode: "UZS", | |
currencySymbol: "\u043b\u0432", | |
currencyName: "Uzbekistan Som" | |
}, | |
VA: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
VC: { | |
currencyCode: "XCD", | |
currencySymbol: "$", | |
currencyName: "East Caribbean Dollar" | |
}, | |
VE: { | |
currencyCode: "VEF", | |
currencySymbol: "Bs", | |
currencyName: "Venezuela Bolivar" | |
}, | |
VG: { | |
currencyCode: "USD", | |
currencySymbol: "$", | |
currencyName: "United States Dollar" | |
}, | |
VI: { | |
currencyCode: "USD", | |
currencySymbol: "$", | |
currencyName: "United States Dollar" | |
}, | |
VN: { | |
currencyCode: "VND", | |
currencySymbol: "\u20ab", | |
currencyName: "Viet Nam Dong" | |
}, | |
YE: { | |
currencyCode: "YER", | |
currencySymbol: "\ufdfc", | |
currencyName: "Yemen Rial" | |
}, | |
YT: { | |
currencyCode: "EUR", | |
currencySymbol: "\u20ac", | |
currencyName: "Euro" | |
}, | |
ZA: { | |
currencyCode: "ZAR", | |
currencySymbol: "R", | |
currencyName: "South Africa Rand" | |
}, | |
ZW: { | |
currencyCode: "USD", | |
currencySymbol: "$", | |
currencyName: "United States Dollar" | |
} | |
} | |
}, {}], | |
55: [function(e, t, a) { | |
var o, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
o = e("long"), t.exports = new(function() { | |
function e() { | |
this.create = bind(this.create, this), this._localId = parseInt(Math.random().toString().slice(-6)) % 256 | |
} | |
return e.prototype.create = function() { | |
return (new o).add(10 * Moment().valueOf()).shiftLeft(11).and(new o(4294965248, 4294967295)).add(parseInt(Math.random().toString().slice(-6)) % 2048).shiftLeft(8).and(new o(4294967280, 4294967295)).add(this._localId).toString(10) | |
}, e | |
}()) | |
}, { | |
"long": 129 | |
}], | |
56: [function(e, t, a) { | |
var o, n, i, r, u, s, c, bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}, | |
l = [].slice; | |
o = e("accounting"), c = e("./honey_id"), n = e("./currencies"), u = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", r = /([\d+][\,\.\d+]+)/, i = /([,\.\d]+)(\.\d{2}|\,\d{2})\b/, t.exports = s = function() { | |
function e() { | |
this.retainFocus = bind(this.retainFocus, this), this.execTopFrameJS = bind(this.execTopFrameJS, this) | |
} | |
return e.prototype.createId = c.create, e.prototype.cleanUp = function(e) { | |
var t, a; | |
try { | |
if (a = $("#undefined")[0], a && document.body.removeChild(a), t = $("#" + e)[0]) return document.body.removeChild(t) | |
} catch (o) {} | |
}, e.prototype.execTopFrameJS = function(e, a) { | |
var o, n, i; | |
return null == a && (a = 1e4), o = t.exports.prototype.randomString(32), n = $("<div id='" + o + "' />"), $("body").append(n), i = document.createElement("script"), i.textContent = "javascript:( function () { var value = null; try { value = JSON.stringify(function(){" + e + "}()); } catch(e) { e.error = true; value = JSON.stringify(e, ['message', 'name', 'error']); } document.getElementById('" + o + "').setAttribute('value', value); }() )", new Promise(function(e) { | |
return function(t, r) { | |
var u, s; | |
return s = setTimeout(function() { | |
return u.disconnect(), e.cleanUp(o), r(new Error("timeout")) | |
}, a), u = new MutationObserver(function(a) { | |
var n, i, c, l; | |
return c = null != (i = a[0]) ? i.target : void 0, l = null != c && "function" == typeof c.getAttribute ? c.getAttribute("value") : void 0, l = l && "undefined" !== l ? JSON.parse(l) : null, u.disconnect(), clearTimeout(s), e.cleanUp(o), (null != l ? l.error : void 0) ? (n = new Error(l.message), n.name = l.name, r(n)) : t(l) | |
}), u.observe(n[0], { | |
attributes: !0 | |
}), (document.head || document.documentElement).appendChild(i), i.remove() | |
} | |
}(this)) | |
}, e.prototype.randomString = function(e) { | |
var t; | |
return function() { | |
t = []; | |
for (var a = 0; e >= 0 ? e > a : a > e; e >= 0 ? a++ : a--) t.push(a); | |
return t | |
}.apply(this).map(function() { | |
return u.charAt(Math.floor(Math.random() * u.length)) | |
}).join("") | |
}, e.prototype.cleanPrice = function(e) { | |
var a, n; | |
return e = honey.util.cleanString(e), n = (null != (a = e.match(r)) ? a[1] : void 0) || e, Number(o.unformat(n, t.exports.prototype.decimalSeparator(n))) | |
}, e.prototype.decimalSeparator = function(e) { | |
var t, a; | |
return (null != (t = e.match(i)) && null != (a = t[2]) ? a.substring(0, 1) : void 0) || "." | |
}, e.prototype.formatPrice = function(e, t, a, n) { | |
return null == t && (t = "US"), null == a && (a = ","), null == n && (n = "."), o.formatMoney(e, honey.util.getCountryCurrency(t), 2, a, n) | |
}, e.prototype.getCountryCurrencyCode = function(e) { | |
var t; | |
return (null != (t = n[e.toUpperCase()]) ? t.currencyCode : void 0) || "USD" | |
}, e.prototype.getCountryCurrency = function(e) { | |
var t; | |
return (null != (t = n[e.toUpperCase()]) ? t.currencySymbol : void 0) || "$" | |
}, e.prototype.parseInt = function(e, t) { | |
return null == t && (t = 0), parseInt(e) || t | |
}, e.prototype.parsePositiveInt = function(e, t) { | |
return null == t && (t = 0), Math.max(0, parseInt(e)) || t | |
}, e.prototype.parseFloat = function(e, t) { | |
return null == t && (t = 0), parseFloat(e) || t | |
}, e.prototype.parsePositiveFloat = function(e, t) { | |
return null == t && (t = 0), Math.max(0, parseFloat(e)) || t | |
}, e.prototype.round = function(e, t) { | |
var a; | |
return a = Math.pow(10, Math.max(0, t) || 0), Math.round(e * a) / a | |
}, e.prototype.cleanString = function(e, t) { | |
return null == t && (t = ""), ("" + (e || "")).trim() || t | |
}, e.prototype.cleanStringLower = function(e, t) { | |
return null == t && (t = ""), ("" + (e || "")).trim().toLowerCase() || t | |
}, e.prototype.cleanStringUpper = function(e, t) { | |
return null == t && (t = ""), ("" + (e || "")).trim().toUpperCase() || t | |
}, e.prototype.replaceAll = function(e, t, a) { | |
return t instanceof RegExp || (t = new RegExp(t.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1"), "g")), e.replace(t, a) | |
}, e.prototype.assign = function() { | |
var e, t, a, o, n, i, r; | |
for (i = arguments[0], n = 2 <= arguments.length ? l.call(arguments, 1) : [], t = 0, o = n.length; o > t; t++) { | |
e = n[t]; | |
for (a in e) r = e[a], i[a] = r | |
} | |
return i | |
}, e.prototype.lowerClone = function(e) { | |
var t, a, o; | |
a = {}; | |
for (t in e) o = e[t], o && "object" == typeof o && (o = honey.util.lowerClone(o)), a[honey.util.cleanStringLower(t)] = o; | |
return a | |
}, e.prototype.retainFocus = function(e) { | |
var t, a; | |
return t = e || window.event, a = t.path || t.composedPath && t.composedPath(), a && a[0] ? (a[0].focus(), t.stopPropagation(), t) : void 0 | |
}, e | |
}() | |
}, { | |
"./currencies": 54, | |
"./honey_id": 55, | |
accounting: 74 | |
}], | |
57: [function(e, t, a) { | |
var bind = function(e, t) { | |
return function() { | |
return e.apply(t, arguments) | |
} | |
}; | |
t.exports = function() { | |
function e(e) { | |
this.valueOf = bind(this.valueOf, this), this.toString = bind(this.toString, this), this.lte = bind(this.lte, this), this.gte = bind(this.gte, this), this.gt = bind(this.gt, this), this.lt = bind(this.lt, this), this.ne = bind(this.ne, this), this.eq = bind(this.eq, this), this._v = function() { | |
switch (!1) { | |
case "string" != typeof e: | |
return e.split(".", 3); | |
case !(e instanceof Version): | |
return [e.maj, e.min, e.rev]; | |
default: | |
return [null != e ? e[0] : void 0, null != e ? e[1] : void 0, null != e ? e[2] : void 0] | |
} | |
}().map(function(e) { | |
if ((e = parseInt(e)) >= 0) return e; | |
throw new Error("invalid_version") | |
}), Object.defineProperty(this, "maj", { | |
value: this._v[0] | |
}), Object.defineProperty(this, "min", { | |
value: this._v[1] | |
}), Object.defineProperty(this, "rev", { | |
value: this._v[2] | |
}), Object.freeze(this._v), Object.freeze(this) | |
} | |
return e.prototype.eq = function(e) { | |
var t, a, o, n, i; | |
try { | |
for (e = new Version(e), n = this._v, t = a = 0, o = n.length; o > a; t = ++a) | |
if (i = n[t], i !== e._v[t]) return !1; | |
return !0 | |
} catch (r) { | |
return !1 | |
} | |
}, e.prototype.ne = function(e) { | |
return !this.eq(e) | |
}, e.prototype.lt = function(e) { | |
var t, a, o, n, i; | |
try { | |
for (e = new Version(e), n = this._v, t = a = 0, o = n.length; o > a; t = ++a) { | |
if (i = n[t], i < e._v[t]) return !0; | |
if (i > e._v[t]) return !1 | |
} | |
} catch (r) {} | |
return !1 | |
}, e.prototype.gt = function(e) { | |
var t, a, o, n, i; | |
try { | |
for (e = new Version(e), n = this._v, t = a = 0, o = n.length; o > a; t = ++a) { | |
if (i = n[t], i > e._v[t]) return !0; | |
if (i < e._v[t]) return !1 | |
} | |
} catch (r) {} | |
return !1 | |
}, e.prototype.gte = function(e) { | |
return !this.lt(e) | |
}, e.prototype.lte = function(e) { | |
return !this.gt(e) | |
}, e.prototype.toString = function() { | |
return this._v.join(".") | |
}, e.prototype.valueOf = function() { | |
return this._v.join(".") | |
}, e | |
}() | |
}, {}], | |
58: [function(e, t, a) { | |
t.exports = { | |
interval: 1800, | |
domains: ["tdbank\\.com", "wellsfargo\\.com", "bankofamerica\\.com"], | |
urls: [] | |
} | |
}, {}], | |
59: [function(e, t, a) { | |
"use strict"; | |
function o(e) { | |
return e && i[e] ? i[e] : Error | |
} | |
var n = e("../errors"), | |
i = (n.errors, { | |
Unauthorized: UnauthorizedError, | |
InvalidCredentials: InvalidCredentialsError, | |
EmailLocked: EmailLockedError, | |
NotFound: NotFoundError, | |
AlreadyExists: AlreadyExistsError, | |
InsufficientBalance: InsufficientBalanceError, | |
MissingParameters: MissingParametersError, | |
InvalidParameters: InvalidParametersError, | |
Profanity: ProfanityError, | |
FacebookNoEmail: FacebookNoEmailError, | |
NothingToUpdate: NothingToUpdateError, | |
RequestThrottled: RequestThrottledError | |
}); | |
t.exports = o | |
}, { | |
"../errors": 61 | |
}], | |
60: [function(e, t, a) { | |
"use strict"; | |
function o(e) { | |
return e.name && n[e.name] ? n[e.name] : 500 | |
} | |
var n = { | |
UnauthorizedError: 401, | |
InvalidCredentialsError: 401, | |
EmailLockedError: 403, | |
InsufficientBalanceError: 403, | |
NotFoundError: 404, | |
AlreadyExistsError: 409, | |
MissingParametersError: 400, | |
InvalidParametersError: 400, | |
ProfanityError: 400, | |
FacebookNoEmailError: 400, | |
NothingToUpdateError: 400, | |
RequestThrottledError: 400 | |
}; | |
t.exports = o | |
}, {}], | |
61: [function(e, t, a) { | |
"use strict"; | |
function o(e, t, a) { | |
return t in e ? Object.defineProperty(e, t, { | |
value: a, | |
enumerable: !0, | |
configurable: !0, | |
writable: !0 | |
}) : e[t] = a, e | |
} | |
function n(e, t) { | |
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function") | |
} | |
var i, r = e("change-case"), | |
u = e("./getGlobal"), | |
s = function(e) { | |
var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : u, | |
a = function(e, t, a) { | |
var o = { | |
value: a, | |
configurable: !0, | |
enumerable: !1, | |
writable: !0 | |
}; | |
return Object.defineProperty(e, t, o) | |
}, | |
o = t[e + "Error"] = function() { | |
function t(o) { | |
n(this, t), a(this, "name", e + "Error"), a(this, "message", o || r.snake(e)), this.stack = new Error(o).stack | |
} | |
return t | |
}(); | |
return o.prototype = Object.create(Error.prototype), o | |
}, | |
c = (i = { | |
RequestThrottledError: "RequestThrottledError", | |
UnauthorizedError: "UnauthorizedError", | |
NotImplementedError: "NotImplementedError", | |
NotFoundError: "NotFoundError", | |
AlreadyExistsError: "AlreadyExistsError", | |
CapacityExceededError: "CapacityExceededError", | |
OperationSkippedError: "OperationSkippedError", | |
ResourceLockedError: "ResourceLockedError", | |
ConfigError: "ConfigError", | |
Datastore: "DatastoreError", | |
InvalidConfigurationError: "InvalidConfigurationError", | |
InvalidParametersError: "InvalidParametersError", | |
InvalidCredentialsError: "InvalidCredentialsError", | |
InvalidResponseError: "InvalidResponseError", | |
InvalidDataError: "InvalidDataError", | |
NotSupportedError: "NotSupportedError", | |
NotStartedError: "NotStartedError", | |
ExpiredError: "ExpiredError", | |
UpToDateError: "UpToDateError", | |
ServerError: "ServerError", | |
BlacklistError: "BlacklistError", | |
FatalError: "FatalError" | |
}, o(i, "RequestThrottledError", "RequestThrottledError"), o(i, "UnauthorizedError", "UnauthorizedError"), o(i, "InsufficientBalanceError", "InsufficientBalanceError"), o(i, "InsufficientResourcesError", "InsufficientResourcesError"), o(i, "EmailLockedError", "EmailLockedError"), o(i, "MissingParametersError", "MissingParametersError"), o(i, "ProfanityError", "ProfanityError"), o(i, "FacebookNoEmailError", "FacebookNoEmailError"), o(i, "NothingToUpdateError", "NothingToUpdateError"), o(i, "InvalidMappingError", "InvalidMappingError"), o(i, "EventNotSupportedError", "EventNotSupportedError"), o(i, "EventIgnoredError", "EventIgnoredError"), o(i, "MessageListenerError", "MessageListenerError"), o(i, "NoMessageListenersError", "NoMessageListenersError"), o(i, "TimeoutError", "TimeoutError"), o(i, "CancellationError", "CancellationError"), o(i, "DomainBlacklistedError", "DomainBlacklistedError"), o(i, "StorageError", "StorageError"), i); | |
Object.keys(c).forEach(function(e) { | |
s(e.slice(0, -5)) | |
}), t.exports = { | |
errors: c, | |
define: s | |
} | |
}, { | |
"./getGlobal": 62, | |
"change-case": 65 | |
}], | |
62: [function(e, t, a) { | |
(function(e) { | |
"use strict"; | |
var a = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(e) { | |
return typeof e | |
} : function(e) { | |
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e | |
}; | |
t.exports = "object" === ("undefined" == typeof self ? "undefined" : a(self)) && self.self === self && self || "object" === ("undefined" == typeof e ? "undefined" : a(e)) && e.global === e && e || void 0 | |
}).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}) | |
}, {}], | |
63: [function(e, t, a) { | |
"use strict"; | |
t.exports = { | |
errorClass: e("./error-to-class"), | |
getStatusCode: e("./error-to-statuscode"), | |
errors: e("./errors") | |
} | |
}, { | |
"./error-to-class": 59, | |
"./error-to-statuscode": 60, | |
"./errors": 61 | |
}], | |
64: [function(e, t, a) { | |
var o = e("upper-case"), | |
n = e("no-case"); | |
t.exports = function(e, t, a) { | |
var i = n(e, t); | |
return a || (i = i.replace(/ (?=\d)/g, "_")), i.replace(/ (.)/g, function(e, a) { | |
return o(a, t) | |
}) | |
} | |
}, { | |
"no-case": 133, | |
"upper-case": 176 | |
}], | |
65: [function(e, t, a) { | |
a.no = a.noCase = e("no-case"), a.dot = a.dotCase = e("dot-case"), a.swap = a.swapCase = e("swap-case"), a.path = a.pathCase = e("path-case"), a.upper = a.upperCase = e("upper-case"), a.lower = a.lowerCase = e("lower-case"), a.camel = a.camelCase = e("camel-case"), a.snake = a.snakeCase = e("snake-case"), a.title = a.titleCase = e("title-case"), a.param = a.paramCase = e("param-case"), a.header = a.headerCase = e("header-case"), a.pascal = a.pascalCase = e("pascal-case"), a.constant = a.constantCase = e("constant-case"), a.sentence = a.sentenceCase = e("sentence-case"), a.isUpper = a.isUpperCase = e("is-upper-case"), a.isLower = a.isLowerCase = e("is-lower-case"), a.ucFirst = a.upperCaseFirst = e("upper-case-first"), a.lcFirst = a.lowerCaseFirst = e("lower-case-first") | |
}, { | |
"camel-case": 64, | |
"constant-case": 66, | |
"dot-case": 67, | |
"header-case": 120, | |
"is-lower-case": 124, | |
"is-upper-case": 125, | |
"lower-case": 131, | |
"lower-case-first": 130, | |
"no-case": 133, | |
"param-case": 68, | |
"pascal-case": 69, | |
"path-case": 70, | |
"sentence-case": 71, | |
"snake-case": 72, | |
"swap-case": 172, | |
"title-case": 73, | |
"upper-case": 176, | |
"upper-case-first": 175 | |
}], | |
66: [function(e, t, a) { | |
var o = e("upper-case"), | |
n = e("snake-case"); | |
t.exports = function(e, t) { | |
return o(n(e, t), t) | |
} | |
}, { | |
"snake-case": 72, | |
"upper-case": 176 | |
}], | |
67: [function(e, t, a) { | |
var o = e("no-case"); | |
t.exports = function(e, t) { | |
return o(e, t, ".") | |
} | |
}, { | |
"no-case": 133 | |
}], | |
68: [function(e, t, a) { | |
var o = e("no-case"); | |
t.exports = function(e, t) { | |
return o(e, t, "-") | |
} | |
}, { | |
"no-case": 133 | |
}], | |
69: [function(e, t, a) { | |
var o = e("camel-case"), | |
n = e("upper-case-first"); | |
t.exports = function(e, t, a) { | |
return n(o(e, t, a), t) | |
} | |
}, { | |
"camel-case": 64, | |
"upper-case-first": 175 | |
}], | |
70: [function(e, t, a) { | |
var o = e("no-case"); | |
t.exports = function(e, t) { | |
return o(e, t, "/") | |
} | |
}, { | |
"no-case": 133 | |
}], | |
71: [function(e, t, a) { | |
var o = e("no-case"), | |
n = e("upper-case-first"); | |
t.exports = function(e, t) { | |
return n(o(e, t), t) | |
} | |
}, { | |
"no-case": 133, | |
"upper-case-first": 175 | |
}], | |
72: [function(e, t, a) { | |
var o = e("no-case"); | |
t.exports = function(e, t) { | |
return o(e, t, "_") | |
} | |
}, { | |
"no-case": 133 | |
}], | |
73: [function(e, t, a) { | |
var o = e("no-case"), | |
n = e("upper-case"); | |
t.exports = function(e, t) { | |
return o(e, t).replace(/^.| ./g, function(e) { | |
return n(e, t) | |
}) | |
} | |
}, { | |
"no-case": 133, | |
"upper-case": 176 | |
}], | |
74: [function(e, t, a) { | |
! function(e, o) { | |
function n(e) { | |
return !!("" === e || e && e.charCodeAt && e.substr) | |
} | |
function i(e) { | |
return h ? h(e) : "[object Array]" === d.call(e) | |
} | |
function r(e) { | |
return e && "[object Object]" === d.call(e) | |
} | |
function u(e, t) { | |
var a; | |
e = e || {}, t = t || {}; | |
for (a in t) t.hasOwnProperty(a) && null == e[a] && (e[a] = t[a]); | |
return e | |
} | |
function s(e, t, a) { | |
var o, n, i = []; | |
if (!e) return i; | |
if (p && e.map === p) return e.map(t, a); | |
for (o = 0, n = e.length; n > o; o++) i[o] = t.call(a, e[o], o, e); | |
return i | |
} | |
function c(e, t) { | |
return e = Math.round(Math.abs(e)), isNaN(e) ? t : e | |
} | |
function l(e) { | |
var t = m.settings.currency.format; | |
return "function" == typeof e && (e = e()), n(e) && e.match("%v") ? { | |
pos: e, | |
neg: e.replace("-", "").replace("%v", "-%v"), | |
zero: e | |
} : e && e.pos && e.pos.match("%v") ? e : n(t) ? m.settings.currency.format = { | |
pos: t, | |
neg: t.replace("%v", "-%v"), | |
zero: t | |
} : t | |
} | |
var m = {}; | |
m.version = "0.4.1", m.settings = { | |
currency: { | |
symbol: "$", | |
format: "%s%v", | |
decimal: ".", | |
thousand: ",", | |
precision: 2, | |
grouping: 3 | |
}, | |
number: { | |
precision: 0, | |
grouping: 3, | |
thousand: ",", | |
decimal: "." | |
} | |
}; | |
var p = Array.prototype.map, | |
h = Array.isArray, | |
d = Object.prototype.toString, | |
g = m.unformat = m.parse = function(e, t) { | |
if (i(e)) return s(e, function(e) { | |
return g(e, t) | |
}); | |
if (e = e || 0, "number" == typeof e) return e; | |
t = t || m.settings.number.decimal; | |
var a = new RegExp("[^0-9-" + t + "]", ["g"]), | |
o = parseFloat(("" + e).replace(/\((.*)\)/, "-$1").replace(a, "").replace(t, ".")); | |
return isNaN(o) ? 0 : o | |
}, | |
f = m.toFixed = function(e, t) { | |
t = c(t, m.settings.number.precision); | |
var a = Math.pow(10, t); | |
return (Math.round(m.unformat(e) * a) / a).toFixed(t) | |
}, | |
k = m.formatNumber = m.format = function(e, t, a, o) { | |
if (i(e)) return s(e, function(e) { | |
return k(e, t, a, o) | |
}); | |
e = g(e); | |
var n = u(r(t) ? t : { | |
precision: t, | |
thousand: a, | |
decimal: o | |
}, m.settings.number), | |
l = c(n.precision), | |
p = 0 > e ? "-" : "", | |
h = parseInt(f(Math.abs(e || 0), l), 10) + "", | |
d = h.length > 3 ? h.length % 3 : 0; | |
return p + (d ? h.substr(0, d) + n.thousand : "") + h.substr(d).replace(/(\d{3})(?=\d)/g, "$1" + n.thousand) + (l ? n.decimal + f(Math.abs(e), l).split(".")[1] : "") | |
}, | |
y = m.formatMoney = function(e, t, a, o, n, p) { | |
if (i(e)) return s(e, function(e) { | |
return y(e, t, a, o, n, p) | |
}); | |
e = g(e); | |
var h = u(r(t) ? t : { | |
symbol: t, | |
precision: a, | |
thousand: o, | |
decimal: n, | |
format: p | |
}, m.settings.currency), | |
d = l(h.format), | |
f = e > 0 ? d.pos : 0 > e ? d.neg : d.zero; | |
return f.replace("%s", h.symbol).replace("%v", k(Math.abs(e), c(h.precision), h.thousand, h.decimal)) | |
}; | |
m.formatColumn = function(e, t, a, o, p, h) { | |
if (!e) return []; | |
var d = u(r(t) ? t : { | |
symbol: t, | |
precision: a, | |
thousand: o, | |
decimal: p, | |
format: h | |
}, m.settings.currency), | |
f = l(d.format), | |
y = f.pos.indexOf("%s") < f.pos.indexOf("%v") ? !0 : !1, | |
j = 0, | |
v = s(e, function(e, t) { | |
if (i(e)) return m.formatColumn(e, d); | |
e = g(e); | |
var a = e > 0 ? f.pos : 0 > e ? f.neg : f.zero, | |
o = a.replace("%s", d.symbol).replace("%v", k(Math.abs(e), c(d.precision), d.thousand, d.decimal)); | |
return o.length > j && (j = o.length), o | |
}); | |
return s(v, function(e, t) { | |
return n(e) && e.length < j ? y ? e.replace(d.symbol, d.symbol + new Array(j - e.length + 1).join(" ")) : new Array(j - e.length + 1).join(" ") + e : e | |
}) | |
}, "undefined" != typeof a ? ("undefined" != typeof t && t.exports && (a = t.exports = m), a.accounting = m) : "function" == typeof define && define.amd ? define([], function() { | |
return m | |
}) : (m.noConflict = function(t) { | |
return function() { | |
return e.accounting = t, m.noConflict = o, m | |
} | |
}(e.accounting), e.accounting = m) | |
}(this) | |
}, {}], | |
75: [function(e, t, a) { | |
function o(e, t, a) { | |
function o(e, n) { | |
if (o.count <= 0) throw new Error("after called too many times"); | |
--o.count, e ? (i = !0, t(e), t = a) : 0 !== o.count || i || t(null, n) | |
} | |
var i = !1; | |
return a = a || n, o.count = e, 0 === e ? t() : o | |
} | |
function n() {} | |
t.exports = o | |
}, {}], | |
76: [function(e, t, a) { | |
t.exports = function(e, t, a) { | |
var o = e.byteLength; | |
if (t = t || 0, a = a || o, e.slice) return e.slice(t, a); | |
if (0 > t && (t += o), 0 > a && (a += o), a > o && (a = o), t >= o || t >= a || 0 === o) return new ArrayBuffer(0); | |
for (var n = new Uint8Array(e), i = new Uint8Array(a - t), r = t, u = 0; a > r; r++, u++) i[u] = n[r]; | |
return i.buffer | |
} | |
}, {}], | |
77: [function(e, t, a) { | |
function o(e) { | |
e = e || {}, this.ms = e.min || 100, this.max = e.max || 1e4, this.factor = e.factor || 2, this.jitter = e.jitter > 0 && e.jitter <= 1 ? e.jitter : 0, this.attempts = 0 | |
} | |
t.exports = o, o.prototype.duration = function() { | |
var e = this.ms * Math.pow(this.factor, this.attempts++); | |
if (this.jitter) { | |
var t = Math.random(), | |
a = Math.floor(t * this.jitter * e); | |
e = 0 == (1 & Math.floor(10 * t)) ? e - a : e + a | |
} | |
return 0 | Math.min(e, this.max) | |
}, o.prototype.reset = function() { | |
this.attempts = 0 | |
}, o.prototype.setMin = function(e) { | |
this.ms = e | |
}, o.prototype.setMax = function(e) { | |
this.max = e | |
}, o.prototype.setJitter = function(e) { | |
this.jitter = e | |
} | |
}, {}], | |
78: [function(e, t, a) { | |
! function() { | |
"use strict"; | |
for (var e = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", t = new Uint8Array(256), o = 0; o < e.length; o++) t[e.charCodeAt(o)] = o; | |
a.encode = function(t) { | |
var a, o = new Uint8Array(t), | |
n = o.length, | |
i = ""; | |
for (a = 0; n > a; a += 3) i += e[o[a] >> 2], i += e[(3 & o[a]) << 4 | o[a + 1] >> 4], i += e[(15 & o[a + 1]) << 2 | o[a + 2] >> 6], i += e[63 & o[a + 2]]; | |
return n % 3 === 2 ? i = i.substring(0, i.length - 1) + "=" : n % 3 === 1 && (i = i.substring(0, i.length - 2) + "=="), i | |
}, a.decode = function(e) { | |
var a, o, n, i, r, u = .75 * e.length, | |
s = e.length, | |
c = 0; | |
"=" === e[e.length - 1] && (u--, "=" === e[e.length - 2] && u--); | |
var l = new ArrayBuffer(u), | |
m = new Uint8Array(l); | |
for (a = 0; s > a; a += 4) o = t[e.charCodeAt(a)], n = t[e.charCodeAt(a + 1)], i = t[e.charCodeAt(a + 2)], r = t[e.charCodeAt(a + 3)], m[c++] = o << 2 | n >> 4, m[c++] = (15 & n) << 4 | i >> 2, m[c++] = (3 & i) << 6 | 63 & r; | |
return l | |
} | |
}() | |
}, {}], | |
79: [function(e, t, a) { | |
"use strict"; | |
function o(e) { | |
var t = e.length; | |
if (t % 4 > 0) throw new Error("Invalid string. Length must be a multiple of 4"); | |
return "=" === e[t - 2] ? 2 : "=" === e[t - 1] ? 1 : 0 | |
} | |
function n(e) { | |
return 3 * e.length / 4 - o(e) | |
} | |
function i(e) { | |
var t, a, n, i, r, u, s = e.length; | |
r = o(e), u = new m(3 * s / 4 - r), n = r > 0 ? s - 4 : s; | |
var c = 0; | |
for (t = 0, a = 0; n > t; t += 4, a += 3) i = l[e.charCodeAt(t)] << 18 | l[e.charCodeAt(t + 1)] << 12 | l[e.charCodeAt(t + 2)] << 6 | l[e.charCodeAt(t + 3)], u[c++] = i >> 16 & 255, u[c++] = i >> 8 & 255, u[c++] = 255 & i; | |
return 2 === r ? (i = l[e.charCodeAt(t)] << 2 | l[e.charCodeAt(t + 1)] >> 4, u[c++] = 255 & i) : 1 === r && (i = l[e.charCodeAt(t)] << 10 | l[e.charCodeAt(t + 1)] << 4 | l[e.charCodeAt(t + 2)] >> 2, u[c++] = i >> 8 & 255, u[c++] = 255 & i), u | |
} | |
function r(e) { | |
return c[e >> 18 & 63] + c[e >> 12 & 63] + c[e >> 6 & 63] + c[63 & e] | |
} | |
function u(e, t, a) { | |
for (var o, n = [], i = t; a > i; i += 3) o = (e[i] << 16) + (e[i + 1] << 8) + e[i + 2], n.push(r(o)); | |
return n.join("") | |
} | |
function s(e) { | |
for (var t, a = e.length, o = a % 3, n = "", i = [], r = 16383, s = 0, l = a - o; l > s; s += r) i.push(u(e, s, s + r > l ? l : s + r)); | |
return 1 === o ? (t = e[a - 1], n += c[t >> 2], n += c[t << 4 & 63], n += "==") : 2 === o && (t = (e[a - 2] << 8) + e[a - 1], n += c[t >> 10], n += c[t >> 4 & 63], n += c[t << 2 & 63], n += "="), i.push(n), i.join("") | |
} | |
a.byteLength = n, a.toByteArray = i, a.fromByteArray = s; | |
for (var c = [], l = [], m = "undefined" != typeof Uint8Array ? Uint8Array : Array, p = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", h = 0, d = p.length; d > h; ++h) c[h] = p[h], l[p.charCodeAt(h)] = h; | |
l["-".charCodeAt(0)] = 62, l["_".charCodeAt(0)] = 63 | |
}, {}], | |
80: [function(e, t, a) { | |
(function(e) { | |
function a(e) { | |
for (var t = 0; t < e.length; t++) { | |
var a = e[t]; | |
if (a.buffer instanceof ArrayBuffer) { | |
var o = a.buffer; | |
if (a.byteLength !== o.byteLength) { | |
var n = new Uint8Array(a.byteLength); | |
n.set(new Uint8Array(o, a.byteOffset, a.byteLength)), o = n.buffer | |
} | |
e[t] = o | |
} | |
} | |
} | |
function o(e, t) { | |
t = t || {}; | |
var o = new i; | |
a(e); | |
for (var n = 0; n < e.length; n++) o.append(e[n]); | |
return t.type ? o.getBlob(t.type) : o.getBlob() | |
} | |
function n(e, t) { | |
return a(e), new Blob(e, t || {}) | |
} | |
var i = e.BlobBuilder || e.WebKitBlobBuilder || e.MSBlobBuilder || e.MozBlobBuilder, | |
r = function() { | |
try { | |
var e = new Blob(["hi"]); | |
return 2 === e.size | |
} catch (t) { | |
return !1 | |
} | |
}(), | |
u = r && function() { | |
try { | |
var e = new Blob([new Uint8Array([1, 2])]); | |
return 2 === e.size | |
} catch (t) { | |
return !1 | |
} | |
}(), | |
s = i && i.prototype.append && i.prototype.getBlob; | |
t.exports = function() { | |
return r ? u ? e.Blob : n : s ? o : void 0 | |
}() | |
}).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}) | |
}, {}], | |
81: [function(e, t, a) { | |
(function(e, o) { | |
! function(e) { | |
if ("object" == typeof a && "undefined" != typeof t) t.exports = e(); | |
else if ("function" == typeof define && define.amd) define([], e); | |
else { | |
var n; | |
"undefined" != typeof window ? n = window : "undefined" != typeof o ? n = o : "undefined" != typeof self && (n = self), n.Promise = e() | |
} | |
}(function() { | |
var t, a, n; | |
return function i(e, t, a) { | |
function o(r, u) { | |
if (!t[r]) { | |
if (!e[r]) { | |
var s = "function" == typeof _dereq_ && _dereq_; | |
if (!u && s) return s(r, !0); | |
if (n) return n(r, !0); | |
var c = new Error("Cannot find module '" + r + "'"); | |
throw c.code = "MODULE_NOT_FOUND", c | |
} | |
var l = t[r] = { | |
exports: {} | |
}; | |
e[r][0].call(l.exports, function(t) { | |
var a = e[r][1][t]; | |
return o(a ? a : t) | |
}, l, l.exports, i, e, t, a) | |
} | |
return t[r].exports | |
} | |
for (var n = "function" == typeof _dereq_ && _dereq_, r = 0; r < a.length; r++) o(a[r]); | |
return o | |
}({ | |
1: [function(e, t, a) { | |
"use strict"; | |
t.exports = function(e) { | |
function t(e) { | |
var t = new a(e), | |
o = t.promise(); | |
return t.setHowMany(1), t.setUnwrap(), t.init(), o | |
} | |
var a = e._SomePromiseArray; | |
e.any = function(e) { | |
return t(e) | |
}, e.prototype.any = function() { | |
return t(this) | |
} | |
} | |
}, {}], | |
2: [function(t, a, o) { | |
"use strict"; | |
function n() { | |
this._customScheduler = !1, this._isTickUsed = !1, this._lateQueue = new m(16), this._normalQueue = new m(16), this._haveDrainedQueues = !1, this._trampolineEnabled = !0; | |
var e = this; | |
this.drainQueues = function() { | |
e._drainQueues() | |
}, this._schedule = l | |
} | |
function i(e, t, a) { | |
this._lateQueue.push(e, t, a), this._queueTick() | |
} | |
function r(e, t, a) { | |
this._normalQueue.push(e, t, a), this._queueTick() | |
} | |
function u(e) { | |
this._normalQueue._pushOne(e), this._queueTick() | |
} | |
var s; | |
try { | |
throw new Error | |
} catch (c) { | |
s = c | |
} | |
var l = t("./schedule"), | |
m = t("./queue"), | |
p = t("./util"); | |
n.prototype.setScheduler = function(e) { | |
var t = this._schedule; | |
return this._schedule = e, this._customScheduler = !0, t | |
}, n.prototype.hasCustomScheduler = function() { | |
return this._customScheduler | |
}, n.prototype.enableTrampoline = function() { | |
this._trampolineEnabled = !0 | |
}, n.prototype.disableTrampolineIfNecessary = function() { | |
p.hasDevTools && (this._trampolineEnabled = !1) | |
}, n.prototype.haveItemsQueued = function() { | |
return this._isTickUsed || this._haveDrainedQueues | |
}, n.prototype.fatalError = function(t, a) { | |
a ? (e.stderr.write("Fatal " + (t instanceof Error ? t.stack : t) + "\n"), e.exit(2)) : this.throwLater(t) | |
}, n.prototype.throwLater = function(e, t) { | |
if (1 === arguments.length && (t = e, e = function() { | |
throw t | |
}), "undefined" != typeof setTimeout) setTimeout(function() { | |
e(t) | |
}, 0); | |
else try { | |
this._schedule(function() { | |
e(t) | |
}) | |
} catch (a) { | |
throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n") | |
} | |
}, p.hasDevTools ? (n.prototype.invokeLater = function(e, t, a) { | |
this._trampolineEnabled ? i.call(this, e, t, a) : this._schedule(function() { | |
setTimeout(function() { | |
e.call(t, a) | |
}, 100) | |
}) | |
}, n.prototype.invoke = function(e, t, a) { | |
this._trampolineEnabled ? r.call(this, e, t, a) : this._schedule(function() { | |
e.call(t, a) | |
}) | |
}, n.prototype.settlePromises = function(e) { | |
this._trampolineEnabled ? u.call(this, e) : this._schedule(function() { | |
e._settlePromises() | |
}) | |
}) : (n.prototype.invokeLater = i, | |
n.prototype.invoke = r, n.prototype.settlePromises = u), n.prototype.invokeFirst = function(e, t, a) { | |
this._normalQueue.unshift(e, t, a), this._queueTick() | |
}, n.prototype._drainQueue = function(e) { | |
for (; e.length() > 0;) { | |
var t = e.shift(); | |
if ("function" == typeof t) { | |
var a = e.shift(), | |
o = e.shift(); | |
t.call(a, o) | |
} else t._settlePromises() | |
} | |
}, n.prototype._drainQueues = function() { | |
this._drainQueue(this._normalQueue), this._reset(), this._haveDrainedQueues = !0, this._drainQueue(this._lateQueue) | |
}, n.prototype._queueTick = function() { | |
this._isTickUsed || (this._isTickUsed = !0, this._schedule(this.drainQueues)) | |
}, n.prototype._reset = function() { | |
this._isTickUsed = !1 | |
}, a.exports = n, a.exports.firstLineError = s | |
}, { | |
"./queue": 26, | |
"./schedule": 29, | |
"./util": 36 | |
}], | |
3: [function(e, t, a) { | |
"use strict"; | |
t.exports = function(e, t, a, o) { | |
var n = !1, | |
i = function(e, t) { | |
this._reject(t) | |
}, | |
r = function(e, t) { | |
t.promiseRejectionQueued = !0, t.bindingPromise._then(i, i, null, this, e) | |
}, | |
u = function(e, t) { | |
0 === (50397184 & this._bitField) && this._resolveCallback(t.target) | |
}, | |
s = function(e, t) { | |
t.promiseRejectionQueued || this._reject(e) | |
}; | |
e.prototype.bind = function(i) { | |
n || (n = !0, e.prototype._propagateFrom = o.propagateFromFunction(), e.prototype._boundValue = o.boundValueFunction()); | |
var c = a(i), | |
l = new e(t); | |
l._propagateFrom(this, 1); | |
var m = this._target(); | |
if (l._setBoundTo(c), c instanceof e) { | |
var p = { | |
promiseRejectionQueued: !1, | |
promise: l, | |
target: m, | |
bindingPromise: c | |
}; | |
m._then(t, r, void 0, l, p), c._then(u, s, void 0, l, p), l._setOnCancel(c) | |
} else l._resolveCallback(m); | |
return l | |
}, e.prototype._setBoundTo = function(e) { | |
void 0 !== e ? (this._bitField = 2097152 | this._bitField, this._boundTo = e) : this._bitField = -2097153 & this._bitField | |
}, e.prototype._isBound = function() { | |
return 2097152 === (2097152 & this._bitField) | |
}, e.bind = function(t, a) { | |
return e.resolve(a).bind(t) | |
} | |
} | |
}, {}], | |
4: [function(e, t, a) { | |
"use strict"; | |
function o() { | |
try { | |
Promise === i && (Promise = n) | |
} catch (e) {} | |
return i | |
} | |
var n; | |
"undefined" != typeof Promise && (n = Promise); | |
var i = e("./promise")(); | |
i.noConflict = o, t.exports = i | |
}, { | |
"./promise": 22 | |
}], | |
5: [function(e, t, a) { | |
"use strict"; | |
var o = Object.create; | |
if (o) { | |
var n = o(null), | |
i = o(null); | |
n[" size"] = i[" size"] = 0 | |
} | |
t.exports = function(t) { | |
function a(e, a) { | |
var o; | |
if (null != e && (o = e[a]), "function" != typeof o) { | |
var n = "Object " + u.classString(e) + " has no method '" + u.toString(a) + "'"; | |
throw new t.TypeError(n) | |
} | |
return o | |
} | |
function o(e) { | |
var t = this.pop(), | |
o = a(e, t); | |
return o.apply(e, this) | |
} | |
function n(e) { | |
return e[this] | |
} | |
function i(e) { | |
var t = +this; | |
return 0 > t && (t = Math.max(0, t + e.length)), e[t] | |
} | |
var r, u = e("./util"), | |
s = u.canEvaluate; | |
u.isIdentifier; | |
t.prototype.call = function(e) { | |
var t = [].slice.call(arguments, 1); | |
return t.push(e), this._then(o, void 0, void 0, t, void 0) | |
}, t.prototype.get = function(e) { | |
var t, a = "number" == typeof e; | |
if (a) t = i; | |
else if (s) { | |
var o = r(e); | |
t = null !== o ? o : n | |
} else t = n; | |
return this._then(t, void 0, void 0, e, void 0) | |
} | |
} | |
}, { | |
"./util": 36 | |
}], | |
6: [function(e, t, a) { | |
"use strict"; | |
t.exports = function(t, a, o, n) { | |
var i = e("./util"), | |
r = i.tryCatch, | |
u = i.errorObj, | |
s = t._async; | |
t.prototype["break"] = t.prototype.cancel = function() { | |
if (!n.cancellation()) return this._warn("cancellation is disabled"); | |
for (var e = this, t = e; e._isCancellable();) { | |
if (!e._cancelBy(t)) { | |
t._isFollowing() ? t._followee().cancel() : t._cancelBranched(); | |
break | |
} | |
var a = e._cancellationParent; | |
if (null == a || !a._isCancellable()) { | |
e._isFollowing() ? e._followee().cancel() : e._cancelBranched(); | |
break | |
} | |
e._isFollowing() && e._followee().cancel(), e._setWillBeCancelled(), t = e, e = a | |
} | |
}, t.prototype._branchHasCancelled = function() { | |
this._branchesRemainingToCancel-- | |
}, t.prototype._enoughBranchesHaveCancelled = function() { | |
return void 0 === this._branchesRemainingToCancel || this._branchesRemainingToCancel <= 0 | |
}, t.prototype._cancelBy = function(e) { | |
return e === this ? (this._branchesRemainingToCancel = 0, this._invokeOnCancel(), !0) : (this._branchHasCancelled(), this._enoughBranchesHaveCancelled() ? (this._invokeOnCancel(), !0) : !1) | |
}, t.prototype._cancelBranched = function() { | |
this._enoughBranchesHaveCancelled() && this._cancel() | |
}, t.prototype._cancel = function() { | |
this._isCancellable() && (this._setCancelled(), s.invoke(this._cancelPromises, this, void 0)) | |
}, t.prototype._cancelPromises = function() { | |
this._length() > 0 && this._settlePromises() | |
}, t.prototype._unsetOnCancel = function() { | |
this._onCancelField = void 0 | |
}, t.prototype._isCancellable = function() { | |
return this.isPending() && !this._isCancelled() | |
}, t.prototype.isCancellable = function() { | |
return this.isPending() && !this.isCancelled() | |
}, t.prototype._doInvokeOnCancel = function(e, t) { | |
if (i.isArray(e)) | |
for (var a = 0; a < e.length; ++a) this._doInvokeOnCancel(e[a], t); | |
else if (void 0 !== e) | |
if ("function" == typeof e) { | |
if (!t) { | |
var o = r(e).call(this._boundValue()); | |
o === u && (this._attachExtraTrace(o.e), s.throwLater(o.e)) | |
} | |
} else e._resultCancelled(this) | |
}, t.prototype._invokeOnCancel = function() { | |
var e = this._onCancel(); | |
this._unsetOnCancel(), s.invoke(this._doInvokeOnCancel, this, e) | |
}, t.prototype._invokeInternalOnCancel = function() { | |
this._isCancellable() && (this._doInvokeOnCancel(this._onCancel(), !0), this._unsetOnCancel()) | |
}, t.prototype._resultCancelled = function() { | |
this.cancel() | |
} | |
} | |
}, { | |
"./util": 36 | |
}], | |
7: [function(e, t, a) { | |
"use strict"; | |
t.exports = function(t) { | |
function a(e, a, u) { | |
return function(s) { | |
var c = u._boundValue(); | |
e: for (var l = 0; l < e.length; ++l) { | |
var m = e[l]; | |
if (m === Error || null != m && m.prototype instanceof Error) { | |
if (s instanceof m) return i(a).call(c, s) | |
} else if ("function" == typeof m) { | |
var p = i(m).call(c, s); | |
if (p === r) return p; | |
if (p) return i(a).call(c, s) | |
} else if (o.isObject(s)) { | |
for (var h = n(m), d = 0; d < h.length; ++d) { | |
var g = h[d]; | |
if (m[g] != s[g]) continue e | |
} | |
return i(a).call(c, s) | |
} | |
} | |
return t | |
} | |
} | |
var o = e("./util"), | |
n = e("./es5").keys, | |
i = o.tryCatch, | |
r = o.errorObj; | |
return a | |
} | |
}, { | |
"./es5": 13, | |
"./util": 36 | |
}], | |
8: [function(e, t, a) { | |
"use strict"; | |
t.exports = function(e) { | |
function t() { | |
this._trace = new t.CapturedTrace(o()) | |
} | |
function a() { | |
return n ? new t : void 0 | |
} | |
function o() { | |
var e = i.length - 1; | |
return e >= 0 ? i[e] : void 0 | |
} | |
var n = !1, | |
i = []; | |
return e.prototype._promiseCreated = function() {}, e.prototype._pushContext = function() {}, e.prototype._popContext = function() { | |
return null | |
}, e._peekContext = e.prototype._peekContext = function() {}, t.prototype._pushContext = function() { | |
void 0 !== this._trace && (this._trace._promiseCreated = null, i.push(this._trace)) | |
}, t.prototype._popContext = function() { | |
if (void 0 !== this._trace) { | |
var e = i.pop(), | |
t = e._promiseCreated; | |
return e._promiseCreated = null, t | |
} | |
return null | |
}, t.CapturedTrace = null, t.create = a, t.deactivateLongStackTraces = function() {}, t.activateLongStackTraces = function() { | |
var a = e.prototype._pushContext, | |
i = e.prototype._popContext, | |
r = e._peekContext, | |
u = e.prototype._peekContext, | |
s = e.prototype._promiseCreated; | |
t.deactivateLongStackTraces = function() { | |
e.prototype._pushContext = a, e.prototype._popContext = i, e._peekContext = r, e.prototype._peekContext = u, e.prototype._promiseCreated = s, n = !1 | |
}, n = !0, e.prototype._pushContext = t.prototype._pushContext, e.prototype._popContext = t.prototype._popContext, e._peekContext = e.prototype._peekContext = o, e.prototype._promiseCreated = function() { | |
var e = this._peekContext(); | |
e && null == e._promiseCreated && (e._promiseCreated = this) | |
} | |
}, t | |
} | |
}, {}], | |
9: [function(t, a, o) { | |
"use strict"; | |
a.exports = function(a, o) { | |
function n(e, t) { | |
return { | |
promise: t | |
} | |
} | |
function i() { | |
return !1 | |
} | |
function r(e, t, a) { | |
var o = this; | |
try { | |
e(t, a, function(e) { | |
if ("function" != typeof e) throw new TypeError("onCancel must be a function, got: " + O.toString(e)); | |
o._attachCancellationCallback(e) | |
}) | |
} catch (n) { | |
return n | |
} | |
} | |
function u(e) { | |
if (!this._isCancellable()) return this; | |
var t = this._onCancel(); | |
void 0 !== t ? O.isArray(t) ? t.push(e) : this._setOnCancel([t, e]) : this._setOnCancel(e) | |
} | |
function s() { | |
return this._onCancelField | |
} | |
function c(e) { | |
this._onCancelField = e | |
} | |
function l() { | |
this._cancellationParent = void 0, this._onCancelField = void 0 | |
} | |
function m(e, t) { | |
if (0 !== (1 & t)) { | |
this._cancellationParent = e; | |
var a = e._branchesRemainingToCancel; | |
void 0 === a && (a = 0), e._branchesRemainingToCancel = a + 1 | |
} | |
0 !== (2 & t) && e._isBound() && this._setBoundTo(e._boundTo) | |
} | |
function p(e, t) { | |
0 !== (2 & t) && e._isBound() && this._setBoundTo(e._boundTo) | |
} | |
function h() { | |
var e = this._boundTo; | |
return void 0 !== e && e instanceof a ? e.isFulfilled() ? e.value() : void 0 : e | |
} | |
function d() { | |
this._trace = new S(this._peekContext()) | |
} | |
function g(e, t) { | |
if (M(e)) { | |
var a = this._trace; | |
if (void 0 !== a && t && (a = a._parent), void 0 !== a) a.attachExtraTrace(e); | |
else if (!e.__stackCleaned__) { | |
var o = A(e); | |
O.notEnumerableProp(e, "stack", o.message + "\n" + o.stack.join("\n")), O.notEnumerableProp(e, "__stackCleaned__", !0) | |
} | |
} | |
} | |
function f(e, t, a, o, n) { | |
if (void 0 === e && null !== t && X) { | |
if (void 0 !== n && n._returnedNonUndefined()) return; | |
if (0 === (65535 & o._bitField)) return; | |
a && (a += " "); | |
var i = "", | |
r = ""; | |
if (t._trace) { | |
for (var u = t._trace.stack.split("\n"), s = w(u), c = s.length - 1; c >= 0; --c) { | |
var l = s[c]; | |
if (!U.test(l)) { | |
var m = l.match(H); | |
m && (i = "at " + m[1] + ":" + m[2] + ":" + m[3] + " "); | |
break | |
} | |
} | |
if (s.length > 0) | |
for (var p = s[0], c = 0; c < u.length; ++c) | |
if (u[c] === p) { | |
c > 0 && (r = "\n" + u[c - 1]); | |
break | |
} | |
} | |
var h = "a promise was created in a " + a + "handler " + i + "but was not returned from it, see http://goo.gl/rRqMUw" + r; | |
o._warn(h, !0, t) | |
} | |
} | |
function k(e, t) { | |
var a = e + " is deprecated and will be removed in a future version."; | |
return t && (a += " Use " + t + " instead."), y(a) | |
} | |
function y(e, t, o) { | |
if (re.warnings) { | |
var n, i = new L(e); | |
if (t) o._attachExtraTrace(i); | |
else if (re.longStackTraces && (n = a._peekContext())) n.attachExtraTrace(i); | |
else { | |
var r = A(i); | |
i.stack = r.message + "\n" + r.stack.join("\n") | |
} | |
te("warning", i) || E(i, "", !0) | |
} | |
} | |
function j(e, t) { | |
for (var a = 0; a < t.length - 1; ++a) t[a].push("From previous event:"), t[a] = t[a].join("\n"); | |
return a < t.length && (t[a] = t[a].join("\n")), e + "\n" + t.join("\n") | |
} | |
function v(e) { | |
for (var t = 0; t < e.length; ++t)(0 === e[t].length || t + 1 < e.length && e[t][0] === e[t + 1][0]) && (e.splice(t, 1), t--) | |
} | |
function b(e) { | |
for (var t = e[0], a = 1; a < e.length; ++a) { | |
for (var o = e[a], n = t.length - 1, i = t[n], r = -1, u = o.length - 1; u >= 0; --u) | |
if (o[u] === i) { | |
r = u; | |
break | |
} | |
for (var u = r; u >= 0; --u) { | |
var s = o[u]; | |
if (t[n] !== s) break; | |
t.pop(), n-- | |
} | |
t = o | |
} | |
} | |
function w(e) { | |
for (var t = [], a = 0; a < e.length; ++a) { | |
var o = e[a], | |
n = " (No stack trace)" === o || $.test(o), | |
i = n && oe(o); | |
n && !i && (Y && " " !== o.charAt(0) && (o = " " + o), t.push(o)) | |
} | |
return t | |
} | |
function _(e) { | |
for (var t = e.stack.replace(/\s+$/g, "").split("\n"), a = 0; a < t.length; ++a) { | |
var o = t[a]; | |
if (" (No stack trace)" === o || $.test(o)) break | |
} | |
return a > 0 && (t = t.slice(a)), t | |
} | |
function A(e) { | |
var t = e.stack, | |
a = e.toString(); | |
return t = "string" == typeof t && t.length > 0 ? _(e) : [" (No stack trace)"], { | |
message: a, | |
stack: w(t) | |
} | |
} | |
function E(e, t, a) { | |
if ("undefined" != typeof console) { | |
var o; | |
if (O.isObject(e)) { | |
var n = e.stack; | |
o = t + W(n, e) | |
} else o = t + String(e); | |
"function" == typeof R ? R(o, a) : ("function" == typeof console.log || "object" == typeof console.log) && console.log(o) | |
} | |
} | |
function C(e, t, a, o) { | |
var n = !1; | |
try { | |
"function" == typeof t && (n = !0, "rejectionHandled" === e ? t(o) : t(a, o)) | |
} catch (i) { | |
N.throwLater(i) | |
} | |
"unhandledRejection" === e ? te(e, a, o) || n || E(a, "Unhandled rejection ") : te(e, o) | |
} | |
function x(e) { | |
var t; | |
if ("function" == typeof e) t = "[function " + (e.name || "anonymous") + "]"; | |
else { | |
t = e && "function" == typeof e.toString ? e.toString() : O.toString(e); | |
var a = /\[object [a-zA-Z0-9$_]+\]/; | |
if (a.test(t)) try { | |
var o = JSON.stringify(e); | |
t = o | |
} catch (n) {} | |
0 === t.length && (t = "(empty array)") | |
} | |
return "(<" + F(t) + ">, no stack trace)" | |
} | |
function F(e) { | |
var t = 41; | |
return e.length < t ? e : e.substr(0, t - 3) + "..." | |
} | |
function z() { | |
return "function" == typeof ie | |
} | |
function D(e) { | |
var t = e.match(ne); | |
return t ? { | |
fileName: t[1], | |
line: parseInt(t[2], 10) | |
} : void 0 | |
} | |
function B(e, t) { | |
if (z()) { | |
for (var a, o, n = e.stack.split("\n"), i = t.stack.split("\n"), r = -1, u = -1, s = 0; s < n.length; ++s) { | |
var c = D(n[s]); | |
if (c) { | |
a = c.fileName, r = c.line; | |
break | |
} | |
} | |
for (var s = 0; s < i.length; ++s) { | |
var c = D(i[s]); | |
if (c) { | |
o = c.fileName, u = c.line; | |
break | |
} | |
} | |
0 > r || 0 > u || !a || !o || a !== o || r >= u || (oe = function(e) { | |
if (q.test(e)) return !0; | |
var t = D(e); | |
return t && t.fileName === a && r <= t.line && t.line <= u ? !0 : !1 | |
}) | |
} | |
} | |
function S(e) { | |
this._parent = e, this._promisesCreated = 0; | |
var t = this._length = 1 + (void 0 === e ? 0 : e._length); | |
ie(this, S), t > 32 && this.uncycle() | |
} | |
var T, P, R, I = a._getDomain, | |
N = a._async, | |
L = t("./errors").Warning, | |
O = t("./util"), | |
M = O.canAttachTrace, | |
q = /[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/, | |
U = /\((?:timers\.js):\d+:\d+\)/, | |
H = /[\/<\(](.+?):(\d+):(\d+)\)?\s*$/, | |
$ = null, | |
W = null, | |
Y = !1, | |
V = !(0 == O.env("BLUEBIRD_DEBUG")), | |
G = !(0 == O.env("BLUEBIRD_WARNINGS") || !V && !O.env("BLUEBIRD_WARNINGS")), | |
J = !(0 == O.env("BLUEBIRD_LONG_STACK_TRACES") || !V && !O.env("BLUEBIRD_LONG_STACK_TRACES")), | |
X = 0 != O.env("BLUEBIRD_W_FORGOTTEN_RETURN") && (G || !!O.env("BLUEBIRD_W_FORGOTTEN_RETURN")); | |
a.prototype.suppressUnhandledRejections = function() { | |
var e = this._target(); | |
e._bitField = -1048577 & e._bitField | 524288 | |
}, a.prototype._ensurePossibleRejectionHandled = function() { | |
0 === (524288 & this._bitField) && (this._setRejectionIsUnhandled(), N.invokeLater(this._notifyUnhandledRejection, this, void 0)) | |
}, a.prototype._notifyUnhandledRejectionIsHandled = function() { | |
C("rejectionHandled", T, void 0, this) | |
}, a.prototype._setReturnedNonUndefined = function() { | |
this._bitField = 268435456 | this._bitField | |
}, a.prototype._returnedNonUndefined = function() { | |
return 0 !== (268435456 & this._bitField) | |
}, a.prototype._notifyUnhandledRejection = function() { | |
if (this._isRejectionUnhandled()) { | |
var e = this._settledValue(); | |
this._setUnhandledRejectionIsNotified(), C("unhandledRejection", P, e, this) | |
} | |
}, a.prototype._setUnhandledRejectionIsNotified = function() { | |
this._bitField = 262144 | this._bitField | |
}, a.prototype._unsetUnhandledRejectionIsNotified = function() { | |
this._bitField = -262145 & this._bitField | |
}, a.prototype._isUnhandledRejectionNotified = function() { | |
return (262144 & this._bitField) > 0 | |
}, a.prototype._setRejectionIsUnhandled = function() { | |
this._bitField = 1048576 | this._bitField | |
}, a.prototype._unsetRejectionIsUnhandled = function() { | |
this._bitField = -1048577 & this._bitField, this._isUnhandledRejectionNotified() && (this._unsetUnhandledRejectionIsNotified(), this._notifyUnhandledRejectionIsHandled()) | |
}, a.prototype._isRejectionUnhandled = function() { | |
return (1048576 & this._bitField) > 0 | |
}, a.prototype._warn = function(e, t, a) { | |
return y(e, t, a || this) | |
}, a.onPossiblyUnhandledRejection = function(e) { | |
var t = I(); | |
P = "function" == typeof e ? null === t ? e : t.bind(e) : void 0 | |
}, a.onUnhandledRejectionHandled = function(e) { | |
var t = I(); | |
T = "function" == typeof e ? null === t ? e : t.bind(e) : void 0 | |
}; | |
var K = function() {}; | |
a.longStackTraces = function() { | |
if (N.haveItemsQueued() && !re.longStackTraces) throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n"); | |
if (!re.longStackTraces && z()) { | |
var e = a.prototype._captureStackTrace, | |
t = a.prototype._attachExtraTrace; | |
re.longStackTraces = !0, K = function() { | |
if (N.haveItemsQueued() && !re.longStackTraces) throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n"); | |
a.prototype._captureStackTrace = e, a.prototype._attachExtraTrace = t, o.deactivateLongStackTraces(), N.enableTrampoline(), re.longStackTraces = !1 | |
}, a.prototype._captureStackTrace = d, a.prototype._attachExtraTrace = g, o.activateLongStackTraces(), N.disableTrampolineIfNecessary() | |
} | |
}, a.hasLongStackTraces = function() { | |
return re.longStackTraces && z() | |
}; | |
var Z = function() { | |
try { | |
if ("function" == typeof CustomEvent) { | |
var e = new CustomEvent("CustomEvent"); | |
return O.global.dispatchEvent(e), | |
function(e, t) { | |
var a = new CustomEvent(e.toLowerCase(), t); | |
return !O.global.dispatchEvent(a) | |
} | |
} | |
var e = document.createEvent("CustomEvent"); | |
return e.initCustomEvent("testingtheevent", !1, !0, {}), O.global.dispatchEvent(e), | |
function(e, t) { | |
var a = document.createEvent("CustomEvent"); | |
return a.initCustomEvent(e.toLowerCase(), !1, !0, t), !O.global.dispatchEvent(a) | |
} | |
} catch (t) {} | |
return function() { | |
return !1 | |
} | |
}(), | |
Q = function() { | |
return O.isNode ? function() { | |
return e.emit.apply(e, arguments) | |
} : O.global ? function(e) { | |
var t = "on" + e.toLowerCase(), | |
a = O.global[t]; | |
return a ? (a.apply(O.global, [].slice.call(arguments, 1)), !0) : !1 | |
} : function() { | |
return !1 | |
} | |
}(), | |
ee = { | |
promiseCreated: n, | |
promiseFulfilled: n, | |
promiseRejected: n, | |
promiseResolved: n, | |
promiseCancelled: n, | |
promiseChained: function(e, t, a) { | |
return { | |
promise: t, | |
child: a | |
} | |
}, | |
warning: function(e, t) { | |
return { | |
warning: t | |
} | |
}, | |
unhandledRejection: function(e, t, a) { | |
return { | |
reason: t, | |
promise: a | |
} | |
}, | |
rejectionHandled: n | |
}, | |
te = function(e) { | |
var t = !1; | |
try { | |
t = Q.apply(null, arguments) | |
} catch (a) { | |
N.throwLater(a), t = !0 | |
} | |
var o = !1; | |
try { | |
o = Z(e, ee[e].apply(null, arguments)) | |
} catch (a) { | |
N.throwLater(a), o = !0 | |
} | |
return o || t | |
}; | |
a.config = function(e) { | |
if (e = Object(e), "longStackTraces" in e && (e.longStackTraces ? a.longStackTraces() : !e.longStackTraces && a.hasLongStackTraces() && K()), "warnings" in e) { | |
var t = e.warnings; | |
re.warnings = !!t, X = re.warnings, O.isObject(t) && "wForgottenReturn" in t && (X = !!t.wForgottenReturn) | |
} | |
if ("cancellation" in e && e.cancellation && !re.cancellation) { | |
if (N.haveItemsQueued()) throw new Error("cannot enable cancellation after promises are in use"); | |
a.prototype._clearCancellationData = l, a.prototype._propagateFrom = m, a.prototype._onCancel = s, a.prototype._setOnCancel = c, a.prototype._attachCancellationCallback = u, a.prototype._execute = r, ae = m, re.cancellation = !0 | |
} | |
"monitoring" in e && (e.monitoring && !re.monitoring ? (re.monitoring = !0, a.prototype._fireEvent = te) : !e.monitoring && re.monitoring && (re.monitoring = !1, a.prototype._fireEvent = i)) | |
}, a.prototype._fireEvent = i, a.prototype._execute = function(e, t, a) { | |
try { | |
e(t, a) | |
} catch (o) { | |
return o | |
} | |
}, a.prototype._onCancel = function() {}, a.prototype._setOnCancel = function(e) {}, a.prototype._attachCancellationCallback = function(e) {}, a.prototype._captureStackTrace = function() {}, a.prototype._attachExtraTrace = function() {}, a.prototype._clearCancellationData = function() {}, a.prototype._propagateFrom = function(e, t) {}; | |
var ae = p, | |
oe = function() { | |
return !1 | |
}, | |
ne = /[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/; | |
O.inherits(S, Error), o.CapturedTrace = S, S.prototype.uncycle = function() { | |
var e = this._length; | |
if (!(2 > e)) { | |
for (var t = [], a = {}, o = 0, n = this; void 0 !== n; ++o) t.push(n), n = n._parent; | |
e = this._length = o; | |
for (var o = e - 1; o >= 0; --o) { | |
var i = t[o].stack; | |
void 0 === a[i] && (a[i] = o) | |
} | |
for (var o = 0; e > o; ++o) { | |
var r = t[o].stack, | |
u = a[r]; | |
if (void 0 !== u && u !== o) { | |
u > 0 && (t[u - 1]._parent = void 0, t[u - 1]._length = 1), t[o]._parent = void 0, t[o]._length = 1; | |
var s = o > 0 ? t[o - 1] : this; | |
e - 1 > u ? (s._parent = t[u + 1], s._parent.uncycle(), s._length = s._parent._length + 1) : (s._parent = void 0, s._length = 1); | |
for (var c = s._length + 1, l = o - 2; l >= 0; --l) t[l]._length = c, c++; | |
return | |
} | |
} | |
} | |
}, S.prototype.attachExtraTrace = function(e) { | |
if (!e.__stackCleaned__) { | |
this.uncycle(); | |
for (var t = A(e), a = t.message, o = [t.stack], n = this; void 0 !== n;) o.push(w(n.stack.split("\n"))), n = n._parent; | |
b(o), v(o), O.notEnumerableProp(e, "stack", j(a, o)), O.notEnumerableProp(e, "__stackCleaned__", !0) | |
} | |
}; | |
var ie = function() { | |
var e = /^\s*at\s*/, | |
t = function(e, t) { | |
return "string" == typeof e ? e : void 0 !== t.name && void 0 !== t.message ? t.toString() : x(t) | |
}; | |
if ("number" == typeof Error.stackTraceLimit && "function" == typeof Error.captureStackTrace) { | |
Error.stackTraceLimit += 6, $ = e, W = t; | |
var a = Error.captureStackTrace; | |
return oe = function(e) { | |
return q.test(e) | |
}, | |
function(e, t) { | |
Error.stackTraceLimit += 6, a(e, t), Error.stackTraceLimit -= 6 | |
} | |
} | |
var o = new Error; | |
if ("string" == typeof o.stack && o.stack.split("\n")[0].indexOf("stackDetection@") >= 0) return $ = /@/, W = t, Y = !0, | |
function(e) { | |
e.stack = (new Error).stack | |
}; | |
var n; | |
try { | |
throw new Error | |
} catch (i) { | |
n = "stack" in i | |
} | |
return "stack" in o || !n || "number" != typeof Error.stackTraceLimit ? (W = function(e, t) { | |
return "string" == typeof e ? e : "object" != typeof t && "function" != typeof t || void 0 === t.name || void 0 === t.message ? x(t) : t.toString() | |
}, null) : ($ = e, W = t, function(e) { | |
Error.stackTraceLimit += 6; | |
try { | |
throw new Error | |
} catch (t) { | |
e.stack = t.stack | |
} | |
Error.stackTraceLimit -= 6 | |
}) | |
}([]); | |
"undefined" != typeof console && "undefined" != typeof console.warn && (R = function(e) { | |
console.warn(e) | |
}, O.isNode && e.stderr.isTTY ? R = function(e, t) { | |
var a = t ? "[33m" : "[31m"; | |
console.warn(a + e + "[0m\n") | |
} : O.isNode || "string" != typeof(new Error).stack || (R = function(e, t) { | |
console.warn("%c" + e, t ? "color: darkorange" : "color: red") | |
})); | |
var re = { | |
warnings: G, | |
longStackTraces: !1, | |
cancellation: !1, | |
monitoring: !1 | |
}; | |
return J && a.longStackTraces(), { | |
longStackTraces: function() { | |
return re.longStackTraces | |
}, | |
warnings: function() { | |
return re.warnings | |
}, | |
cancellation: function() { | |
return re.cancellation | |
}, | |
monitoring: function() { | |
return re.monitoring | |
}, | |
propagateFromFunction: function() { | |
return ae | |
}, | |
boundValueFunction: function() { | |
return h | |
}, | |
checkForgottenReturns: f, | |
setBounds: B, | |
warn: y, | |
deprecated: k, | |
CapturedTrace: S, | |
fireDomEvent: Z, | |
fireGlobalEvent: Q | |
} | |
} | |
}, { | |
"./errors": 12, | |
"./util": 36 | |
}], | |
10: [function(e, t, a) { | |
"use strict"; | |
t.exports = function(e, t) { | |
function a() { | |
return this.value | |
} | |
function o() { | |
throw this.reason | |
} | |
e.prototype["return"] = e.prototype.thenReturn = function(o) { | |
return o = t(o), o instanceof e && o.suppressUnhandledRejections(), this._then(a, void 0, void 0, { | |
value: o | |
}, void 0) | |
}, e.prototype["throw"] = e.prototype.thenThrow = function(e) { | |
return this._then(o, void 0, void 0, { | |
reason: e | |
}, void 0) | |
}, e.prototype.catchThrow = function(e) { | |
if (arguments.length <= 1) return this._then(void 0, o, void 0, { | |
reason: e | |
}, void 0); | |
var t = arguments[1], | |
a = function() { | |
throw t | |
}; | |
return this.caught(e, a) | |
}, e.prototype.catchReturn = function(o) { | |
if (arguments.length <= 1) return o = t(o), o instanceof e && o.suppressUnhandledRejections(), this._then(void 0, a, void 0, { | |
value: o | |
}, void 0); | |
var n = arguments[1]; | |
n = t(n), n instanceof e && n.suppressUnhandledRejections(); | |
var i = function() { | |
return n | |
}; | |
return this.caught(o, i) | |
} | |
} | |
}, {}], | |
11: [function(e, t, a) { | |
"use strict"; | |
t.exports = function(e, t) { | |
function a() { | |
return i(this) | |
} | |
function o(e, a) { | |
return n(e, a, t, t) | |
} | |
var n = e.reduce, | |
i = e.all; | |
e.prototype.each = function(e) { | |
return this.mapSeries(e)._then(a, void 0, void 0, this, void 0) | |
}, e.prototype.mapSeries = function(e) { | |
return n(this, e, t, t) | |
}, e.each = function(e, t) { | |
return o(e, t)._then(a, void 0, void 0, e, void 0) | |
}, e.mapSeries = o | |
} | |
}, {}], | |
12: [function(e, t, a) { | |
"use strict"; | |
function o(e, t) { | |
function a(o) { | |
return this instanceof a ? (m(this, "message", "string" == typeof o ? o : t), m(this, "name", e), void(Error.captureStackTrace ? Error.captureStackTrace(this, this.constructor) : Error.call(this))) : new a(o) | |
} | |
return l(a, Error), a | |
} | |
function n(e) { | |
return this instanceof n ? (m(this, "name", "OperationalError"), m(this, "message", e), this.cause = e, this.isOperational = !0, void(e instanceof Error ? (m(this, "message", e.message), m(this, "stack", e.stack)) : Error.captureStackTrace && Error.captureStackTrace(this, this.constructor))) : new n(e) | |
} | |
var i, r, u = e("./es5"), | |
s = u.freeze, | |
c = e("./util"), | |
l = c.inherits, | |
m = c.notEnumerableProp, | |
p = o("Warning", "warning"), | |
h = o("CancellationError", "cancellation error"), | |
d = o("TimeoutError", "timeout error"), | |
g = o("AggregateError", "aggregate error"); | |
try { | |
i = TypeError, r = RangeError | |
} catch (f) { | |
i = o("TypeError", "type error"), r = o("RangeError", "range error") | |
} | |
for (var k = "join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "), y = 0; y < k.length; ++y) "function" == typeof Array.prototype[k[y]] && (g.prototype[k[y]] = Array.prototype[k[y]]); | |
u.defineProperty(g.prototype, "length", { | |
value: 0, | |
configurable: !1, | |
writable: !0, | |
enumerable: !0 | |
}), g.prototype.isOperational = !0; | |
var j = 0; | |
g.prototype.toString = function() { | |
var e = Array(4 * j + 1).join(" "), | |
t = "\n" + e + "AggregateError of:\n"; | |
j++, e = Array(4 * j + 1).join(" "); | |
for (var a = 0; a < this.length; ++a) { | |
for (var o = this[a] === this ? "[Circular AggregateError]" : this[a] + "", n = o.split("\n"), i = 0; i < n.length; ++i) n[i] = e + n[i]; | |
o = n.join("\n"), t += o + "\n" | |
} | |
return j--, t | |
}, l(n, Error); | |
var v = Error.__BluebirdErrorTypes__; | |
v || (v = s({ | |
CancellationError: h, | |
TimeoutError: d, | |
OperationalError: n, | |
RejectionError: n, | |
AggregateError: g | |
}), u.defineProperty(Error, "__BluebirdErrorTypes__", { | |
value: v, | |
writable: !1, | |
enumerable: !1, | |
configurable: !1 | |
})), t.exports = { | |
Error: Error, | |
TypeError: i, | |
RangeError: r, | |
CancellationError: v.CancellationError, | |
OperationalError: v.OperationalError, | |
TimeoutError: v.TimeoutError, | |
AggregateError: v.AggregateError, | |
Warning: p | |
} | |
}, { | |
"./es5": 13, | |
"./util": 36 | |
}], | |
13: [function(e, t, a) { | |
var o = function() { | |
"use strict"; | |
return void 0 === this | |
}(); | |
if (o) t.exports = { | |
freeze: Object.freeze, | |
defineProperty: Object.defineProperty, | |
getDescriptor: Object.getOwnPropertyDescriptor, | |
keys: Object.keys, | |
names: Object.getOwnPropertyNames, | |
getPrototypeOf: Object.getPrototypeOf, | |
isArray: Array.isArray, | |
isES5: o, | |
propertyIsWritable: function(e, t) { | |
var a = Object.getOwnPropertyDescriptor(e, t); | |
return !(a && !a.writable && !a.set) | |
} | |
}; | |
else { | |
var n = {}.hasOwnProperty, | |
i = {}.toString, | |
r = {}.constructor.prototype, | |
u = function(e) { | |
var t = []; | |
for (var a in e) n.call(e, a) && t.push(a); | |
return t | |
}, | |
s = function(e, t) { | |
return { | |
value: e[t] | |
} | |
}, | |
c = function(e, t, a) { | |
return e[t] = a.value, e | |
}, | |
l = function(e) { | |
return e | |
}, | |
m = function(e) { | |
try { | |
return Object(e).constructor.prototype | |
} catch (t) { | |
return r | |
} | |
}, | |
p = function(e) { | |
try { | |
return "[object Array]" === i.call(e) | |
} catch (t) { | |
return !1 | |
} | |
}; | |
t.exports = { | |
isArray: p, | |
keys: u, | |
names: u, | |
defineProperty: c, | |
getDescriptor: s, | |
freeze: l, | |
getPrototypeOf: m, | |
isES5: o, | |
propertyIsWritable: function() { | |
return !0 | |
} | |
} | |
} | |
}, {}], | |
14: [function(e, t, a) { | |
"use strict"; | |
t.exports = function(e, t) { | |
var a = e.map; | |
e.prototype.filter = function(e, o) { | |
return a(this, e, o, t) | |
}, e.filter = function(e, o, n) { | |
return a(e, o, n, t) | |
} | |
} | |
}, {}], | |
15: [function(e, t, a) { | |
"use strict"; | |
t.exports = function(t, a) { | |
function o(e, t, a) { | |
this.promise = e, this.type = t, this.handler = a, this.called = !1, this.cancelPromise = null | |
} | |
function n(e) { | |
this.finallyHandler = e | |
} | |
function i(e, t) { | |
return null != e.cancelPromise ? (arguments.length > 1 ? e.cancelPromise._reject(t) : e.cancelPromise._cancel(), e.cancelPromise = null, !0) : !1 | |
} | |
function r() { | |
return s.call(this, this.promise._target()._settledValue()) | |
} | |
function u(e) { | |
return i(this, e) ? void 0 : (m.e = e, m) | |
} | |
function s(e) { | |
var o = this.promise, | |
s = this.handler; | |
if (!this.called) { | |
this.called = !0; | |
var c = this.isFinallyHandler() ? s.call(o._boundValue()) : s.call(o._boundValue(), e); | |
if (void 0 !== c) { | |
o._setReturnedNonUndefined(); | |
var p = a(c, o); | |
if (p instanceof t) { | |
if (null != this.cancelPromise) { | |
if (p._isCancelled()) { | |
var h = new l("late cancellation observer"); | |
return o._attachExtraTrace(h), m.e = h, m | |
} | |
p.isPending() && p._attachCancellationCallback(new n(this)) | |
} | |
return p._then(r, u, void 0, this, void 0) | |
} | |
} | |
} | |
return o.isRejected() ? (i(this), m.e = e, m) : (i(this), e) | |
} | |
var c = e("./util"), | |
l = t.CancellationError, | |
m = c.errorObj; | |
return o.prototype.isFinallyHandler = function() { | |
return 0 === this.type | |
}, n.prototype._resultCancelled = function() { | |
i(this.finallyHandler) | |
}, t.prototype._passThrough = function(e, t, a, n) { | |
return "function" != typeof e ? this.then() : this._then(a, n, void 0, new o(this, t, e), void 0) | |
}, t.prototype.lastly = t.prototype["finally"] = function(e) { | |
return this._passThrough(e, 0, s, s) | |
}, t.prototype.tap = function(e) { | |
return this._passThrough(e, 1, s) | |
}, o | |
} | |
}, { | |
"./util": 36 | |
}], | |
16: [function(e, t, a) { | |
"use strict"; | |
t.exports = function(t, a, o, n, i, r) { | |
function u(e, a, o) { | |
for (var i = 0; i < a.length; ++i) { | |
o._pushContext(); | |
var r = h(a[i])(e); | |
if (o._popContext(), r === p) { | |
o._pushContext(); | |
var u = t.reject(p.e); | |
return o._popContext(), u | |
} | |
var s = n(r, o); | |
if (s instanceof t) return s | |
} | |
return null | |
} | |
function s(e, a, n, i) { | |
if (r.cancellation()) { | |
var u = new t(o), | |
s = this._finallyPromise = new t(o); | |
this._promise = u.lastly(function() { | |
return s | |
}), u._captureStackTrace(), u._setOnCancel(this) | |
} else { | |
var c = this._promise = new t(o); | |
c._captureStackTrace() | |
} | |
this._stack = i, this._generatorFunction = e, this._receiver = a, this._generator = void 0, this._yieldHandlers = "function" == typeof n ? [n].concat(d) : d, this._yieldedPromise = null, this._cancellationPhase = !1 | |
} | |
var c = e("./errors"), | |
l = c.TypeError, | |
m = e("./util"), | |
p = m.errorObj, | |
h = m.tryCatch, | |
d = []; | |
m.inherits(s, i), s.prototype._isResolved = function() { | |
return null === this._promise | |
}, s.prototype._cleanup = function() { | |
this._promise = this._generator = null, r.cancellation() && null !== this._finallyPromise && (this._finallyPromise._fulfill(), this._finallyPromise = null) | |
}, s.prototype._promiseCancelled = function() { | |
if (!this._isResolved()) { | |
var e, a = "undefined" != typeof this._generator["return"]; | |
if (a) this._promise._pushContext(), e = h(this._generator["return"]).call(this._generator, void 0), this._promise._popContext(); | |
else { | |
var o = new t.CancellationError("generator .return() sentinel"); | |
t.coroutine.returnSentinel = o, this._promise._attachExtraTrace(o), this._promise._pushContext(), e = h(this._generator["throw"]).call(this._generator, o), this._promise._popContext() | |
} | |
this._cancellationPhase = !0, this._yieldedPromise = null, this._continue(e) | |
} | |
}, s.prototype._promiseFulfilled = function(e) { | |
this._yieldedPromise = null, this._promise._pushContext(); | |
var t = h(this._generator.next).call(this._generator, e); | |
this._promise._popContext(), this._continue(t) | |
}, s.prototype._promiseRejected = function(e) { | |
this._yieldedPromise = null, this._promise._attachExtraTrace(e), this._promise._pushContext(); | |
var t = h(this._generator["throw"]).call(this._generator, e); | |
this._promise._popContext(), this._continue(t) | |
}, s.prototype._resultCancelled = function() { | |
if (this._yieldedPromise instanceof t) { | |
var e = this._yieldedPromise; | |
this._yieldedPromise = null, e.cancel() | |
} | |
}, s.prototype.promise = function() { | |
return this._promise | |
}, s.prototype._run = function() { | |
this._generator = this._generatorFunction.call(this._receiver), this._receiver = this._generatorFunction = void 0, this._promiseFulfilled(void 0) | |
}, s.prototype._continue = function(e) { | |
var a = this._promise; | |
if (e === p) return this._cleanup(), this._cancellationPhase ? a.cancel() : a._rejectCallback(e.e, !1); | |
var o = e.value; | |
if (e.done === !0) return this._cleanup(), this._cancellationPhase ? a.cancel() : a._resolveCallback(o); | |
var i = n(o, this._promise); | |
if (!(i instanceof t) && (i = u(i, this._yieldHandlers, this._promise), null === i)) return void this._promiseRejected(new l("A value %s was yielded that could not be treated as a promise\n\n See http://goo.gl/MqrFmX\n\n".replace("%s", o) + "From coroutine:\n" + this._stack.split("\n").slice(1, -7).join("\n"))); | |
i = i._target(); | |
var r = i._bitField; | |
0 === (50397184 & r) ? (this._yieldedPromise = i, i._proxy(this, null)) : 0 !== (33554432 & r) ? t._async.invoke(this._promiseFulfilled, this, i._value()) : 0 !== (16777216 & r) ? t._async.invoke(this._promiseRejected, this, i._reason()) : this._promiseCancelled() | |
}, t.coroutine = function(e, t) { | |
if ("function" != typeof e) throw new l("generatorFunction must be a function\n\n See http://goo.gl/MqrFmX\n"); | |
var a = Object(t).yieldHandler, | |
o = s, | |
n = (new Error).stack; | |
return function() { | |
var t = e.apply(this, arguments), | |
i = new o(void 0, void 0, a, n), | |
r = i.promise(); | |
return i._generator = t, i._promiseFulfilled(void 0), r | |
} | |
}, t.coroutine.addYieldHandler = function(e) { | |
if ("function" != typeof e) throw new l("expecting a function but got " + m.classString(e)); | |
d.push(e) | |
}, t.spawn = function(e) { | |
if (r.deprecated("Promise.spawn()", "Promise.coroutine()"), "function" != typeof e) return a("generatorFunction must be a function\n\n See http://goo.gl/MqrFmX\n"); | |
var o = new s(e, this), | |
n = o.promise(); | |
return o._run(t.spawn), n | |
} | |
} | |
}, { | |
"./errors": 12, | |
"./util": 36 | |
}], | |
17: [function(e, t, a) { | |
"use strict"; | |
t.exports = function(t, a, o, n) { | |
var i = e("./util"); | |
i.canEvaluate, i.tryCatch, i.errorObj; | |
t.join = function() { | |
var e, t = arguments.length - 1; | |
if (t > 0 && "function" == typeof arguments[t]) { | |
e = arguments[t]; | |
var o | |
} | |
var n = [].slice.call(arguments); | |
e && n.pop(); | |
var o = new a(n).promise(); | |
return void 0 !== e ? o.spread(e) : o | |
} | |
} | |
}, { | |
"./util": 36 | |
}], | |
18: [function(e, t, a) { | |
"use strict"; | |
t.exports = function(t, a, o, n, i, r) { | |
function u(e, t, a, o) { | |
this.constructor$(e), this._promise._captureStackTrace(); | |
var n = c(); | |
this._callback = null === n ? t : n.bind(t), this._preservedValues = o === i ? new Array(this.length()) : null, this._limit = a, this._inFlight = 0, this._queue = a >= 1 ? [] : h, this._init$(void 0, -2) | |
} | |
function s(e, a, n, i) { | |
if ("function" != typeof a) return o("expecting a function but got " + l.classString(a)); | |
var r = 0; | |
if (void 0 !== n) { | |
if ("object" != typeof n || null === n) return t.reject(new TypeError("options argument must be an object but it is " + l.classString(n))); | |
if ("number" != typeof n.concurrency) return t.reject(new TypeError("'concurrency' must be a number but it is " + l.classString(n.concurrency))); | |
r = n.concurrency | |
} | |
return r = "number" == typeof r && isFinite(r) && r >= 1 ? r : 0, new u(e, a, r, i).promise() | |
} | |
var c = t._getDomain, | |
l = e("./util"), | |
m = l.tryCatch, | |
p = l.errorObj, | |
h = []; | |
l.inherits(u, a), u.prototype._init = function() {}, u.prototype._promiseFulfilled = function(e, a) { | |
var o = this._values, | |
i = this.length(), | |
u = this._preservedValues, | |
s = this._limit; | |
if (0 > a) { | |
if (a = -1 * a - 1, o[a] = e, s >= 1 && (this._inFlight--, this._drainQueue(), this._isResolved())) return !0 | |
} else { | |
if (s >= 1 && this._inFlight >= s) return o[a] = e, this._queue.push(a), !1; | |
null !== u && (u[a] = e); | |
var c = this._promise, | |
l = this._callback, | |
h = c._boundValue(); | |
c._pushContext(); | |
var d = m(l).call(h, e, a, i), | |
g = c._popContext(); | |
if (r.checkForgottenReturns(d, g, null !== u ? "Promise.filter" : "Promise.map", c), d === p) return this._reject(d.e), !0; | |
var f = n(d, this._promise); | |
if (f instanceof t) { | |
f = f._target(); | |
var k = f._bitField; | |
if (0 === (50397184 & k)) return s >= 1 && this._inFlight++, o[a] = f, f._proxy(this, -1 * (a + 1)), !1; | |
if (0 === (33554432 & k)) return 0 !== (16777216 & k) ? (this._reject(f._reason()), !0) : (this._cancel(), !0); | |
d = f._value() | |
} | |
o[a] = d | |
} | |
var y = ++this._totalResolved; | |
return y >= i ? (null !== u ? this._filter(o, u) : this._resolve(o), !0) : !1 | |
}, u.prototype._drainQueue = function() { | |
for (var e = this._queue, t = this._limit, a = this._values; e.length > 0 && this._inFlight < t;) { | |
if (this._isResolved()) return; | |
var o = e.pop(); | |
this._promiseFulfilled(a[o], o) | |
} | |
}, u.prototype._filter = function(e, t) { | |
for (var a = t.length, o = new Array(a), n = 0, i = 0; a > i; ++i) e[i] && (o[n++] = t[i]); | |
o.length = n, this._resolve(o) | |
}, u.prototype.preservedValues = function() { | |
return this._preservedValues | |
}, t.prototype.map = function(e, t) { | |
return s(this, e, t, null) | |
}, t.map = function(e, t, a, o) { | |
return s(e, t, a, o) | |
} | |
} | |
}, { | |
"./util": 36 | |
}], | |
19: [function(e, t, a) { | |
"use strict"; | |
t.exports = function(t, a, o, n, i) { | |
var r = e("./util"), | |
u = r.tryCatch; | |
t.method = function(e) { | |
if ("function" != typeof e) throw new t.TypeError("expecting a function but got " + r.classString(e)); | |
return function() { | |
var o = new t(a); | |
o._captureStackTrace(), o._pushContext(); | |
var n = u(e).apply(this, arguments), | |
r = o._popContext(); | |
return i.checkForgottenReturns(n, r, "Promise.method", o), o._resolveFromSyncValue(n), o | |
} | |
}, t.attempt = t["try"] = function(e) { | |
if ("function" != typeof e) return n("expecting a function but got " + r.classString(e)); | |
var o = new t(a); | |
o._captureStackTrace(), o._pushContext(); | |
var s; | |
if (arguments.length > 1) { | |
i.deprecated("calling Promise.try with more than 1 argument"); | |
var c = arguments[1], | |
l = arguments[2]; | |
s = r.isArray(c) ? u(e).apply(l, c) : u(e).call(l, c) | |
} else s = u(e)(); | |
var m = o._popContext(); | |
return i.checkForgottenReturns(s, m, "Promise.try", o), o._resolveFromSyncValue(s), o | |
}, t.prototype._resolveFromSyncValue = function(e) { | |
e === r.errorObj ? this._rejectCallback(e.e, !1) : this._resolveCallback(e, !0) | |
} | |
} | |
}, { | |
"./util": 36 | |
}], | |
20: [function(e, t, a) { | |
"use strict"; | |
function o(e) { | |
return e instanceof Error && l.getPrototypeOf(e) === Error.prototype | |
} | |
function n(e) { | |
var t; | |
if (o(e)) { | |
t = new c(e), t.name = e.name, t.message = e.message, t.stack = e.stack; | |
for (var a = l.keys(e), n = 0; n < a.length; ++n) { | |
var i = a[n]; | |
m.test(i) || (t[i] = e[i]) | |
} | |
return t | |
} | |
return r.markAsOriginatingFromRejection(e), e | |
} | |
function i(e, t) { | |
return function(a, o) { | |
if (null !== e) { | |
if (a) { | |
var i = n(u(a)); | |
e._attachExtraTrace(i), e._reject(i) | |
} else if (t) { | |
var r = [].slice.call(arguments, 1); | |
e._fulfill(r) | |
} else e._fulfill(o); | |
e = null | |
} | |
} | |
} | |
var r = e("./util"), | |
u = r.maybeWrapAsError, | |
s = e("./errors"), | |
c = s.OperationalError, | |
l = e("./es5"), | |
m = /^(?:name|message|stack|cause)$/; | |
t.exports = i | |
}, { | |
"./errors": 12, | |
"./es5": 13, | |
"./util": 36 | |
}], | |
21: [function(e, t, a) { | |
"use strict"; | |
t.exports = function(t) { | |
function a(e, t) { | |
var a = this; | |
if (!i.isArray(e)) return o.call(a, e, t); | |
var n = u(t).apply(a._boundValue(), [null].concat(e)); | |
n === s && r.throwLater(n.e) | |
} | |
function o(e, t) { | |
var a = this, | |
o = a._boundValue(), | |
n = void 0 === e ? u(t).call(o, null) : u(t).call(o, null, e); | |
n === s && r.throwLater(n.e) | |
} | |
function n(e, t) { | |
var a = this; | |
if (!e) { | |
var o = new Error(e + ""); | |
o.cause = e, e = o | |
} | |
var n = u(t).call(a._boundValue(), e); | |
n === s && r.throwLater(n.e) | |
} | |
var i = e("./util"), | |
r = t._async, | |
u = i.tryCatch, | |
s = i.errorObj; | |
t.prototype.asCallback = t.prototype.nodeify = function(e, t) { | |
if ("function" == typeof e) { | |
var i = o; | |
void 0 !== t && Object(t).spread && (i = a), this._then(i, n, void 0, this, e) | |
} | |
return this | |
} | |
} | |
}, { | |
"./util": 36 | |
}], | |
22: [function(t, a, o) { | |
"use strict"; | |
a.exports = function() { | |
function o() {} | |
function n(e, t) { | |
if ("function" != typeof t) throw new j("expecting a function but got " + d.classString(t)); | |
if (e.constructor !== i) throw new j("the promise constructor cannot be invoked directly\n\n See http://goo.gl/MqrFmX\n") | |
} | |
function i(e) { | |
this._bitField = 0, this._fulfillmentHandler0 = void 0, this._rejectionHandler0 = void 0, this._promise0 = void 0, this._receiver0 = void 0, e !== b && (n(this, e), this._resolveFromExecutor(e)), this._promiseCreated(), this._fireEvent("promiseCreated", this) | |
} | |
function r(e) { | |
this.promise._resolveCallback(e) | |
} | |
function u(e) { | |
this.promise._rejectCallback(e, !1) | |
} | |
function s(e) { | |
var t = new i(b); | |
t._fulfillmentHandler0 = e, t._rejectionHandler0 = e, t._promise0 = e, t._receiver0 = e | |
} | |
var c, l = function() { | |
return new j("circular promise resolution chain\n\n See http://goo.gl/MqrFmX\n") | |
}, | |
m = function() { | |
return new i.PromiseInspection(this._target()) | |
}, | |
p = function(e) { | |
return i.reject(new j(e)) | |
}, | |
h = {}, | |
d = t("./util"); | |
c = d.isNode ? function() { | |
var t = e.domain; | |
return void 0 === t && (t = null), t | |
} : function() { | |
return null | |
}, d.notEnumerableProp(i, "_getDomain", c); | |
var g = t("./es5"), | |
f = t("./async"), | |
k = new f; | |
g.defineProperty(i, "_async", { | |
value: k | |
}); | |
var y = t("./errors"), | |
j = i.TypeError = y.TypeError; | |
i.RangeError = y.RangeError; | |
var v = i.CancellationError = y.CancellationError; | |
i.TimeoutError = y.TimeoutError, i.OperationalError = y.OperationalError, i.RejectionError = y.OperationalError, i.AggregateError = y.AggregateError; | |
var b = function() {}, | |
w = {}, | |
_ = {}, | |
A = t("./thenables")(i, b), | |
E = t("./promise_array")(i, b, A, p, o), | |
C = t("./context")(i), | |
x = C.create, | |
F = t("./debuggability")(i, C), | |
z = (F.CapturedTrace, t("./finally")(i, A)), | |
D = t("./catch_filter")(_), | |
B = t("./nodeback"), | |
S = d.errorObj, | |
T = d.tryCatch; | |
return i.prototype.toString = function() { | |
return "[object Promise]" | |
}, i.prototype.caught = i.prototype["catch"] = function(e) { | |
var t = arguments.length; | |
if (t > 1) { | |
var a, o = new Array(t - 1), | |
n = 0; | |
for (a = 0; t - 1 > a; ++a) { | |
var i = arguments[a]; | |
if (!d.isObject(i)) return p("expecting an object but got A catch statement predicate " + d.classString(i)); | |
o[n++] = i | |
} | |
return o.length = n, e = arguments[a], this.then(void 0, D(o, e, this)) | |
} | |
return this.then(void 0, e) | |
}, i.prototype.reflect = function() { | |
return this._then(m, m, void 0, this, void 0) | |
}, i.prototype.then = function(e, t) { | |
if (F.warnings() && arguments.length > 0 && "function" != typeof e && "function" != typeof t) { | |
var a = ".then() only accepts functions but was passed: " + d.classString(e); | |
arguments.length > 1 && (a += ", " + d.classString(t)), this._warn(a) | |
} | |
return this._then(e, t, void 0, void 0, void 0) | |
}, i.prototype.done = function(e, t) { | |
var a = this._then(e, t, void 0, void 0, void 0); | |
a._setIsFinal() | |
}, i.prototype.spread = function(e) { | |
return "function" != typeof e ? p("expecting a function but got " + d.classString(e)) : this.all()._then(e, void 0, void 0, w, void 0) | |
}, i.prototype.toJSON = function() { | |
var e = { | |
isFulfilled: !1, | |
isRejected: !1, | |
fulfillmentValue: void 0, | |
rejectionReason: void 0 | |
}; | |
return this.isFulfilled() ? (e.fulfillmentValue = this.value(), e.isFulfilled = !0) : this.isRejected() && (e.rejectionReason = this.reason(), e.isRejected = !0), e | |
}, i.prototype.all = function() { | |
return arguments.length > 0 && this._warn(".all() was passed arguments but it does not take any"), new E(this).promise() | |
}, i.prototype.error = function(e) { | |
return this.caught(d.originatesFromRejection, e) | |
}, i.getNewLibraryCopy = a.exports, i.is = function(e) { | |
return e instanceof i | |
}, i.fromNode = i.fromCallback = function(e) { | |
var t = new i(b); | |
t._captureStackTrace(); | |
var a = arguments.length > 1 ? !!Object(arguments[1]).multiArgs : !1, | |
o = T(e)(B(t, a)); | |
return o === S && t._rejectCallback(o.e, !0), t._isFateSealed() || t._setAsyncGuaranteed(), t | |
}, i.all = function(e) { | |
return new E(e).promise() | |
}, i.cast = function(e) { | |
var t = A(e); | |
return t instanceof i || (t = new i(b), t._captureStackTrace(), t._setFulfilled(), t._rejectionHandler0 = e), t | |
}, i.resolve = i.fulfilled = i.cast, i.reject = i.rejected = function(e) { | |
var t = new i(b); | |
return t._captureStackTrace(), t._rejectCallback(e, !0), t | |
}, i.setScheduler = function(e) { | |
if ("function" != typeof e) throw new j("expecting a function but got " + d.classString(e)); | |
return k.setScheduler(e) | |
}, i.prototype._then = function(e, t, a, o, n) { | |
var r = void 0 !== n, | |
u = r ? n : new i(b), | |
s = this._target(), | |
l = s._bitField; | |
r || (u._propagateFrom(this, 3), u._captureStackTrace(), void 0 === o && 0 !== (2097152 & this._bitField) && (o = 0 !== (50397184 & l) ? this._boundValue() : s === this ? void 0 : this._boundTo), this._fireEvent("promiseChained", this, u)); | |
var m = c(); | |
if (0 !== (50397184 & l)) { | |
var p, h, d = s._settlePromiseCtx; | |
0 !== (33554432 & l) ? (h = s._rejectionHandler0, p = e) : 0 !== (16777216 & l) ? (h = s._fulfillmentHandler0, p = t, s._unsetRejectionIsUnhandled()) : (d = s._settlePromiseLateCancellationObserver, h = new v("late cancellation observer"), s._attachExtraTrace(h), p = t), k.invoke(d, s, { | |
handler: null === m ? p : "function" == typeof p && m.bind(p), | |
promise: u, | |
receiver: o, | |
value: h | |
}) | |
} else s._addCallbacks(e, t, u, o, m); | |
return u | |
}, i.prototype._length = function() { | |
return 65535 & this._bitField | |
}, i.prototype._isFateSealed = function() { | |
return 0 !== (117506048 & this._bitField) | |
}, i.prototype._isFollowing = function() { | |
return 67108864 === (67108864 & this._bitField) | |
}, i.prototype._setLength = function(e) { | |
this._bitField = -65536 & this._bitField | 65535 & e | |
}, i.prototype._setFulfilled = function() { | |
this._bitField = 33554432 | this._bitField, this._fireEvent("promiseFulfilled", this) | |
}, i.prototype._setRejected = function() { | |
this._bitField = 16777216 | this._bitField, this._fireEvent("promiseRejected", this) | |
}, i.prototype._setFollowing = function() { | |
this._bitField = 67108864 | this._bitField, this._fireEvent("promiseResolved", this) | |
}, i.prototype._setIsFinal = function() { | |
this._bitField = 4194304 | this._bitField | |
}, i.prototype._isFinal = function() { | |
return (4194304 & this._bitField) > 0 | |
}, i.prototype._unsetCancelled = function() { | |
this._bitField = -65537 & this._bitField | |
}, i.prototype._setCancelled = function() { | |
this._bitField = 65536 | this._bitField, this._fireEvent("promiseCancelled", this) | |
}, i.prototype._setWillBeCancelled = function() { | |
this._bitField = 8388608 | this._bitField | |
}, i.prototype._setAsyncGuaranteed = function() { | |
k.hasCustomScheduler() || (this._bitField = 134217728 | this._bitField) | |
}, i.prototype._receiverAt = function(e) { | |
var t = 0 === e ? this._receiver0 : this[4 * e - 4 + 3]; | |
return t === h ? void 0 : void 0 === t && this._isBound() ? this._boundValue() : t | |
}, i.prototype._promiseAt = function(e) { | |
return this[4 * e - 4 + 2] | |
}, i.prototype._fulfillmentHandlerAt = function(e) { | |
return this[4 * e - 4 + 0] | |
}, i.prototype._rejectionHandlerAt = function(e) { | |
return this[4 * e - 4 + 1] | |
}, i.prototype._boundValue = function() {}, i.prototype._migrateCallback0 = function(e) { | |
var t = (e._bitField, e._fulfillmentHandler0), | |
a = e._rejectionHandler0, | |
o = e._promise0, | |
n = e._receiverAt(0); | |
void 0 === n && (n = h), this._addCallbacks(t, a, o, n, null) | |
}, i.prototype._migrateCallbackAt = function(e, t) { | |
var a = e._fulfillmentHandlerAt(t), | |
o = e._rejectionHandlerAt(t), | |
n = e._promiseAt(t), | |
i = e._receiverAt(t); | |
void 0 === i && (i = h), this._addCallbacks(a, o, n, i, null) | |
}, i.prototype._addCallbacks = function(e, t, a, o, n) { | |
var i = this._length(); | |
if (i >= 65531 && (i = 0, this._setLength(0)), 0 === i) this._promise0 = a, this._receiver0 = o, "function" == typeof e && (this._fulfillmentHandler0 = null === n ? e : n.bind(e)), "function" == typeof t && (this._rejectionHandler0 = null === n ? t : n.bind(t)); | |
else { | |
var r = 4 * i - 4; | |
this[r + 2] = a, this[r + 3] = o, "function" == typeof e && (this[r + 0] = null === n ? e : n.bind(e)), "function" == typeof t && (this[r + 1] = null === n ? t : n.bind(t)) | |
} | |
return this._setLength(i + 1), i | |
}, i.prototype._proxy = function(e, t) { | |
this._addCallbacks(void 0, void 0, t, e, null) | |
}, i.prototype._resolveCallback = function(e, t) { | |
if (0 === (117506048 & this._bitField)) { | |
if (e === this) return this._rejectCallback(l(), !1); | |
var a = A(e, this); | |
if (!(a instanceof i)) return this._fulfill(e); | |
t && this._propagateFrom(a, 2); | |
var o = a._target(); | |
if (o === this) return void this._reject(l()); | |
var n = o._bitField; | |
if (0 === (50397184 & n)) { | |
var r = this._length(); | |
r > 0 && o._migrateCallback0(this); | |
for (var u = 1; r > u; ++u) o._migrateCallbackAt(this, u); | |
this._setFollowing(), this._setLength(0), this._setFollowee(o) | |
} else if (0 !== (33554432 & n)) this._fulfill(o._value()); | |
else if (0 !== (16777216 & n)) this._reject(o._reason()); | |
else { | |
var s = new v("late cancellation observer"); | |
o._attachExtraTrace(s), this._reject(s) | |
} | |
} | |
}, i.prototype._rejectCallback = function(e, t, a) { | |
var o = d.ensureErrorObject(e), | |
n = o === e; | |
if (!n && !a && F.warnings()) { | |
var i = "a promise was rejected with a non-error: " + d.classString(e); | |
this._warn(i, !0) | |
} | |
this._attachExtraTrace(o, t ? n : !1), this._reject(e) | |
}, i.prototype._resolveFromExecutor = function(e) { | |
var t = this; | |
this._captureStackTrace(), this._pushContext(); | |
var a = !0, | |
o = this._execute(e, function(e) { | |
t._resolveCallback(e) | |
}, function(e) { | |
t._rejectCallback(e, a) | |
}); | |
a = !1, this._popContext(), void 0 !== o && t._rejectCallback(o, !0) | |
}, i.prototype._settlePromiseFromHandler = function(e, t, a, o) { | |
var n = o._bitField; | |
if (0 === (65536 & n)) { | |
o._pushContext(); | |
var i; | |
t === w ? a && "number" == typeof a.length ? i = T(e).apply(this._boundValue(), a) : (i = S, i.e = new j("cannot .spread() a non-array: " + d.classString(a))) : i = T(e).call(t, a); | |
var r = o._popContext(); | |
n = o._bitField, 0 === (65536 & n) && (i === _ ? o._reject(a) : i === S ? o._rejectCallback(i.e, !1) : (F.checkForgottenReturns(i, r, "", o, this), o._resolveCallback(i))) | |
} | |
}, i.prototype._target = function() { | |
for (var e = this; e._isFollowing();) e = e._followee(); | |
return e | |
}, i.prototype._followee = function() { | |
return this._rejectionHandler0 | |
}, i.prototype._setFollowee = function(e) { | |
this._rejectionHandler0 = e | |
}, i.prototype._settlePromise = function(e, t, a, n) { | |
var r = e instanceof i, | |
u = this._bitField, | |
s = 0 !== (134217728 & u); | |
0 !== (65536 & u) ? (r && e._invokeInternalOnCancel(), a instanceof z && a.isFinallyHandler() ? (a.cancelPromise = e, T(t).call(a, n) === S && e._reject(S.e)) : t === m ? e._fulfill(m.call(a)) : a instanceof o ? a._promiseCancelled(e) : r || e instanceof E ? e._cancel() : a.cancel()) : "function" == typeof t ? r ? (s && e._setAsyncGuaranteed(), this._settlePromiseFromHandler(t, a, n, e)) : t.call(a, n, e) : a instanceof o ? a._isResolved() || (0 !== (33554432 & u) ? a._promiseFulfilled(n, e) : a._promiseRejected(n, e)) : r && (s && e._setAsyncGuaranteed(), 0 !== (33554432 & u) ? e._fulfill(n) : e._reject(n)) | |
}, i.prototype._settlePromiseLateCancellationObserver = function(e) { | |
var t = e.handler, | |
a = e.promise, | |
o = e.receiver, | |
n = e.value; | |
"function" == typeof t ? a instanceof i ? this._settlePromiseFromHandler(t, o, n, a) : t.call(o, n, a) : a instanceof i && a._reject(n) | |
}, i.prototype._settlePromiseCtx = function(e) { | |
this._settlePromise(e.promise, e.handler, e.receiver, e.value) | |
}, i.prototype._settlePromise0 = function(e, t, a) { | |
var o = this._promise0, | |
n = this._receiverAt(0); | |
this._promise0 = void 0, this._receiver0 = void 0, this._settlePromise(o, e, n, t) | |
}, i.prototype._clearCallbackDataAtIndex = function(e) { | |
var t = 4 * e - 4; | |
this[t + 2] = this[t + 3] = this[t + 0] = this[t + 1] = void 0 | |
}, i.prototype._fulfill = function(e) { | |
var t = this._bitField; | |
if (!((117506048 & t) >>> 16)) { | |
if (e === this) { | |
var a = l(); | |
return this._attachExtraTrace(a), this._reject(a) | |
} | |
this._setFulfilled(), this._rejectionHandler0 = e, (65535 & t) > 0 && (0 !== (134217728 & t) ? this._settlePromises() : k.settlePromises(this)) | |
} | |
}, i.prototype._reject = function(e) { | |
var t = this._bitField; | |
if (!((117506048 & t) >>> 16)) return this._setRejected(), this._fulfillmentHandler0 = e, this._isFinal() ? k.fatalError(e, d.isNode) : void((65535 & t) > 0 ? k.settlePromises(this) : this._ensurePossibleRejectionHandled()) | |
}, i.prototype._fulfillPromises = function(e, t) { | |
for (var a = 1; e > a; a++) { | |
var o = this._fulfillmentHandlerAt(a), | |
n = this._promiseAt(a), | |
i = this._receiverAt(a); | |
this._clearCallbackDataAtIndex(a), this._settlePromise(n, o, i, t) | |
} | |
}, i.prototype._rejectPromises = function(e, t) { | |
for (var a = 1; e > a; a++) { | |
var o = this._rejectionHandlerAt(a), | |
n = this._promiseAt(a), | |
i = this._receiverAt(a); | |
this._clearCallbackDataAtIndex(a), this._settlePromise(n, o, i, t) | |
} | |
}, i.prototype._settlePromises = function() { | |
var e = this._bitField, | |
t = 65535 & e; | |
if (t > 0) { | |
if (0 !== (16842752 & e)) { | |
var a = this._fulfillmentHandler0; | |
this._settlePromise0(this._rejectionHandler0, a, e), this._rejectPromises(t, a) | |
} else { | |
var o = this._rejectionHandler0; | |
this._settlePromise0(this._fulfillmentHandler0, o, e), this._fulfillPromises(t, o) | |
} | |
this._setLength(0) | |
} | |
this._clearCancellationData() | |
}, i.prototype._settledValue = function() { | |
var e = this._bitField; | |
return 0 !== (33554432 & e) ? this._rejectionHandler0 : 0 !== (16777216 & e) ? this._fulfillmentHandler0 : void 0 | |
}, i.defer = i.pending = function() { | |
F.deprecated("Promise.defer", "new Promise"); | |
var e = new i(b); | |
return { | |
promise: e, | |
resolve: r, | |
reject: u | |
} | |
}, d.notEnumerableProp(i, "_makeSelfResolutionError", l), t("./method")(i, b, A, p, F), t("./bind")(i, b, A, F), t("./cancel")(i, E, p, F), t("./direct_resolve")(i, A), t("./synchronous_inspection")(i), t("./join")(i, E, A, b, F), i.Promise = i, i.version = "3.4.3", t("./map.js")(i, E, p, A, b, F), t("./call_get.js")(i), t("./using.js")(i, p, A, x, b, F), t("./timers.js")(i, b, F), t("./generators.js")(i, p, b, A, o, F), t("./nodeify.js")(i), t("./promisify.js")(i, b), t("./props.js")(i, E, A, p), t("./race.js")(i, b, A, p), t("./reduce.js")(i, E, p, A, b, F), t("./settle.js")(i, E, F), t("./some.js")(i, E, p), t("./filter.js")(i, b), t("./each.js")(i, b), t("./any.js")(i), d.toFastProperties(i), d.toFastProperties(i.prototype), s({ | |
a: 1 | |
}), s({ | |
b: 2 | |
}), s({ | |
c: 3 | |
}), s(1), s(function() {}), s(void 0), s(!1), s(new i(b)), F.setBounds(f.firstLineError, d.lastLineError), i | |
} | |
}, { | |
"./any.js": 1, | |
"./async": 2, | |
"./bind": 3, | |
"./call_get.js": 5, | |
"./cancel": 6, | |
"./catch_filter": 7, | |
"./context": 8, | |
"./debuggability": 9, | |
"./direct_resolve": 10, | |
"./each.js": 11, | |
"./errors": 12, | |
"./es5": 13, | |
"./filter.js": 14, | |
"./finally": 15, | |
"./generators.js": 16, | |
"./join": 17, | |
"./map.js": 18, | |
"./method": 19, | |
"./nodeback": 20, | |
"./nodeify.js": 21, | |
"./promise_array": 23, | |
"./promisify.js": 24, | |
"./props.js": 25, | |
"./race.js": 27, | |
"./reduce.js": 28, | |
"./settle.js": 30, | |
"./some.js": 31, | |
"./synchronous_inspection": 32, | |
"./thenables": 33, | |
"./timers.js": 34, | |
"./using.js": 35, | |
"./util": 36 | |
}], | |
23: [function(e, t, a) { | |
"use strict"; | |
t.exports = function(t, a, o, n, i) { | |
function r(e) { | |
switch (e) { | |
case -2: | |
return []; | |
case -3: | |
return {} | |
} | |
} | |
function u(e) { | |
var o = this._promise = new t(a); | |
e instanceof t && o._propagateFrom(e, 3), o._setOnCancel(this), this._values = e, this._length = 0, this._totalResolved = 0, this._init(void 0, -2) | |
} | |
var s = e("./util"); | |
s.isArray; | |
return s.inherits(u, i), u.prototype.length = function() { | |
return this._length | |
}, u.prototype.promise = function() { | |
return this._promise | |
}, u.prototype._init = function c(e, a) { | |
var i = o(this._values, this._promise); | |
if (i instanceof t) { | |
i = i._target(); | |
var u = i._bitField; | |
if (this._values = i, 0 === (50397184 & u)) return this._promise._setAsyncGuaranteed(), i._then(c, this._reject, void 0, this, a); | |
if (0 === (33554432 & u)) return 0 !== (16777216 & u) ? this._reject(i._reason()) : this._cancel(); | |
i = i._value() | |
} | |
if (i = s.asArray(i), null === i) { | |
var l = n("expecting an array or an iterable object but got " + s.classString(i)).reason(); | |
return void this._promise._rejectCallback(l, !1) | |
} | |
return 0 === i.length ? void(-5 === a ? this._resolveEmptyArray() : this._resolve(r(a))) : void this._iterate(i) | |
}, u.prototype._iterate = function(e) { | |
var a = this.getActualLength(e.length); | |
this._length = a, this._values = this.shouldCopyValues() ? new Array(a) : this._values; | |
for (var n = this._promise, i = !1, r = null, u = 0; a > u; ++u) { | |
var s = o(e[u], n); | |
s instanceof t ? (s = s._target(), r = s._bitField) : r = null, i ? null !== r && s.suppressUnhandledRejections() : null !== r ? 0 === (50397184 & r) ? (s._proxy(this, u), this._values[u] = s) : i = 0 !== (33554432 & r) ? this._promiseFulfilled(s._value(), u) : 0 !== (16777216 & r) ? this._promiseRejected(s._reason(), u) : this._promiseCancelled(u) : i = this._promiseFulfilled(s, u) | |
} | |
i || n._setAsyncGuaranteed() | |
}, u.prototype._isResolved = function() { | |
return null === this._values | |
}, u.prototype._resolve = function(e) { | |
this._values = null, this._promise._fulfill(e) | |
}, u.prototype._cancel = function() { | |
!this._isResolved() && this._promise._isCancellable() && (this._values = null, this._promise._cancel()) | |
}, u.prototype._reject = function(e) { | |
this._values = null, this._promise._rejectCallback(e, !1) | |
}, u.prototype._promiseFulfilled = function(e, t) { | |
this._values[t] = e; | |
var a = ++this._totalResolved; | |
return a >= this._length ? (this._resolve(this._values), !0) : !1 | |
}, u.prototype._promiseCancelled = function() { | |
return this._cancel(), !0 | |
}, u.prototype._promiseRejected = function(e) { | |
return this._totalResolved++, this._reject(e), !0 | |
}, u.prototype._resultCancelled = function() { | |
if (!this._isResolved()) { | |
var e = this._values; | |
if (this._cancel(), e instanceof t) e.cancel(); | |
else | |
for (var a = 0; a < e.length; ++a) e[a] instanceof t && e[a].cancel() | |
} | |
}, u.prototype.shouldCopyValues = function() { | |
return !0 | |
}, u.prototype.getActualLength = function(e) { | |
return e | |
}, u | |
} | |
}, { | |
"./util": 36 | |
}], | |
24: [function(e, t, a) { | |
"use strict"; | |
t.exports = function(t, a) { | |
function o(e) { | |
return !w.test(e) | |
} | |
function n(e) { | |
try { | |
return e.__isPromisified__ === !0 | |
} catch (t) { | |
return !1 | |
} | |
} | |
function i(e, t, a) { | |
var o = h.getDataPropertyOrDefault(e, t + a, v); | |
return o ? n(o) : !1 | |
} | |
function r(e, t, a) { | |
for (var o = 0; o < e.length; o += 2) { | |
var n = e[o]; | |
if (a.test(n)) | |
for (var i = n.replace(a, ""), r = 0; r < e.length; r += 2) | |
if (e[r] === i) throw new y("Cannot promisify an API that has normal methods with '%s'-suffix\n\n See http://goo.gl/MqrFmX\n".replace("%s", t)) | |
} | |
} | |
function u(e, t, a, o) { | |
for (var u = h.inheritedDataKeys(e), s = [], c = 0; c < u.length; ++c) { | |
var l = u[c], | |
m = e[l], | |
p = o === _ ? !0 : _(l, m, e); | |
"function" != typeof m || n(m) || i(e, l, t) || !o(l, m, e, p) || s.push(l, m) | |
} | |
return r(s, t, a), s | |
} | |
function s(e, o, n, i, r, u) { | |
function s() { | |
var n = o; | |
o === p && (n = this); | |
var i = new t(a); | |
i._captureStackTrace(); | |
var r = "string" == typeof l && this !== c ? this[l] : e, | |
s = d(i, u); | |
try { | |
r.apply(n, g(arguments, s)) | |
} catch (m) { | |
i._rejectCallback(f(m), !0, !0) | |
} | |
return i._isFateSealed() || i._setAsyncGuaranteed(), i | |
} | |
var c = function() { | |
return this | |
}(), | |
l = e; | |
return "string" == typeof l && (e = i), h.notEnumerableProp(s, "__isPromisified__", !0), s | |
} | |
function c(e, t, a, o, n) { | |
for (var i = new RegExp(A(t) + "$"), r = u(e, t, i, a), s = 0, c = r.length; c > s; s += 2) { | |
var l = r[s], | |
m = r[s + 1], | |
d = l + t; | |
if (o === E) e[d] = E(l, p, l, m, t, n); | |
else { | |
var g = o(m, function() { | |
return E(l, p, l, m, t, n) | |
}); | |
h.notEnumerableProp(g, "__isPromisified__", !0), e[d] = g | |
} | |
} | |
return h.toFastProperties(e), e | |
} | |
function l(e, t, a) { | |
return E(e, t, void 0, e, null, a) | |
} | |
var m, p = {}, | |
h = e("./util"), | |
d = e("./nodeback"), | |
g = h.withAppended, | |
f = h.maybeWrapAsError, | |
k = h.canEvaluate, | |
y = e("./errors").TypeError, | |
j = "Async", | |
v = { | |
__isPromisified__: !0 | |
}, | |
b = ["arity", "length", "name", "arguments", "caller", "callee", "prototype", "__isPromisified__"], | |
w = new RegExp("^(?:" + b.join("|") + ")$"), | |
_ = function(e) { | |
return h.isIdentifier(e) && "_" !== e.charAt(0) && "constructor" !== e | |
}, | |
A = function(e) { | |
return e.replace(/([$])/, "\\$") | |
}, | |
E = k ? m : s; | |
t.promisify = function(e, t) { | |
if ("function" != typeof e) throw new y("expecting a function but got " + h.classString(e)); | |
if (n(e)) return e; | |
t = Object(t); | |
var a = void 0 === t.context ? p : t.context, | |
i = !!t.multiArgs, | |
r = l(e, a, i); | |
return h.copyDescriptors(e, r, o), r | |
}, t.promisifyAll = function(e, t) { | |
if ("function" != typeof e && "object" != typeof e) throw new y("the target of promisifyAll must be an object or a function\n\n See http://goo.gl/MqrFmX\n"); | |
t = Object(t); | |
var a = !!t.multiArgs, | |
o = t.suffix; | |
"string" != typeof o && (o = j); | |
var n = t.filter; | |
"function" != typeof n && (n = _); | |
var i = t.promisifier; | |
if ("function" != typeof i && (i = E), !h.isIdentifier(o)) throw new RangeError("suffix must be a valid identifier\n\n See http://goo.gl/MqrFmX\n"); | |
for (var r = h.inheritedDataKeys(e), u = 0; u < r.length; ++u) { | |
var s = e[r[u]]; | |
"constructor" !== r[u] && h.isClass(s) && (c(s.prototype, o, n, i, a), c(s, o, n, i, a)) | |
} | |
return c(e, o, n, i, a) | |
} | |
} | |
}, { | |
"./errors": 12, | |
"./nodeback": 20, | |
"./util": 36 | |
}], | |
25: [function(e, t, a) { | |
"use strict"; | |
t.exports = function(t, a, o, n) { | |
function i(e) { | |
var t, a = !1; | |
if (void 0 !== u && e instanceof u) t = m(e), a = !0; | |
else { | |
var o = l.keys(e), | |
n = o.length; | |
t = new Array(2 * n); | |
for (var i = 0; n > i; ++i) { | |
var r = o[i]; | |
t[i] = e[r], t[i + n] = r | |
} | |
} | |
this.constructor$(t), this._isMap = a, this._init$(void 0, -3) | |
} | |
function r(e) { | |
var a, r = o(e); | |
return c(r) ? (a = r instanceof t ? r._then(t.props, void 0, void 0, void 0, void 0) : new i(r).promise(), r instanceof t && a._propagateFrom(r, 2), a) : n("cannot await properties of a non-object\n\n See http://goo.gl/MqrFmX\n") | |
} | |
var u, s = e("./util"), | |
c = s.isObject, | |
l = e("./es5"); | |
"function" == typeof Map && (u = Map); | |
var m = function() { | |
function e(e, o) { | |
this[t] = e, this[t + a] = o, t++ | |
} | |
var t = 0, | |
a = 0; | |
return function(o) { | |
a = o.size, t = 0; | |
var n = new Array(2 * o.size); | |
return o.forEach(e, n), n | |
} | |
}(), | |
p = function(e) { | |
for (var t = new u, a = e.length / 2 | 0, o = 0; a > o; ++o) { | |
var n = e[a + o], | |
i = e[o]; | |
t.set(n, i) | |
} | |
return t | |
}; | |
s.inherits(i, a), i.prototype._init = function() {}, i.prototype._promiseFulfilled = function(e, t) { | |
this._values[t] = e; | |
var a = ++this._totalResolved; | |
if (a >= this._length) { | |
var o; | |
if (this._isMap) o = p(this._values); | |
else { | |
o = {}; | |
for (var n = this.length(), i = 0, r = this.length(); r > i; ++i) o[this._values[i + n]] = this._values[i] | |
} | |
return this._resolve(o), !0 | |
} | |
return !1 | |
}, i.prototype.shouldCopyValues = function() { | |
return !1 | |
}, i.prototype.getActualLength = function(e) { | |
return e >> 1 | |
}, t.prototype.props = function() { | |
return r(this) | |
}, t.props = function(e) { | |
return r(e) | |
} | |
} | |
}, { | |
"./es5": 13, | |
"./util": 36 | |
}], | |
26: [function(e, t, a) { | |
"use strict"; | |
function o(e, t, a, o, n) { | |
for (var i = 0; n > i; ++i) a[i + o] = e[i + t], e[i + t] = void 0 | |
} | |
function n(e) { | |
this._capacity = e, this._length = 0, this._front = 0 | |
} | |
n.prototype._willBeOverCapacity = function(e) { | |
return this._capacity < e | |
}, n.prototype._pushOne = function(e) { | |
var t = this.length(); | |
this._checkCapacity(t + 1); | |
var a = this._front + t & this._capacity - 1; | |
this[a] = e, this._length = t + 1 | |
}, n.prototype._unshiftOne = function(e) { | |
var t = this._capacity; | |
this._checkCapacity(this.length() + 1); | |
var a = this._front, | |
o = (a - 1 & t - 1 ^ t) - t; | |
this[o] = e, this._front = o, this._length = this.length() + 1 | |
}, n.prototype.unshift = function(e, t, a) { | |
this._unshiftOne(a), this._unshiftOne(t), this._unshiftOne(e) | |
}, n.prototype.push = function(e, t, a) { | |
var o = this.length() + 3; | |
if (this._willBeOverCapacity(o)) return this._pushOne(e), this._pushOne(t), void this._pushOne(a); | |
var n = this._front + o - 3; | |
this._checkCapacity(o); | |
var i = this._capacity - 1; | |
this[n + 0 & i] = e, this[n + 1 & i] = t, this[n + 2 & i] = a, this._length = o | |
}, n.prototype.shift = function() { | |
var e = this._front, | |
t = this[e]; | |
return this[e] = void 0, this._front = e + 1 & this._capacity - 1, this._length--, t | |
}, n.prototype.length = function() { | |
return this._length | |
}, n.prototype._checkCapacity = function(e) { | |
this._capacity < e && this._resizeTo(this._capacity << 1) | |
}, n.prototype._resizeTo = function(e) { | |
var t = this._capacity; | |
this._capacity = e; | |
var a = this._front, | |
n = this._length, | |
i = a + n & t - 1; | |
o(this, 0, this, t, i) | |
}, t.exports = n | |
}, {}], | |
27: [function(e, t, a) { | |
"use strict"; | |
t.exports = function(t, a, o, n) { | |
function i(e, i) { | |
var s = o(e); | |
if (s instanceof t) return u(s); | |
if (e = r.asArray(e), null === e) return n("expecting an array or an iterable object but got " + r.classString(e)); | |
var c = new t(a); | |
void 0 !== i && c._propagateFrom(i, 3); | |
for (var l = c._fulfill, m = c._reject, p = 0, h = e.length; h > p; ++p) { | |
var d = e[p]; | |
(void 0 !== d || p in e) && t.cast(d)._then(l, m, void 0, c, null) | |
} | |
return c | |
} | |
var r = e("./util"), | |
u = function(e) { | |
return e.then(function(t) { | |
return i(t, e) | |
}) | |
}; | |
t.race = function(e) { | |
return i(e, void 0) | |
}, t.prototype.race = function() { | |
return i(this, void 0) | |
} | |
} | |
}, { | |
"./util": 36 | |
}], | |
28: [function(e, t, a) { | |
"use strict"; | |
t.exports = function(t, a, o, n, i, r) { | |
function u(e, a, o, n) { | |
this.constructor$(e); | |
var r = p(); | |
this._fn = null === r ? a : r.bind(a), void 0 !== o && (o = t.resolve(o), o._attachCancellationCallback(this)), this._initialValue = o, this._currentCancellable = null, this._eachValues = n === i ? [] : void 0, this._promise._captureStackTrace(), this._init$(void 0, -5) | |
} | |
function s(e, t) { | |
this.isFulfilled() ? t._resolve(e) : t._reject(e) | |
} | |
function c(e, t, a, n) { | |
if ("function" != typeof t) return o("expecting a function but got " + h.classString(t)); | |
var i = new u(e, t, a, n); | |
return i.promise() | |
} | |
function l(e) { | |
this.accum = e, this.array._gotAccum(e); | |
var a = n(this.value, this.array._promise); | |
return a instanceof t ? (this.array._currentCancellable = a, a._then(m, void 0, void 0, this, void 0)) : m.call(this, a) | |
} | |
function m(e) { | |
var a = this.array, | |
o = a._promise, | |
n = d(a._fn); | |
o._pushContext(); | |
var i; | |
i = void 0 !== a._eachValues ? n.call(o._boundValue(), e, this.index, this.length) : n.call(o._boundValue(), this.accum, e, this.index, this.length), i instanceof t && (a._currentCancellable = i); | |
var u = o._popContext(); | |
return r.checkForgottenReturns(i, u, void 0 !== a._eachValues ? "Promise.each" : "Promise.reduce", o), i | |
} | |
var p = t._getDomain, | |
h = e("./util"), | |
d = h.tryCatch; | |
h.inherits(u, a), u.prototype._gotAccum = function(e) { | |
void 0 !== this._eachValues && e !== i && this._eachValues.push(e) | |
}, u.prototype._eachComplete = function(e) { | |
return this._eachValues.push(e), this._eachValues | |
}, u.prototype._init = function() {}, u.prototype._resolveEmptyArray = function() { | |
this._resolve(void 0 !== this._eachValues ? this._eachValues : this._initialValue) | |
}, u.prototype.shouldCopyValues = function() { | |
return !1 | |
}, u.prototype._resolve = function(e) { | |
this._promise._resolveCallback(e), this._values = null | |
}, u.prototype._resultCancelled = function(e) { | |
return e === this._initialValue ? this._cancel() : void(this._isResolved() || (this._resultCancelled$(), this._currentCancellable instanceof t && this._currentCancellable.cancel(), this._initialValue instanceof t && this._initialValue.cancel())) | |
}, u.prototype._iterate = function(e) { | |
this._values = e; | |
var a, o, n = e.length; | |
if (void 0 !== this._initialValue ? (a = this._initialValue, o = 0) : (a = t.resolve(e[0]), o = 1), this._currentCancellable = a, !a.isRejected()) | |
for (; n > o; ++o) { | |
var i = { | |
accum: null, | |
value: e[o], | |
index: o, | |
length: n, | |
array: this | |
}; | |
a = a._then(l, void 0, void 0, i, void 0) | |
} | |
void 0 !== this._eachValues && (a = a._then(this._eachComplete, void 0, void 0, this, void 0)), a._then(s, s, void 0, a, this) | |
}, t.prototype.reduce = function(e, t) { | |
return c(this, e, t, null) | |
}, t.reduce = function(e, t, a, o) { | |
return c(e, t, a, o) | |
} | |
} | |
}, { | |
"./util": 36 | |
}], | |
29: [function(t, a, n) { | |
"use strict"; | |
var i, r = t("./util"), | |
u = function() { | |
throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n") | |
}, | |
s = r.getNativePromise(); | |
if (r.isNode && "undefined" == typeof MutationObserver) { | |
var c = o.setImmediate, | |
l = e.nextTick; | |
i = r.isRecentNode ? function(e) { | |
c.call(o, e) | |
} : function(t) { | |
l.call(e, t) | |
} | |
} else if ("function" == typeof s && "function" == typeof s.resolve) { | |
var m = s.resolve(); | |
i = function(e) { | |
m.then(e) | |
} | |
} else i = "undefined" == typeof MutationObserver || "undefined" != typeof window && window.navigator && window.navigator.standalone ? "undefined" != typeof setImmediate ? function(e) { | |
setImmediate(e) | |
} : "undefined" != typeof setTimeout ? function(e) { | |
setTimeout(e, 0) | |
} : u : function() { | |
var e = document.createElement("div"), | |
t = { | |
attributes: !0 | |
}, | |
a = !1, | |
o = document.createElement("div"), | |
n = new MutationObserver(function() { | |
e.classList.toggle("foo"), a = !1 | |
}); | |
n.observe(o, t); | |
var i = function() { | |
a || (a = !0, o.classList.toggle("foo")) | |
}; | |
return function(a) { | |
var o = new MutationObserver(function() { | |
o.disconnect(), a() | |
}); | |
o.observe(e, t), i() | |
} | |
}(); | |
a.exports = i | |
}, { | |
"./util": 36 | |
}], | |
30: [function(e, t, a) { | |
"use strict"; | |
t.exports = function(t, a, o) { | |
function n(e) { | |
this.constructor$(e) | |
} | |
var i = t.PromiseInspection, | |
r = e("./util"); | |
r.inherits(n, a), n.prototype._promiseResolved = function(e, t) { | |
this._values[e] = t; | |
var a = ++this._totalResolved; | |
return a >= this._length ? (this._resolve(this._values), !0) : !1 | |
}, n.prototype._promiseFulfilled = function(e, t) { | |
var a = new i; | |
return a._bitField = 33554432, a._settledValueField = e, this._promiseResolved(t, a) | |
}, n.prototype._promiseRejected = function(e, t) { | |
var a = new i; | |
return a._bitField = 16777216, a._settledValueField = e, this._promiseResolved(t, a) | |
}, t.settle = function(e) { | |
return o.deprecated(".settle()", ".reflect()"), new n(e).promise() | |
}, t.prototype.settle = function() { | |
return t.settle(this) | |
} | |
} | |
}, { | |
"./util": 36 | |
}], | |
31: [function(e, t, a) { | |
"use strict"; | |
t.exports = function(t, a, o) { | |
function n(e) { | |
this.constructor$(e), this._howMany = 0, this._unwrap = !1, this._initialized = !1 | |
} | |
function i(e, t) { | |
if ((0 | t) !== t || 0 > t) return o("expecting a positive integer\n\n See http://goo.gl/MqrFmX\n"); | |
var a = new n(e), | |
i = a.promise(); | |
return a.setHowMany(t), a.init(), i | |
} | |
var r = e("./util"), | |
u = e("./errors").RangeError, | |
s = e("./errors").AggregateError, | |
c = r.isArray, | |
l = {}; | |
r.inherits(n, a), n.prototype._init = function() { | |
if (this._initialized) { | |
if (0 === this._howMany) return void this._resolve([]); | |
this._init$(void 0, -5); | |
var e = c(this._values); | |
!this._isResolved() && e && this._howMany > this._canPossiblyFulfill() && this._reject(this._getRangeError(this.length())) | |
} | |
}, n.prototype.init = function() { | |
this._initialized = !0, this._init() | |
}, n.prototype.setUnwrap = function() { | |
this._unwrap = !0 | |
}, n.prototype.howMany = function() { | |
return this._howMany | |
}, n.prototype.setHowMany = function(e) { | |
this._howMany = e | |
}, n.prototype._promiseFulfilled = function(e) { | |
return this._addFulfilled(e), this._fulfilled() === this.howMany() ? (this._values.length = this.howMany(), 1 === this.howMany() && this._unwrap ? this._resolve(this._values[0]) : this._resolve(this._values), !0) : !1 | |
}, n.prototype._promiseRejected = function(e) { | |
return this._addRejected(e), this._checkOutcome() | |
}, n.prototype._promiseCancelled = function() { | |
return this._values instanceof t || null == this._values ? this._cancel() : (this._addRejected(l), this._checkOutcome()) | |
}, n.prototype._checkOutcome = function() { | |
if (this.howMany() > this._canPossiblyFulfill()) { | |
for (var e = new s, t = this.length(); t < this._values.length; ++t) this._values[t] !== l && e.push(this._values[t]); | |
return e.length > 0 ? this._reject(e) : this._cancel(), !0 | |
} | |
return !1 | |
}, n.prototype._fulfilled = function() { | |
return this._totalResolved | |
}, n.prototype._rejected = function() { | |
return this._values.length - this.length() | |
}, n.prototype._addRejected = function(e) { | |
this._values.push(e) | |
}, n.prototype._addFulfilled = function(e) { | |
this._values[this._totalResolved++] = e | |
}, n.prototype._canPossiblyFulfill = function() { | |
return this.length() - this._rejected() | |
}, n.prototype._getRangeError = function(e) { | |
var t = "Input array must contain at least " + this._howMany + " items but contains only " + e + " items"; | |
return new u(t) | |
}, n.prototype._resolveEmptyArray = function() { | |
this._reject(this._getRangeError(0)) | |
}, t.some = function(e, t) { | |
return i(e, t) | |
}, t.prototype.some = function(e) { | |
return i(this, e) | |
}, t._SomePromiseArray = n | |
} | |
}, { | |
"./errors": 12, | |
"./util": 36 | |
}], | |
32: [function(e, t, a) { | |
"use strict"; | |
t.exports = function(e) { | |
function t(e) { | |
void 0 !== e ? (e = e._target(), this._bitField = e._bitField, this._settledValueField = e._isFateSealed() ? e._settledValue() : void 0) : (this._bitField = 0, this._settledValueField = void 0) | |
} | |
t.prototype._settledValue = function() { | |
return this._settledValueField | |
}; | |
var a = t.prototype.value = function() { | |
if (!this.isFulfilled()) throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/MqrFmX\n"); | |
return this._settledValue() | |
}, | |
o = t.prototype.error = t.prototype.reason = function() { | |
if (!this.isRejected()) throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/MqrFmX\n"); | |
return this._settledValue() | |
}, | |
n = t.prototype.isFulfilled = function() { | |
return 0 !== (33554432 & this._bitField) | |
}, | |
i = t.prototype.isRejected = function() { | |
return 0 !== (16777216 & this._bitField) | |
}, | |
r = t.prototype.isPending = function() { | |
return 0 === (50397184 & this._bitField) | |
}, | |
u = t.prototype.isResolved = function() { | |
return 0 !== (50331648 & this._bitField) | |
}; | |
t.prototype.isCancelled = function() { | |
return 0 !== (8454144 & this._bitField) | |
}, e.prototype.__isCancelled = function() { | |
return 65536 === (65536 & this._bitField) | |
}, e.prototype._isCancelled = function() { | |
return this._target().__isCancelled(); | |
}, e.prototype.isCancelled = function() { | |
return 0 !== (8454144 & this._target()._bitField) | |
}, e.prototype.isPending = function() { | |
return r.call(this._target()) | |
}, e.prototype.isRejected = function() { | |
return i.call(this._target()) | |
}, e.prototype.isFulfilled = function() { | |
return n.call(this._target()) | |
}, e.prototype.isResolved = function() { | |
return u.call(this._target()) | |
}, e.prototype.value = function() { | |
return a.call(this._target()) | |
}, e.prototype.reason = function() { | |
var e = this._target(); | |
return e._unsetRejectionIsUnhandled(), o.call(e) | |
}, e.prototype._value = function() { | |
return this._settledValue() | |
}, e.prototype._reason = function() { | |
return this._unsetRejectionIsUnhandled(), this._settledValue() | |
}, e.PromiseInspection = t | |
} | |
}, {}], | |
33: [function(e, t, a) { | |
"use strict"; | |
t.exports = function(t, a) { | |
function o(e, o) { | |
if (l(e)) { | |
if (e instanceof t) return e; | |
var n = i(e); | |
if (n === c) { | |
o && o._pushContext(); | |
var s = t.reject(n.e); | |
return o && o._popContext(), s | |
} | |
if ("function" == typeof n) { | |
if (r(e)) { | |
var s = new t(a); | |
return e._then(s._fulfill, s._reject, void 0, s, null), s | |
} | |
return u(e, n, o) | |
} | |
} | |
return e | |
} | |
function n(e) { | |
return e.then | |
} | |
function i(e) { | |
try { | |
return n(e) | |
} catch (t) { | |
return c.e = t, c | |
} | |
} | |
function r(e) { | |
try { | |
return m.call(e, "_promise0") | |
} catch (t) { | |
return !1 | |
} | |
} | |
function u(e, o, n) { | |
function i(e) { | |
u && (u._resolveCallback(e), u = null) | |
} | |
function r(e) { | |
u && (u._rejectCallback(e, m, !0), u = null) | |
} | |
var u = new t(a), | |
l = u; | |
n && n._pushContext(), u._captureStackTrace(), n && n._popContext(); | |
var m = !0, | |
p = s.tryCatch(o).call(e, i, r); | |
return m = !1, u && p === c && (u._rejectCallback(p.e, !0, !0), u = null), l | |
} | |
var s = e("./util"), | |
c = s.errorObj, | |
l = s.isObject, | |
m = {}.hasOwnProperty; | |
return o | |
} | |
}, { | |
"./util": 36 | |
}], | |
34: [function(e, t, a) { | |
"use strict"; | |
t.exports = function(t, a, o) { | |
function n(e) { | |
this.handle = e | |
} | |
function i(e) { | |
return clearTimeout(this.handle), e | |
} | |
function r(e) { | |
throw clearTimeout(this.handle), e | |
} | |
var u = e("./util"), | |
s = t.TimeoutError; | |
n.prototype._resultCancelled = function() { | |
clearTimeout(this.handle) | |
}; | |
var c = function(e) { | |
return l(+this).thenReturn(e) | |
}, | |
l = t.delay = function(e, i) { | |
var r, u; | |
return void 0 !== i ? (r = t.resolve(i)._then(c, null, null, e, void 0), o.cancellation() && i instanceof t && r._setOnCancel(i)) : (r = new t(a), u = setTimeout(function() { | |
r._fulfill() | |
}, +e), o.cancellation() && r._setOnCancel(new n(u)), r._captureStackTrace()), r._setAsyncGuaranteed(), r | |
}; | |
t.prototype.delay = function(e) { | |
return l(e, this) | |
}; | |
var m = function(e, t, a) { | |
var o; | |
o = "string" != typeof t ? t instanceof Error ? t : new s("operation timed out") : new s(t), u.markAsOriginatingFromRejection(o), e._attachExtraTrace(o), e._reject(o), null != a && a.cancel() | |
}; | |
t.prototype.timeout = function(e, t) { | |
e = +e; | |
var a, u, s = new n(setTimeout(function() { | |
a.isPending() && m(a, t, u) | |
}, e)); | |
return o.cancellation() ? (u = this.then(), a = u._then(i, r, void 0, s, void 0), a._setOnCancel(s)) : a = this._then(i, r, void 0, s, void 0), a | |
} | |
} | |
}, { | |
"./util": 36 | |
}], | |
35: [function(e, t, a) { | |
"use strict"; | |
t.exports = function(t, a, o, n, i, r) { | |
function u(e) { | |
setTimeout(function() { | |
throw e | |
}, 0) | |
} | |
function s(e) { | |
var t = o(e); | |
return t !== e && "function" == typeof e._isDisposable && "function" == typeof e._getDisposer && e._isDisposable() && t._setDisposable(e._getDisposer()), t | |
} | |
function c(e, a) { | |
function n() { | |
if (r >= c) return l._fulfill(); | |
var i = s(e[r++]); | |
if (i instanceof t && i._isDisposable()) { | |
try { | |
i = o(i._getDisposer().tryDispose(a), e.promise) | |
} catch (m) { | |
return u(m) | |
} | |
if (i instanceof t) return i._then(n, u, null, null, null) | |
} | |
n() | |
} | |
var r = 0, | |
c = e.length, | |
l = new t(i); | |
return n(), l | |
} | |
function l(e, t, a) { | |
this._data = e, this._promise = t, this._context = a | |
} | |
function m(e, t, a) { | |
this.constructor$(e, t, a) | |
} | |
function p(e) { | |
return l.isDisposer(e) ? (this.resources[this.index]._setDisposable(e), e.promise()) : e | |
} | |
function h(e) { | |
this.length = e, this.promise = null, this[e - 1] = null | |
} | |
var d = e("./util"), | |
g = e("./errors").TypeError, | |
f = e("./util").inherits, | |
k = d.errorObj, | |
y = d.tryCatch, | |
j = {}; | |
l.prototype.data = function() { | |
return this._data | |
}, l.prototype.promise = function() { | |
return this._promise | |
}, l.prototype.resource = function() { | |
return this.promise().isFulfilled() ? this.promise().value() : j | |
}, l.prototype.tryDispose = function(e) { | |
var t = this.resource(), | |
a = this._context; | |
void 0 !== a && a._pushContext(); | |
var o = t !== j ? this.doDispose(t, e) : null; | |
return void 0 !== a && a._popContext(), this._promise._unsetDisposable(), this._data = null, o | |
}, l.isDisposer = function(e) { | |
return null != e && "function" == typeof e.resource && "function" == typeof e.tryDispose | |
}, f(m, l), m.prototype.doDispose = function(e, t) { | |
var a = this.data(); | |
return a.call(e, e, t) | |
}, h.prototype._resultCancelled = function() { | |
for (var e = this.length, a = 0; e > a; ++a) { | |
var o = this[a]; | |
o instanceof t && o.cancel() | |
} | |
}, t.using = function() { | |
var e = arguments.length; | |
if (2 > e) return a("you must pass at least 2 arguments to Promise.using"); | |
var n = arguments[e - 1]; | |
if ("function" != typeof n) return a("expecting a function but got " + d.classString(n)); | |
var i, u = !0; | |
2 === e && Array.isArray(arguments[0]) ? (i = arguments[0], e = i.length, u = !1) : (i = arguments, e--); | |
for (var s = new h(e), m = 0; e > m; ++m) { | |
var g = i[m]; | |
if (l.isDisposer(g)) { | |
var f = g; | |
g = g.promise(), g._setDisposable(f) | |
} else { | |
var j = o(g); | |
j instanceof t && (g = j._then(p, null, null, { | |
resources: s, | |
index: m | |
}, void 0)) | |
} | |
s[m] = g | |
} | |
for (var v = new Array(s.length), m = 0; m < v.length; ++m) v[m] = t.resolve(s[m]).reflect(); | |
var b = t.all(v).then(function(e) { | |
for (var t = 0; t < e.length; ++t) { | |
var a = e[t]; | |
if (a.isRejected()) return k.e = a.error(), k; | |
if (!a.isFulfilled()) return void b.cancel(); | |
e[t] = a.value() | |
} | |
w._pushContext(), n = y(n); | |
var o = u ? n.apply(void 0, e) : n(e), | |
i = w._popContext(); | |
return r.checkForgottenReturns(o, i, "Promise.using", w), o | |
}), | |
w = b.lastly(function() { | |
var e = new t.PromiseInspection(b); | |
return c(s, e) | |
}); | |
return s.promise = w, w._setOnCancel(s), w | |
}, t.prototype._setDisposable = function(e) { | |
this._bitField = 131072 | this._bitField, this._disposer = e | |
}, t.prototype._isDisposable = function() { | |
return (131072 & this._bitField) > 0 | |
}, t.prototype._getDisposer = function() { | |
return this._disposer | |
}, t.prototype._unsetDisposable = function() { | |
this._bitField = -131073 & this._bitField, this._disposer = void 0 | |
}, t.prototype.disposer = function(e) { | |
if ("function" == typeof e) return new m(e, this, n()); | |
throw new g | |
} | |
} | |
}, { | |
"./errors": 12, | |
"./util": 36 | |
}], | |
36: [function(t, a, n) { | |
"use strict"; | |
function i() { | |
try { | |
var e = D; | |
return D = null, e.apply(this, arguments) | |
} catch (t) { | |
return z.e = t, z | |
} | |
} | |
function r(e) { | |
return D = e, i | |
} | |
function u(e) { | |
return null == e || e === !0 || e === !1 || "string" == typeof e || "number" == typeof e | |
} | |
function s(e) { | |
return "function" == typeof e || "object" == typeof e && null !== e | |
} | |
function c(e) { | |
return u(e) ? new Error(y(e)) : e | |
} | |
function l(e, t) { | |
var a, o = e.length, | |
n = new Array(o + 1); | |
for (a = 0; o > a; ++a) n[a] = e[a]; | |
return n[a] = t, n | |
} | |
function m(e, t, a) { | |
if (!x.isES5) return {}.hasOwnProperty.call(e, t) ? e[t] : void 0; | |
var o = Object.getOwnPropertyDescriptor(e, t); | |
return null != o ? null == o.get && null == o.set ? o.value : a : void 0 | |
} | |
function p(e, t, a) { | |
if (u(e)) return e; | |
var o = { | |
value: a, | |
configurable: !0, | |
enumerable: !1, | |
writable: !0 | |
}; | |
return x.defineProperty(e, t, o), e | |
} | |
function h(e) { | |
throw e | |
} | |
function d(e) { | |
try { | |
if ("function" == typeof e) { | |
var t = x.names(e.prototype), | |
a = x.isES5 && t.length > 1, | |
o = t.length > 0 && !(1 === t.length && "constructor" === t[0]), | |
n = P.test(e + "") && x.names(e).length > 0; | |
if (a || o || n) return !0 | |
} | |
return !1 | |
} catch (i) { | |
return !1 | |
} | |
} | |
function g(e) { | |
function t() {} | |
t.prototype = e; | |
for (var a = 8; a--;) new t; | |
return e | |
} | |
function f(e) { | |
return R.test(e) | |
} | |
function k(e, t, a) { | |
for (var o = new Array(e), n = 0; e > n; ++n) o[n] = t + n + a; | |
return o | |
} | |
function y(e) { | |
try { | |
return e + "" | |
} catch (t) { | |
return "[no string representation]" | |
} | |
} | |
function j(e) { | |
return null !== e && "object" == typeof e && "string" == typeof e.message && "string" == typeof e.name | |
} | |
function v(e) { | |
try { | |
p(e, "isOperational", !0) | |
} catch (t) {} | |
} | |
function b(e) { | |
return null == e ? !1 : e instanceof Error.__BluebirdErrorTypes__.OperationalError || e.isOperational === !0 | |
} | |
function w(e) { | |
return j(e) && x.propertyIsWritable(e, "stack") | |
} | |
function _(e) { | |
return {}.toString.call(e) | |
} | |
function A(e, t, a) { | |
for (var o = x.names(e), n = 0; n < o.length; ++n) { | |
var i = o[n]; | |
if (a(i)) try { | |
x.defineProperty(t, i, x.getDescriptor(e, i)) | |
} catch (r) {} | |
} | |
} | |
function E(t, a) { | |
return O ? e.env[t] : a | |
} | |
function C() { | |
if ("function" == typeof Promise) try { | |
var e = new Promise(function() {}); | |
if ("[object Promise]" === {}.toString.call(e)) return Promise | |
} catch (t) {} | |
} | |
var x = t("./es5"), | |
F = "undefined" == typeof navigator, | |
z = { | |
e: {} | |
}, | |
D, B = "undefined" != typeof self ? self : "undefined" != typeof window ? window : "undefined" != typeof o ? o : void 0 !== this ? this : null, | |
S = function(e, t) { | |
function a() { | |
this.constructor = e, this.constructor$ = t; | |
for (var a in t.prototype) o.call(t.prototype, a) && "$" !== a.charAt(a.length - 1) && (this[a + "$"] = t.prototype[a]) | |
} | |
var o = {}.hasOwnProperty; | |
return a.prototype = t.prototype, e.prototype = new a, e.prototype | |
}, | |
T = function() { | |
var e = [Array.prototype, Object.prototype, Function.prototype], | |
t = function(t) { | |
for (var a = 0; a < e.length; ++a) | |
if (e[a] === t) return !0; | |
return !1 | |
}; | |
if (x.isES5) { | |
var a = Object.getOwnPropertyNames; | |
return function(e) { | |
for (var o = [], n = Object.create(null); null != e && !t(e);) { | |
var i; | |
try { | |
i = a(e) | |
} catch (r) { | |
return o | |
} | |
for (var u = 0; u < i.length; ++u) { | |
var s = i[u]; | |
if (!n[s]) { | |
n[s] = !0; | |
var c = Object.getOwnPropertyDescriptor(e, s); | |
null != c && null == c.get && null == c.set && o.push(s) | |
} | |
} | |
e = x.getPrototypeOf(e) | |
} | |
return o | |
} | |
} | |
var o = {}.hasOwnProperty; | |
return function(a) { | |
if (t(a)) return []; | |
var n = []; | |
e: for (var i in a) | |
if (o.call(a, i)) n.push(i); | |
else { | |
for (var r = 0; r < e.length; ++r) | |
if (o.call(e[r], i)) continue e; | |
n.push(i) | |
} | |
return n | |
} | |
}(), | |
P = /this\s*\.\s*\S+\s*=/, | |
R = /^[a-z$_][a-z$_0-9]*$/i, | |
I = function() { | |
return "stack" in new Error ? function(e) { | |
return w(e) ? e : new Error(y(e)) | |
} : function(e) { | |
if (w(e)) return e; | |
try { | |
throw new Error(y(e)) | |
} catch (t) { | |
return t | |
} | |
} | |
}(), | |
N = function(e) { | |
return x.isArray(e) ? e : null | |
}; | |
if ("undefined" != typeof Symbol && Symbol.iterator) { | |
var L = "function" == typeof Array.from ? function(e) { | |
return Array.from(e) | |
} : function(e) { | |
for (var t, a = [], o = e[Symbol.iterator](); !(t = o.next()).done;) a.push(t.value); | |
return a | |
}; | |
N = function(e) { | |
return x.isArray(e) ? e : null != e && "function" == typeof e[Symbol.iterator] ? L(e) : null | |
} | |
} | |
var O = "undefined" != typeof e && "[object process]" === _(e).toLowerCase(), | |
M = { | |
isClass: d, | |
isIdentifier: f, | |
inheritedDataKeys: T, | |
getDataPropertyOrDefault: m, | |
thrower: h, | |
isArray: x.isArray, | |
asArray: N, | |
notEnumerableProp: p, | |
isPrimitive: u, | |
isObject: s, | |
isError: j, | |
canEvaluate: F, | |
errorObj: z, | |
tryCatch: r, | |
inherits: S, | |
withAppended: l, | |
maybeWrapAsError: c, | |
toFastProperties: g, | |
filledRange: k, | |
toString: y, | |
canAttachTrace: w, | |
ensureErrorObject: I, | |
originatesFromRejection: b, | |
markAsOriginatingFromRejection: v, | |
classString: _, | |
copyDescriptors: A, | |
hasDevTools: "undefined" != typeof chrome && chrome && "function" == typeof chrome.loadTimes, | |
isNode: O, | |
env: E, | |
global: B, | |
getNativePromise: C | |
}; | |
M.isRecentNode = M.isNode && function() { | |
var t = e.versions.node.split(".").map(Number); | |
return 0 === t[0] && t[1] > 10 || t[0] > 0 | |
}(), M.isNode && M.toFastProperties(e); | |
try { | |
throw new Error | |
} catch (q) { | |
M.lastLineError = q | |
} | |
a.exports = M | |
}, { | |
"./es5": 13 | |
}] | |
}, {}, [4])(4) | |
}), "undefined" != typeof window && null !== window ? window.P = window.Promise : "undefined" != typeof self && null !== self && (self.P = self.Promise) | |
}).call(this, e("_process"), "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}) | |
}, { | |
_process: 146 | |
}], | |
82: [function(e, t, a) {}, {}], | |
83: [function(e, t, a) { | |
! function() { | |
var e = CryptoJS, | |
t = e.lib, | |
a = t.BlockCipher, | |
o = e.algo, | |
n = [], | |
i = [], | |
r = [], | |
u = [], | |
s = [], | |
c = [], | |
l = [], | |
m = [], | |
p = [], | |
h = []; | |
! function() { | |
for (var e = [], t = 0; 256 > t; t++) 128 > t ? e[t] = t << 1 : e[t] = t << 1 ^ 283; | |
for (var a = 0, o = 0, t = 0; 256 > t; t++) { | |
var d = o ^ o << 1 ^ o << 2 ^ o << 3 ^ o << 4; | |
d = d >>> 8 ^ 255 & d ^ 99, n[a] = d, i[d] = a; | |
var g = e[a], | |
f = e[g], | |
k = e[f], | |
y = 257 * e[d] ^ 16843008 * d; | |
r[a] = y << 24 | y >>> 8, u[a] = y << 16 | y >>> 16, s[a] = y << 8 | y >>> 24, c[a] = y; | |
var y = 16843009 * k ^ 65537 * f ^ 257 * g ^ 16843008 * a; | |
l[d] = y << 24 | y >>> 8, m[d] = y << 16 | y >>> 16, p[d] = y << 8 | y >>> 24, h[d] = y, a ? (a = g ^ e[e[e[k ^ g]]], o ^= e[e[o]]) : a = o = 1 | |
} | |
}(); | |
var d = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], | |
g = o.AES = a.extend({ | |
_doReset: function() { | |
for (var e = this._key, t = e.words, a = e.sigBytes / 4, o = this._nRounds = a + 6, i = 4 * (o + 1), r = this._keySchedule = [], u = 0; i > u; u++) | |
if (a > u) r[u] = t[u]; | |
else { | |
var s = r[u - 1]; | |
u % a ? a > 6 && u % a == 4 && (s = n[s >>> 24] << 24 | n[s >>> 16 & 255] << 16 | n[s >>> 8 & 255] << 8 | n[255 & s]) : (s = s << 8 | s >>> 24, s = n[s >>> 24] << 24 | n[s >>> 16 & 255] << 16 | n[s >>> 8 & 255] << 8 | n[255 & s], s ^= d[u / a | 0] << 24), r[u] = r[u - a] ^ s | |
} | |
for (var c = this._invKeySchedule = [], g = 0; i > g; g++) { | |
var u = i - g; | |
if (g % 4) var s = r[u]; | |
else var s = r[u - 4]; | |
4 > g || 4 >= u ? c[g] = s : c[g] = l[n[s >>> 24]] ^ m[n[s >>> 16 & 255]] ^ p[n[s >>> 8 & 255]] ^ h[n[255 & s]] | |
} | |
}, | |
encryptBlock: function(e, t) { | |
this._doCryptBlock(e, t, this._keySchedule, r, u, s, c, n) | |
}, | |
decryptBlock: function(e, t) { | |
var a = e[t + 1]; | |
e[t + 1] = e[t + 3], e[t + 3] = a, this._doCryptBlock(e, t, this._invKeySchedule, l, m, p, h, i); | |
var a = e[t + 1]; | |
e[t + 1] = e[t + 3], e[t + 3] = a | |
}, | |
_doCryptBlock: function(e, t, a, o, n, i, r, u) { | |
for (var s = this._nRounds, c = e[t] ^ a[0], l = e[t + 1] ^ a[1], m = e[t + 2] ^ a[2], p = e[t + 3] ^ a[3], h = 4, d = 1; s > d; d++) { | |
var g = o[c >>> 24] ^ n[l >>> 16 & 255] ^ i[m >>> 8 & 255] ^ r[255 & p] ^ a[h++], | |
f = o[l >>> 24] ^ n[m >>> 16 & 255] ^ i[p >>> 8 & 255] ^ r[255 & c] ^ a[h++], | |
k = o[m >>> 24] ^ n[p >>> 16 & 255] ^ i[c >>> 8 & 255] ^ r[255 & l] ^ a[h++], | |
y = o[p >>> 24] ^ n[c >>> 16 & 255] ^ i[l >>> 8 & 255] ^ r[255 & m] ^ a[h++]; | |
c = g, l = f, m = k, p = y | |
} | |
var g = (u[c >>> 24] << 24 | u[l >>> 16 & 255] << 16 | u[m >>> 8 & 255] << 8 | u[255 & p]) ^ a[h++], | |
f = (u[l >>> 24] << 24 | u[m >>> 16 & 255] << 16 | u[p >>> 8 & 255] << 8 | u[255 & c]) ^ a[h++], | |
k = (u[m >>> 24] << 24 | u[p >>> 16 & 255] << 16 | u[c >>> 8 & 255] << 8 | u[255 & l]) ^ a[h++], | |
y = (u[p >>> 24] << 24 | u[c >>> 16 & 255] << 16 | u[l >>> 8 & 255] << 8 | u[255 & m]) ^ a[h++]; | |
e[t] = g, e[t + 1] = f, e[t + 2] = k, e[t + 3] = y | |
}, | |
keySize: 8 | |
}); | |
e.AES = a._createHelper(g) | |
}() | |
}, {}], | |
84: [function(e, t, a) { | |
CryptoJS.lib.Cipher || function(e) { | |
var t = CryptoJS, | |
a = t.lib, | |
o = a.Base, | |
n = a.WordArray, | |
i = a.BufferedBlockAlgorithm, | |
r = t.enc, | |
u = (r.Utf8, r.Base64), | |
s = t.algo, | |
c = s.EvpKDF, | |
l = a.Cipher = i.extend({ | |
cfg: o.extend(), | |
createEncryptor: function(e, t) { | |
return this.create(this._ENC_XFORM_MODE, e, t) | |
}, | |
createDecryptor: function(e, t) { | |
return this.create(this._DEC_XFORM_MODE, e, t) | |
}, | |
init: function(e, t, a) { | |
this.cfg = this.cfg.extend(a), this._xformMode = e, this._key = t, this.reset() | |
}, | |
reset: function() { | |
i.reset.call(this), this._doReset() | |
}, | |
process: function(e) { | |
return this._append(e), this._process() | |
}, | |
finalize: function(e) { | |
e && this._append(e); | |
var t = this._doFinalize(); | |
return t | |
}, | |
keySize: 4, | |
ivSize: 4, | |
_ENC_XFORM_MODE: 1, | |
_DEC_XFORM_MODE: 2, | |
_createHelper: function() { | |
function e(e) { | |
return "string" == typeof e ? w : j | |
} | |
return function(t) { | |
return { | |
encrypt: function(a, o, n) { | |
return e(o).encrypt(t, a, o, n) | |
}, | |
decrypt: function(a, o, n) { | |
return e(o).decrypt(t, a, o, n) | |
} | |
} | |
} | |
}() | |
}), | |
m = (a.StreamCipher = l.extend({ | |
_doFinalize: function() { | |
var e = this._process(!0); | |
return e | |
}, | |
blockSize: 1 | |
}), t.mode = {}), | |
p = a.BlockCipherMode = o.extend({ | |
createEncryptor: function(e, t) { | |
return this.Encryptor.create(e, t) | |
}, | |
createDecryptor: function(e, t) { | |
return this.Decryptor.create(e, t) | |
}, | |
init: function(e, t) { | |
this._cipher = e, this._iv = t | |
} | |
}), | |
h = m.CBC = function() { | |
function t(t, a, o) { | |
var n = this._iv; | |
if (n) { | |
var i = n; | |
this._iv = e | |
} else var i = this._prevBlock; | |
for (var r = 0; o > r; r++) t[a + r] ^= i[r] | |
} | |
var a = p.extend(); | |
return a.Encryptor = a.extend({ | |
processBlock: function(e, a) { | |
var o = this._cipher, | |
n = o.blockSize; | |
t.call(this, e, a, n), o.encryptBlock(e, a), this._prevBlock = e.slice(a, a + n) | |
} | |
}), a.Decryptor = a.extend({ | |
processBlock: function(e, a) { | |
var o = this._cipher, | |
n = o.blockSize, | |
i = e.slice(a, a + n); | |
o.decryptBlock(e, a), t.call(this, e, a, n), this._prevBlock = i | |
} | |
}), a | |
}(), | |
d = t.pad = {}, | |
g = d.Pkcs7 = { | |
pad: function(e, t) { | |
for (var a = 4 * t, o = a - e.sigBytes % a, i = o << 24 | o << 16 | o << 8 | o, r = [], u = 0; o > u; u += 4) r.push(i); | |
var s = n.create(r, o); | |
e.concat(s) | |
}, | |
unpad: function(e) { | |
var t = 255 & e.words[e.sigBytes - 1 >>> 2]; | |
e.sigBytes -= t | |
} | |
}, | |
f = (a.BlockCipher = l.extend({ | |
cfg: l.cfg.extend({ | |
mode: h, | |
padding: g | |
}), | |
reset: function() { | |
l.reset.call(this); | |
var e = this.cfg, | |
t = e.iv, | |
a = e.mode; | |
if (this._xformMode == this._ENC_XFORM_MODE) var o = a.createEncryptor; | |
else { | |
var o = a.createDecryptor; | |
this._minBufferSize = 1 | |
} | |
this._mode = o.call(a, this, t && t.words) | |
}, | |
_doProcessBlock: function(e, t) { | |
this._mode.processBlock(e, t) | |
}, | |
_doFinalize: function() { | |
var e = this.cfg.padding; | |
if (this._xformMode == this._ENC_XFORM_MODE) { | |
e.pad(this._data, this.blockSize); | |
var t = this._process(!0) | |
} else { | |
var t = this._process(!0); | |
e.unpad(t) | |
} | |
return t | |
}, | |
blockSize: 4 | |
}), a.CipherParams = o.extend({ | |
init: function(e) { | |
this.mixIn(e) | |
}, | |
toString: function(e) { | |
return (e || this.formatter).stringify(this) | |
} | |
})), | |
k = t.format = {}, | |
y = k.OpenSSL = { | |
stringify: function(e) { | |
var t = e.ciphertext, | |
a = e.salt; | |
if (a) var o = n.create([1398893684, 1701076831]).concat(a).concat(t); | |
else var o = t; | |
return o.toString(u) | |
}, | |
parse: function(e) { | |
var t = u.parse(e), | |
a = t.words; | |
if (1398893684 == a[0] && 1701076831 == a[1]) { | |
var o = n.create(a.slice(2, 4)); | |
a.splice(0, 4), t.sigBytes -= 16 | |
} | |
return f.create({ | |
ciphertext: t, | |
salt: o | |
}) | |
} | |
}, | |
j = a.SerializableCipher = o.extend({ | |
cfg: o.extend({ | |
format: y | |
}), | |
encrypt: function(e, t, a, o) { | |
o = this.cfg.extend(o); | |
var n = e.createEncryptor(a, o), | |
i = n.finalize(t), | |
r = n.cfg; | |
return f.create({ | |
ciphertext: i, | |
key: a, | |
iv: r.iv, | |
algorithm: e, | |
mode: r.mode, | |
padding: r.padding, | |
blockSize: e.blockSize, | |
formatter: o.format | |
}) | |
}, | |
decrypt: function(e, t, a, o) { | |
o = this.cfg.extend(o), t = this._parse(t, o.format); | |
var n = e.createDecryptor(a, o).finalize(t.ciphertext); | |
return n | |
}, | |
_parse: function(e, t) { | |
return "string" == typeof e ? t.parse(e, this) : e | |
} | |
}), | |
v = t.kdf = {}, | |
b = v.OpenSSL = { | |
execute: function(e, t, a, o) { | |
o || (o = n.random(8)); | |
var i = c.create({ | |
keySize: t + a | |
}).compute(e, o), | |
r = n.create(i.words.slice(t), 4 * a); | |
return i.sigBytes = 4 * t, f.create({ | |
key: i, | |
iv: r, | |
salt: o | |
}) | |
} | |
}, | |
w = a.PasswordBasedCipher = j.extend({ | |
cfg: j.cfg.extend({ | |
kdf: b | |
}), | |
encrypt: function(e, t, a, o) { | |
o = this.cfg.extend(o); | |
var n = o.kdf.execute(a, e.keySize, e.ivSize); | |
o.iv = n.iv; | |
var i = j.encrypt.call(this, e, t, n.key, o); | |
return i.mixIn(n), i | |
}, | |
decrypt: function(e, t, a, o) { | |
o = this.cfg.extend(o), t = this._parse(t, o.format); | |
var n = o.kdf.execute(a, e.keySize, e.ivSize, t.salt); | |
o.iv = n.iv; | |
var i = j.decrypt.call(this, e, t, n.key, o); | |
return i | |
} | |
}) | |
}() | |
}, {}], | |
85: [function(e, t, a) { | |
! function() { | |
var e = CryptoJS, | |
t = e.lib, | |
a = t.WordArray, | |
o = e.enc; | |
o.Base64 = { | |
stringify: function(e) { | |
var t = e.words, | |
a = e.sigBytes, | |
o = this._map; | |
e.clamp(); | |
for (var n = [], i = 0; a > i; i += 3) | |
for (var r = t[i >>> 2] >>> 24 - i % 4 * 8 & 255, u = t[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 255, s = t[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 255, c = r << 16 | u << 8 | s, l = 0; 4 > l && a > i + .75 * l; l++) n.push(o.charAt(c >>> 6 * (3 - l) & 63)); | |
var m = o.charAt(64); | |
if (m) | |
for (; n.length % 4;) n.push(m); | |
return n.join("") | |
}, | |
parse: function(e) { | |
var t = e.length, | |
o = this._map, | |
n = o.charAt(64); | |
if (n) { | |
var i = e.indexOf(n); - 1 != i && (t = i) | |
} | |
for (var r = [], u = 0, s = 0; t > s; s++) | |
if (s % 4) { | |
var c = o.indexOf(e.charAt(s - 1)) << s % 4 * 2, | |
l = o.indexOf(e.charAt(s)) >>> 6 - s % 4 * 2; | |
r[u >>> 2] |= (c | l) << 24 - u % 4 * 8, u++ | |
} | |
return a.create(r, u) | |
}, | |
_map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" | |
} | |
}() | |
}, {}], | |
86: [function(e, t, a) { | |
! function(e) { | |
function t(e, t, a, o, n, i, r) { | |
var u = e + (t & a | ~t & o) + n + r; | |
return (u << i | u >>> 32 - i) + t | |
} | |
function a(e, t, a, o, n, i, r) { | |
var u = e + (t & o | a & ~o) + n + r; | |
return (u << i | u >>> 32 - i) + t | |
} | |
function o(e, t, a, o, n, i, r) { | |
var u = e + (t ^ a ^ o) + n + r; | |
return (u << i | u >>> 32 - i) + t | |
} | |
function n(e, t, a, o, n, i, r) { | |
var u = e + (a ^ (t | ~o)) + n + r; | |
return (u << i | u >>> 32 - i) + t | |
} | |
var i = CryptoJS, | |
r = i.lib, | |
u = r.WordArray, | |
s = r.Hasher, | |
c = i.algo, | |
l = []; | |
! function() { | |
for (var t = 0; 64 > t; t++) l[t] = 4294967296 * e.abs(e.sin(t + 1)) | 0 | |
}(); | |
var m = c.MD5 = s.extend({ | |
_doReset: function() { | |
this._hash = new u.init([1732584193, 4023233417, 2562383102, 271733878]) | |
}, | |
_doProcessBlock: function(e, i) { | |
for (var r = 0; 16 > r; r++) { | |
var u = i + r, | |
s = e[u]; | |
e[u] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8) | |
} | |
var c = this._hash.words, | |
m = e[i + 0], | |
p = e[i + 1], | |
h = e[i + 2], | |
d = e[i + 3], | |
g = e[i + 4], | |
f = e[i + 5], | |
k = e[i + 6], | |
y = e[i + 7], | |
j = e[i + 8], | |
v = e[i + 9], | |
b = e[i + 10], | |
w = e[i + 11], | |
_ = e[i + 12], | |
A = e[i + 13], | |
E = e[i + 14], | |
C = e[i + 15], | |
x = c[0], | |
F = c[1], | |
z = c[2], | |
D = c[3]; | |
x = t(x, F, z, D, m, 7, l[0]), D = t(D, x, F, z, p, 12, l[1]), z = t(z, D, x, F, h, 17, l[2]), F = t(F, z, D, x, d, 22, l[3]), x = t(x, F, z, D, g, 7, l[4]), D = t(D, x, F, z, f, 12, l[5]), z = t(z, D, x, F, k, 17, l[6]), F = t(F, z, D, x, y, 22, l[7]), x = t(x, F, z, D, j, 7, l[8]), D = t(D, x, F, z, v, 12, l[9]), z = t(z, D, x, F, b, 17, l[10]), F = t(F, z, D, x, w, 22, l[11]), x = t(x, F, z, D, _, 7, l[12]), D = t(D, x, F, z, A, 12, l[13]), z = t(z, D, x, F, E, 17, l[14]), F = t(F, z, D, x, C, 22, l[15]), x = a(x, F, z, D, p, 5, l[16]), D = a(D, x, F, z, k, 9, l[17]), z = a(z, D, x, F, w, 14, l[18]), F = a(F, z, D, x, m, 20, l[19]), x = a(x, F, z, D, f, 5, l[20]), D = a(D, x, F, z, b, 9, l[21]), z = a(z, D, x, F, C, 14, l[22]), F = a(F, z, D, x, g, 20, l[23]), x = a(x, F, z, D, v, 5, l[24]), D = a(D, x, F, z, E, 9, l[25]), z = a(z, D, x, F, d, 14, l[26]), F = a(F, z, D, x, j, 20, l[27]), x = a(x, F, z, D, A, 5, l[28]), D = a(D, x, F, z, h, 9, l[29]), z = a(z, D, x, F, y, 14, l[30]), F = a(F, z, D, x, _, 20, l[31]), x = o(x, F, z, D, f, 4, l[32]), D = o(D, x, F, z, j, 11, l[33]), z = o(z, D, x, F, w, 16, l[34]), F = o(F, z, D, x, E, 23, l[35]), x = o(x, F, z, D, p, 4, l[36]), D = o(D, x, F, z, g, 11, l[37]), z = o(z, D, x, F, y, 16, l[38]), F = o(F, z, D, x, b, 23, l[39]), x = o(x, F, z, D, A, 4, l[40]), D = o(D, x, F, z, m, 11, l[41]), z = o(z, D, x, F, d, 16, l[42]), F = o(F, z, D, x, k, 23, l[43]), x = o(x, F, z, D, v, 4, l[44]), D = o(D, x, F, z, _, 11, l[45]), z = o(z, D, x, F, C, 16, l[46]), F = o(F, z, D, x, h, 23, l[47]), x = n(x, F, z, D, m, 6, l[48]), D = n(D, x, F, z, y, 10, l[49]), z = n(z, D, x, F, E, 15, l[50]), F = n(F, z, D, x, f, 21, l[51]), x = n(x, F, z, D, _, 6, l[52]), D = n(D, x, F, z, d, 10, l[53]), z = n(z, D, x, F, b, 15, l[54]), F = n(F, z, D, x, p, 21, l[55]), x = n(x, F, z, D, j, 6, l[56]), D = n(D, x, F, z, C, 10, l[57]), z = n(z, D, x, F, k, 15, l[58]), F = n(F, z, D, x, A, 21, l[59]), x = n(x, F, z, D, g, 6, l[60]), D = n(D, x, F, z, w, 10, l[61]), z = n(z, D, x, F, h, 15, l[62]), F = n(F, z, D, x, v, 21, l[63]), c[0] = c[0] + x | 0, c[1] = c[1] + F | 0, c[2] = c[2] + z | 0, c[3] = c[3] + D | 0 | |
}, | |
_doFinalize: function() { | |
var t = this._data, | |
a = t.words, | |
o = 8 * this._nDataBytes, | |
n = 8 * t.sigBytes; | |
a[n >>> 5] |= 128 << 24 - n % 32; | |
var i = e.floor(o / 4294967296), | |
r = o; | |
a[(n + 64 >>> 9 << 4) + 15] = 16711935 & (i << 8 | i >>> 24) | 4278255360 & (i << 24 | i >>> 8), a[(n + 64 >>> 9 << 4) + 14] = 16711935 & (r << 8 | r >>> 24) | 4278255360 & (r << 24 | r >>> 8), t.sigBytes = 4 * (a.length + 1), this._process(); | |
for (var u = this._hash, s = u.words, c = 0; 4 > c; c++) { | |
var l = s[c]; | |
s[c] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8) | |
} | |
return u | |
}, | |
clone: function() { | |
var e = s.clone.call(this); | |
return e._hash = this._hash.clone(), e | |
} | |
}); | |
i.MD5 = s._createHelper(m), i.HmacMD5 = s._createHmacHelper(m) | |
}(Math) | |
}, {}], | |
87: [function(e, t, a) { | |
! function() { | |
var e = CryptoJS, | |
t = e.lib, | |
a = t.WordArray, | |
o = t.Hasher, | |
n = e.algo, | |
i = [], | |
r = n.SHA1 = o.extend({ | |
_doReset: function() { | |
this._hash = new a.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) | |
}, | |
_doProcessBlock: function(e, t) { | |
for (var a = this._hash.words, o = a[0], n = a[1], r = a[2], u = a[3], s = a[4], c = 0; 80 > c; c++) { | |
if (16 > c) i[c] = 0 | e[t + c]; | |
else { | |
var l = i[c - 3] ^ i[c - 8] ^ i[c - 14] ^ i[c - 16]; | |
i[c] = l << 1 | l >>> 31 | |
} | |
var m = (o << 5 | o >>> 27) + s + i[c]; | |
m += 20 > c ? (n & r | ~n & u) + 1518500249 : 40 > c ? (n ^ r ^ u) + 1859775393 : 60 > c ? (n & r | n & u | r & u) - 1894007588 : (n ^ r ^ u) - 899497514, s = u, u = r, r = n << 30 | n >>> 2, n = o, o = m | |
} | |
a[0] = a[0] + o | 0, a[1] = a[1] + n | 0, a[2] = a[2] + r | 0, a[3] = a[3] + u | 0, a[4] = a[4] + s | 0 | |
}, | |
_doFinalize: function() { | |
var e = this._data, | |
t = e.words, | |
a = 8 * this._nDataBytes, | |
o = 8 * e.sigBytes; | |
return t[o >>> 5] |= 128 << 24 - o % 32, t[(o + 64 >>> 9 << 4) + 14] = Math.floor(a / 4294967296), t[(o + 64 >>> 9 << 4) + 15] = a, e.sigBytes = 4 * t.length, this._process(), this._hash | |
}, | |
clone: function() { | |
var e = o.clone.call(this); | |
return e._hash = this._hash.clone(), e | |
} | |
}); | |
e.SHA1 = o._createHelper(r), e.HmacSHA1 = o._createHmacHelper(r) | |
}() | |
}, {}], | |
88: [function(e, t, a) { | |
! function(e) { | |
var t = CryptoJS, | |
a = t.lib, | |
o = a.WordArray, | |
n = a.Hasher, | |
i = t.algo, | |
r = [], | |
u = []; | |
! function() { | |
function t(t) { | |
for (var a = e.sqrt(t), o = 2; a >= o; o++) | |
if (!(t % o)) return !1; | |
return !0 | |
} | |
function a(e) { | |
return 4294967296 * (e - (0 | e)) | 0 | |
} | |
for (var o = 2, n = 0; 64 > n;) t(o) && (8 > n && (r[n] = a(e.pow(o, .5))), u[n] = a(e.pow(o, 1 / 3)), n++), o++ | |
}(); | |
var s = [], | |
c = i.SHA256 = n.extend({ | |
_doReset: function() { | |
this._hash = new o.init(r.slice(0)) | |
}, | |
_doProcessBlock: function(e, t) { | |
for (var a = this._hash.words, o = a[0], n = a[1], i = a[2], r = a[3], c = a[4], l = a[5], m = a[6], p = a[7], h = 0; 64 > h; h++) { | |
if (16 > h) s[h] = 0 | e[t + h]; | |
else { | |
var d = s[h - 15], | |
g = (d << 25 | d >>> 7) ^ (d << 14 | d >>> 18) ^ d >>> 3, | |
f = s[h - 2], | |
k = (f << 15 | f >>> 17) ^ (f << 13 | f >>> 19) ^ f >>> 10; | |
s[h] = g + s[h - 7] + k + s[h - 16] | |
} | |
var y = c & l ^ ~c & m, | |
j = o & n ^ o & i ^ n & i, | |
v = (o << 30 | o >>> 2) ^ (o << 19 | o >>> 13) ^ (o << 10 | o >>> 22), | |
b = (c << 26 | c >>> 6) ^ (c << 21 | c >>> 11) ^ (c << 7 | c >>> 25), | |
w = p + b + y + u[h] + s[h], | |
_ = v + j; | |
p = m, m = l, l = c, c = r + w | 0, r = i, i = n, n = o, o = w + _ | 0 | |
} | |
a[0] = a[0] + o | 0, a[1] = a[1] + n | 0, a[2] = a[2] + i | 0, a[3] = a[3] + r | 0, a[4] = a[4] + c | 0, a[5] = a[5] + l | 0, a[6] = a[6] + m | 0, a[7] = a[7] + p | 0 | |
}, | |
_doFinalize: function() { | |
var t = this._data, | |
a = t.words, | |
o = 8 * this._nDataBytes, | |
n = 8 * t.sigBytes; | |
return a[n >>> 5] |= 128 << 24 - n % 32, a[(n + 64 >>> 9 << 4) + 14] = e.floor(o / 4294967296), a[(n + 64 >>> 9 << 4) + 15] = o, t.sigBytes = 4 * a.length, this._process(), this._hash | |
}, | |
clone: function() { | |
var e = n.clone.call(this); | |
return e._hash = this._hash.clone(), e | |
} | |
}); | |
t.SHA256 = n._createHelper(c), t.HmacSHA256 = n._createHmacHelper(c) | |
}(Math) | |
}, {}], | |
89: [function(e, t, a) { | |
var o = o || function(e, t) { | |
var a = {}, | |
o = a.lib = {}, | |
n = o.Base = function() { | |
function e() {} | |
return { | |
extend: function(t) { | |
e.prototype = this; | |
var a = new e; | |
return t && a.mixIn(t), a.hasOwnProperty("init") || (a.init = function() { | |
a.$super.init.apply(this, arguments) | |
}), a.init.prototype = a, a.$super = this, a | |
}, | |
create: function() { | |
var e = this.extend(); | |
return e.init.apply(e, arguments), e | |
}, | |
init: function() {}, | |
mixIn: function(e) { | |
for (var t in e) e.hasOwnProperty(t) && (this[t] = e[t]); | |
e.hasOwnProperty("toString") && (this.toString = e.toString) | |
}, | |
clone: function() { | |
return this.init.prototype.extend(this) | |
} | |
} | |
}(), | |
i = o.WordArray = n.extend({ | |
init: function(e, a) { | |
e = this.words = e || [], a != t ? this.sigBytes = a : this.sigBytes = 4 * e.length | |
}, | |
toString: function(e) { | |
return (e || u).stringify(this) | |
}, | |
concat: function(e) { | |
var t = this.words, | |
a = e.words, | |
o = this.sigBytes, | |
n = e.sigBytes; | |
if (this.clamp(), o % 4) | |
for (var i = 0; n > i; i++) { | |
var r = a[i >>> 2] >>> 24 - i % 4 * 8 & 255; | |
t[o + i >>> 2] |= r << 24 - (o + i) % 4 * 8 | |
} else if (a.length > 65535) | |
for (var i = 0; n > i; i += 4) t[o + i >>> 2] = a[i >>> 2]; | |
else t.push.apply(t, a); | |
return this.sigBytes += n, this | |
}, | |
clamp: function() { | |
var t = this.words, | |
a = this.sigBytes; | |
t[a >>> 2] &= 4294967295 << 32 - a % 4 * 8, t.length = e.ceil(a / 4) | |
}, | |
clone: function() { | |
var e = n.clone.call(this); | |
return e.words = this.words.slice(0), e | |
}, | |
random: function(t) { | |
for (var a = [], o = 0; t > o; o += 4) a.push(4294967296 * e.random() | 0); | |
return new i.init(a, t) | |
} | |
}), | |
r = a.enc = {}, | |
u = r.Hex = { | |
stringify: function(e) { | |
for (var t = e.words, a = e.sigBytes, o = [], n = 0; a > n; n++) { | |
var i = t[n >>> 2] >>> 24 - n % 4 * 8 & 255; | |
o.push((i >>> 4).toString(16)), o.push((15 & i).toString(16)) | |
} | |
return o.join("") | |
}, | |
parse: function(e) { | |
for (var t = e.length, a = [], o = 0; t > o; o += 2) a[o >>> 3] |= parseInt(e.substr(o, 2), 16) << 24 - o % 8 * 4; | |
return new i.init(a, t / 2) | |
} | |
}, | |
s = r.Latin1 = { | |
stringify: function(e) { | |
for (var t = e.words, a = e.sigBytes, o = [], n = 0; a > n; n++) { | |
var i = t[n >>> 2] >>> 24 - n % 4 * 8 & 255; | |
o.push(String.fromCharCode(i)) | |
} | |
return o.join("") | |
}, | |
parse: function(e) { | |
for (var t = e.length, a = [], o = 0; t > o; o++) a[o >>> 2] |= (255 & e.charCodeAt(o)) << 24 - o % 4 * 8; | |
return new i.init(a, t) | |
} | |
}, | |
c = r.Utf8 = { | |
stringify: function(e) { | |
try { | |
return decodeURIComponent(escape(s.stringify(e))) | |
} catch (t) { | |
throw new Error("Malformed UTF-8 data") | |
} | |
}, | |
parse: function(e) { | |
return s.parse(unescape(encodeURIComponent(e))) | |
} | |
}, | |
l = o.BufferedBlockAlgorithm = n.extend({ | |
reset: function() { | |
this._data = new i.init, this._nDataBytes = 0 | |
}, | |
_append: function(e) { | |
"string" == typeof e && (e = c.parse(e)), this._data.concat(e), this._nDataBytes += e.sigBytes | |
}, | |
_process: function(t) { | |
var a = this._data, | |
o = a.words, | |
n = a.sigBytes, | |
r = this.blockSize, | |
u = 4 * r, | |
s = n / u; | |
s = t ? e.ceil(s) : e.max((0 | s) - this._minBufferSize, 0); | |
var c = s * r, | |
l = e.min(4 * c, n); | |
if (c) { | |
for (var m = 0; c > m; m += r) this._doProcessBlock(o, m); | |
var p = o.splice(0, c); | |
a.sigBytes -= l | |
} | |
return new i.init(p, l) | |
}, | |
clone: function() { | |
var e = n.clone.call(this); | |
return e._data = this._data.clone(), e | |
}, | |
_minBufferSize: 0 | |
}), | |
m = (o.Hasher = l.extend({ | |
cfg: n.extend(), | |
init: function(e) { | |
this.cfg = this.cfg.extend(e), this.reset() | |
}, | |
reset: function() { | |
l.reset.call(this), this._doReset() | |
}, | |
update: function(e) { | |
return this._append(e), this._process(), this | |
}, | |
finalize: function(e) { | |
e && this._append(e); | |
var t = this._doFinalize(); | |
return t | |
}, | |
blockSize: 16, | |
_createHelper: function(e) { | |
return function(t, a) { | |
return new e.init(a).finalize(t) | |
} | |
}, | |
_createHmacHelper: function(e) { | |
return function(t, a) { | |
return new m.HMAC.init(e, a).finalize(t) | |
} | |
} | |
}), a.algo = {}); | |
return a | |
}(Math); | |
t.exports = o | |
}, {}], | |
90: [function(e, t, a) { | |
(function(t) { | |
"use strict"; | |
function o() { | |
try { | |
var e = new Uint8Array(1); | |
return e.__proto__ = { | |
__proto__: Uint8Array.prototype, | |
foo: function() { | |
return 42 | |
} | |
}, 42 === e.foo() && "function" == typeof e.subarray && 0 === e.subarray(1, 1).byteLength | |
} catch (t) { | |
return !1 | |
} | |
} | |
function n() { | |
return r.TYPED_ARRAY_SUPPORT ? 2147483647 : 1073741823 | |
} | |
function i(e, t) { | |
if (n() < t) throw new RangeError("Invalid typed array length"); | |
return r.TYPED_ARRAY_SUPPORT ? (e = new Uint8Array(t), e.__proto__ = r.prototype) : (null === e && (e = new r(t)), e.length = t), e | |
} | |
function r(e, t, a) { | |
if (!(r.TYPED_ARRAY_SUPPORT || this instanceof r)) return new r(e, t, a); | |
if ("number" == typeof e) { | |
if ("string" == typeof t) throw new Error("If encoding is specified then the first argument must be a string"); | |
return l(this, e) | |
} | |
return u(this, e, t, a) | |
} | |
function u(e, t, a, o) { | |
if ("number" == typeof t) throw new TypeError('"value" argument must not be a number'); | |
return "undefined" != typeof ArrayBuffer && t instanceof ArrayBuffer ? h(e, t, a, o) : "string" == typeof t ? m(e, t, a) : d(e, t) | |
} | |
function s(e) { | |
if ("number" != typeof e) throw new TypeError('"size" argument must be a number'); | |
if (0 > e) throw new RangeError('"size" argument must not be negative') | |
} | |
function c(e, t, a, o) { | |
return s(t), 0 >= t ? i(e, t) : void 0 !== a ? "string" == typeof o ? i(e, t).fill(a, o) : i(e, t).fill(a) : i(e, t) | |
} | |
function l(e, t) { | |
if (s(t), e = i(e, 0 > t ? 0 : 0 | g(t)), !r.TYPED_ARRAY_SUPPORT) | |
for (var a = 0; t > a; ++a) e[a] = 0; | |
return e | |
} | |
function m(e, t, a) { | |
if (("string" != typeof a || "" === a) && (a = "utf8"), !r.isEncoding(a)) throw new TypeError('"encoding" must be a valid string encoding'); | |
var o = 0 | k(t, a); | |
e = i(e, o); | |
var n = e.write(t, a); | |
return n !== o && (e = e.slice(0, n)), e | |
} | |
function p(e, t) { | |
var a = t.length < 0 ? 0 : 0 | g(t.length); | |
e = i(e, a); | |
for (var o = 0; a > o; o += 1) e[o] = 255 & t[o]; | |
return e | |
} | |
function h(e, t, a, o) { | |
if (t.byteLength, 0 > a || t.byteLength < a) throw new RangeError("'offset' is out of bounds"); | |
if (t.byteLength < a + (o || 0)) throw new RangeError("'length' is out of bounds"); | |
return t = void 0 === a && void 0 === o ? new Uint8Array(t) : void 0 === o ? new Uint8Array(t, a) : new Uint8Array(t, a, o), r.TYPED_ARRAY_SUPPORT ? (e = t, e.__proto__ = r.prototype) : e = p(e, t), e | |
} | |
function d(e, t) { | |
if (r.isBuffer(t)) { | |
var a = 0 | g(t.length); | |
return e = i(e, a), 0 === e.length ? e : (t.copy(e, 0, 0, a), e) | |
} | |
if (t) { | |
if ("undefined" != typeof ArrayBuffer && t.buffer instanceof ArrayBuffer || "length" in t) return "number" != typeof t.length || X(t.length) ? i(e, 0) : p(e, t); | |
if ("Buffer" === t.type && Q(t.data)) return p(e, t.data) | |
} | |
throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.") | |
} | |
function g(e) { | |
if (e >= n()) throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + n().toString(16) + " bytes"); | |
return 0 | e | |
} | |
function f(e) { | |
return +e != e && (e = 0), r.alloc(+e) | |
} | |
function k(e, t) { | |
if (r.isBuffer(e)) return e.length; | |
if ("undefined" != typeof ArrayBuffer && "function" == typeof ArrayBuffer.isView && (ArrayBuffer.isView(e) || e instanceof ArrayBuffer)) return e.byteLength; | |
"string" != typeof e && (e = "" + e); | |
var a = e.length; | |
if (0 === a) return 0; | |
for (var o = !1;;) switch (t) { | |
case "ascii": | |
case "latin1": | |
case "binary": | |
return a; | |
case "utf8": | |
case "utf-8": | |
case void 0: | |
return W(e).length; | |
case "ucs2": | |
case "ucs-2": | |
case "utf16le": | |
case "utf-16le": | |
return 2 * a; | |
case "hex": | |
return a >>> 1; | |
case "base64": | |
return G(e).length; | |
default: | |
if (o) return W(e).length; | |
t = ("" + t).toLowerCase(), o = !0 | |
} | |
} | |
function y(e, t, a) { | |
var o = !1; | |
if ((void 0 === t || 0 > t) && (t = 0), t > this.length) return ""; | |
if ((void 0 === a || a > this.length) && (a = this.length), 0 >= a) return ""; | |
if (a >>>= 0, t >>>= 0, t >= a) return ""; | |
for (e || (e = "utf8");;) switch (e) { | |
case "hex": | |
return T(this, t, a); | |
case "utf8": | |
case "utf-8": | |
return z(this, t, a); | |
case "ascii": | |
return B(this, t, a); | |
case "latin1": | |
case "binary": | |
return S(this, t, a); | |
case "base64": | |
return F(this, t, a); | |
case "ucs2": | |
case "ucs-2": | |
case "utf16le": | |
case "utf-16le": | |
return P(this, t, a); | |
default: | |
if (o) throw new TypeError("Unknown encoding: " + e); | |
e = (e + "").toLowerCase(), o = !0 | |
} | |
} | |
function j(e, t, a) { | |
var o = e[t]; | |
e[t] = e[a], e[a] = o | |
} | |
function v(e, t, a, o, n) { | |
if (0 === e.length) return -1; | |
if ("string" == typeof a ? (o = a, a = 0) : a > 2147483647 ? a = 2147483647 : -2147483648 > a && (a = -2147483648), a = +a, isNaN(a) && (a = n ? 0 : e.length - 1), 0 > a && (a = e.length + a), a >= e.length) { | |
if (n) return -1; | |
a = e.length - 1 | |
} else if (0 > a) { | |
if (!n) return -1; | |
a = 0 | |
} | |
if ("string" == typeof t && (t = r.from(t, o)), r.isBuffer(t)) return 0 === t.length ? -1 : b(e, t, a, o, n); | |
if ("number" == typeof t) return t = 255 & t, r.TYPED_ARRAY_SUPPORT && "function" == typeof Uint8Array.prototype.indexOf ? n ? Uint8Array.prototype.indexOf.call(e, t, a) : Uint8Array.prototype.lastIndexOf.call(e, t, a) : b(e, [t], a, o, n); | |
throw new TypeError("val must be string, number or Buffer") | |
} | |
function b(e, t, a, o, n) { | |
function i(e, t) { | |
return 1 === r ? e[t] : e.readUInt16BE(t * r) | |
} | |
var r = 1, | |
u = e.length, | |
s = t.length; | |
if (void 0 !== o && (o = String(o).toLowerCase(), "ucs2" === o || "ucs-2" === o || "utf16le" === o || "utf-16le" === o)) { | |
if (e.length < 2 || t.length < 2) return -1; | |
r = 2, u /= 2, s /= 2, a /= 2 | |
} | |
var c; | |
if (n) { | |
var l = -1; | |
for (c = a; u > c; c++) | |
if (i(e, c) === i(t, -1 === l ? 0 : c - l)) { | |
if (-1 === l && (l = c), c - l + 1 === s) return l * r | |
} else -1 !== l && (c -= c - l), l = -1 | |
} else | |
for (a + s > u && (a = u - s), c = a; c >= 0; c--) { | |
for (var m = !0, p = 0; s > p; p++) | |
if (i(e, c + p) !== i(t, p)) { | |
m = !1; | |
break | |
} | |
if (m) return c | |
} | |
return -1 | |
} | |
function w(e, t, a, o) { | |
a = Number(a) || 0; | |
var n = e.length - a; | |
o ? (o = Number(o), o > n && (o = n)) : o = n; | |
var i = t.length; | |
if (i % 2 !== 0) throw new TypeError("Invalid hex string"); | |
o > i / 2 && (o = i / 2); | |
for (var r = 0; o > r; ++r) { | |
var u = parseInt(t.substr(2 * r, 2), 16); | |
if (isNaN(u)) return r; | |
e[a + r] = u | |
} | |
return r | |
} | |
function _(e, t, a, o) { | |
return J(W(t, e.length - a), e, a, o) | |
} | |
function A(e, t, a, o) { | |
return J(Y(t), e, a, o) | |
} | |
function E(e, t, a, o) { | |
return A(e, t, a, o) | |
} | |
function C(e, t, a, o) { | |
return J(G(t), e, a, o) | |
} | |
function x(e, t, a, o) { | |
return J(V(t, e.length - a), e, a, o) | |
} | |
function F(e, t, a) { | |
return 0 === t && a === e.length ? K.fromByteArray(e) : K.fromByteArray(e.slice(t, a)) | |
} | |
function z(e, t, a) { | |
a = Math.min(e.length, a); | |
for (var o = [], n = t; a > n;) { | |
var i = e[n], | |
r = null, | |
u = i > 239 ? 4 : i > 223 ? 3 : i > 191 ? 2 : 1; | |
if (a >= n + u) { | |
var s, c, l, m; | |
switch (u) { | |
case 1: | |
128 > i && (r = i); | |
break; | |
case 2: | |
s = e[n + 1], 128 === (192 & s) && (m = (31 & i) << 6 | 63 & s, m > 127 && (r = m)); | |
break; | |
case 3: | |
s = e[n + 1], c = e[n + 2], 128 === (192 & s) && 128 === (192 & c) && (m = (15 & i) << 12 | (63 & s) << 6 | 63 & c, m > 2047 && (55296 > m || m > 57343) && (r = m)); | |
break; | |
case 4: | |
s = e[n + 1], c = e[n + 2], l = e[n + 3], 128 === (192 & s) && 128 === (192 & c) && 128 === (192 & l) && (m = (15 & i) << 18 | (63 & s) << 12 | (63 & c) << 6 | 63 & l, | |
m > 65535 && 1114112 > m && (r = m)) | |
} | |
} | |
null === r ? (r = 65533, u = 1) : r > 65535 && (r -= 65536, o.push(r >>> 10 & 1023 | 55296), r = 56320 | 1023 & r), o.push(r), n += u | |
} | |
return D(o) | |
} | |
function D(e) { | |
var t = e.length; | |
if (ee >= t) return String.fromCharCode.apply(String, e); | |
for (var a = "", o = 0; t > o;) a += String.fromCharCode.apply(String, e.slice(o, o += ee)); | |
return a | |
} | |
function B(e, t, a) { | |
var o = ""; | |
a = Math.min(e.length, a); | |
for (var n = t; a > n; ++n) o += String.fromCharCode(127 & e[n]); | |
return o | |
} | |
function S(e, t, a) { | |
var o = ""; | |
a = Math.min(e.length, a); | |
for (var n = t; a > n; ++n) o += String.fromCharCode(e[n]); | |
return o | |
} | |
function T(e, t, a) { | |
var o = e.length; | |
(!t || 0 > t) && (t = 0), (!a || 0 > a || a > o) && (a = o); | |
for (var n = "", i = t; a > i; ++i) n += $(e[i]); | |
return n | |
} | |
function P(e, t, a) { | |
for (var o = e.slice(t, a), n = "", i = 0; i < o.length; i += 2) n += String.fromCharCode(o[i] + 256 * o[i + 1]); | |
return n | |
} | |
function R(e, t, a) { | |
if (e % 1 !== 0 || 0 > e) throw new RangeError("offset is not uint"); | |
if (e + t > a) throw new RangeError("Trying to access beyond buffer length") | |
} | |
function I(e, t, a, o, n, i) { | |
if (!r.isBuffer(e)) throw new TypeError('"buffer" argument must be a Buffer instance'); | |
if (t > n || i > t) throw new RangeError('"value" argument is out of bounds'); | |
if (a + o > e.length) throw new RangeError("Index out of range") | |
} | |
function N(e, t, a, o) { | |
0 > t && (t = 65535 + t + 1); | |
for (var n = 0, i = Math.min(e.length - a, 2); i > n; ++n) e[a + n] = (t & 255 << 8 * (o ? n : 1 - n)) >>> 8 * (o ? n : 1 - n) | |
} | |
function L(e, t, a, o) { | |
0 > t && (t = 4294967295 + t + 1); | |
for (var n = 0, i = Math.min(e.length - a, 4); i > n; ++n) e[a + n] = t >>> 8 * (o ? n : 3 - n) & 255 | |
} | |
function O(e, t, a, o, n, i) { | |
if (a + o > e.length) throw new RangeError("Index out of range"); | |
if (0 > a) throw new RangeError("Index out of range") | |
} | |
function M(e, t, a, o, n) { | |
return n || O(e, t, a, 4, 3.4028234663852886e38, -3.4028234663852886e38), Z.write(e, t, a, o, 23, 4), a + 4 | |
} | |
function q(e, t, a, o, n) { | |
return n || O(e, t, a, 8, 1.7976931348623157e308, -1.7976931348623157e308), Z.write(e, t, a, o, 52, 8), a + 8 | |
} | |
function U(e) { | |
if (e = H(e).replace(te, ""), e.length < 2) return ""; | |
for (; e.length % 4 !== 0;) e += "="; | |
return e | |
} | |
function H(e) { | |
return e.trim ? e.trim() : e.replace(/^\s+|\s+$/g, "") | |
} | |
function $(e) { | |
return 16 > e ? "0" + e.toString(16) : e.toString(16) | |
} | |
function W(e, t) { | |
t = t || 1 / 0; | |
for (var a, o = e.length, n = null, i = [], r = 0; o > r; ++r) { | |
if (a = e.charCodeAt(r), a > 55295 && 57344 > a) { | |
if (!n) { | |
if (a > 56319) { | |
(t -= 3) > -1 && i.push(239, 191, 189); | |
continue | |
} | |
if (r + 1 === o) { | |
(t -= 3) > -1 && i.push(239, 191, 189); | |
continue | |
} | |
n = a; | |
continue | |
} | |
if (56320 > a) { | |
(t -= 3) > -1 && i.push(239, 191, 189), n = a; | |
continue | |
} | |
a = (n - 55296 << 10 | a - 56320) + 65536 | |
} else n && (t -= 3) > -1 && i.push(239, 191, 189); | |
if (n = null, 128 > a) { | |
if ((t -= 1) < 0) break; | |
i.push(a) | |
} else if (2048 > a) { | |
if ((t -= 2) < 0) break; | |
i.push(a >> 6 | 192, 63 & a | 128) | |
} else if (65536 > a) { | |
if ((t -= 3) < 0) break; | |
i.push(a >> 12 | 224, a >> 6 & 63 | 128, 63 & a | 128) | |
} else { | |
if (!(1114112 > a)) throw new Error("Invalid code point"); | |
if ((t -= 4) < 0) break; | |
i.push(a >> 18 | 240, a >> 12 & 63 | 128, a >> 6 & 63 | 128, 63 & a | 128) | |
} | |
} | |
return i | |
} | |
function Y(e) { | |
for (var t = [], a = 0; a < e.length; ++a) t.push(255 & e.charCodeAt(a)); | |
return t | |
} | |
function V(e, t) { | |
for (var a, o, n, i = [], r = 0; r < e.length && !((t -= 2) < 0); ++r) a = e.charCodeAt(r), o = a >> 8, n = a % 256, i.push(n), i.push(o); | |
return i | |
} | |
function G(e) { | |
return K.toByteArray(U(e)) | |
} | |
function J(e, t, a, o) { | |
for (var n = 0; o > n && !(n + a >= t.length || n >= e.length); ++n) t[n + a] = e[n]; | |
return n | |
} | |
function X(e) { | |
return e !== e | |
} | |
var K = e("base64-js"), | |
Z = e("ieee754"), | |
Q = e("isarray"); | |
a.Buffer = r, a.SlowBuffer = f, a.INSPECT_MAX_BYTES = 50, r.TYPED_ARRAY_SUPPORT = void 0 !== t.TYPED_ARRAY_SUPPORT ? t.TYPED_ARRAY_SUPPORT : o(), a.kMaxLength = n(), r.poolSize = 8192, r._augment = function(e) { | |
return e.__proto__ = r.prototype, e | |
}, r.from = function(e, t, a) { | |
return u(null, e, t, a) | |
}, r.TYPED_ARRAY_SUPPORT && (r.prototype.__proto__ = Uint8Array.prototype, r.__proto__ = Uint8Array, "undefined" != typeof Symbol && Symbol.species && r[Symbol.species] === r && Object.defineProperty(r, Symbol.species, { | |
value: null, | |
configurable: !0 | |
})), r.alloc = function(e, t, a) { | |
return c(null, e, t, a) | |
}, r.allocUnsafe = function(e) { | |
return l(null, e) | |
}, r.allocUnsafeSlow = function(e) { | |
return l(null, e) | |
}, r.isBuffer = function(e) { | |
return !(null == e || !e._isBuffer) | |
}, r.compare = function(e, t) { | |
if (!r.isBuffer(e) || !r.isBuffer(t)) throw new TypeError("Arguments must be Buffers"); | |
if (e === t) return 0; | |
for (var a = e.length, o = t.length, n = 0, i = Math.min(a, o); i > n; ++n) | |
if (e[n] !== t[n]) { | |
a = e[n], o = t[n]; | |
break | |
} | |
return o > a ? -1 : a > o ? 1 : 0 | |
}, r.isEncoding = function(e) { | |
switch (String(e).toLowerCase()) { | |
case "hex": | |
case "utf8": | |
case "utf-8": | |
case "ascii": | |
case "latin1": | |
case "binary": | |
case "base64": | |
case "ucs2": | |
case "ucs-2": | |
case "utf16le": | |
case "utf-16le": | |
return !0; | |
default: | |
return !1 | |
} | |
}, r.concat = function(e, t) { | |
if (!Q(e)) throw new TypeError('"list" argument must be an Array of Buffers'); | |
if (0 === e.length) return r.alloc(0); | |
var a; | |
if (void 0 === t) | |
for (t = 0, a = 0; a < e.length; ++a) t += e[a].length; | |
var o = r.allocUnsafe(t), | |
n = 0; | |
for (a = 0; a < e.length; ++a) { | |
var i = e[a]; | |
if (!r.isBuffer(i)) throw new TypeError('"list" argument must be an Array of Buffers'); | |
i.copy(o, n), n += i.length | |
} | |
return o | |
}, r.byteLength = k, r.prototype._isBuffer = !0, r.prototype.swap16 = function() { | |
var e = this.length; | |
if (e % 2 !== 0) throw new RangeError("Buffer size must be a multiple of 16-bits"); | |
for (var t = 0; e > t; t += 2) j(this, t, t + 1); | |
return this | |
}, r.prototype.swap32 = function() { | |
var e = this.length; | |
if (e % 4 !== 0) throw new RangeError("Buffer size must be a multiple of 32-bits"); | |
for (var t = 0; e > t; t += 4) j(this, t, t + 3), j(this, t + 1, t + 2); | |
return this | |
}, r.prototype.swap64 = function() { | |
var e = this.length; | |
if (e % 8 !== 0) throw new RangeError("Buffer size must be a multiple of 64-bits"); | |
for (var t = 0; e > t; t += 8) j(this, t, t + 7), j(this, t + 1, t + 6), j(this, t + 2, t + 5), j(this, t + 3, t + 4); | |
return this | |
}, r.prototype.toString = function() { | |
var e = 0 | this.length; | |
return 0 === e ? "" : 0 === arguments.length ? z(this, 0, e) : y.apply(this, arguments) | |
}, r.prototype.equals = function(e) { | |
if (!r.isBuffer(e)) throw new TypeError("Argument must be a Buffer"); | |
return this === e ? !0 : 0 === r.compare(this, e) | |
}, r.prototype.inspect = function() { | |
var e = "", | |
t = a.INSPECT_MAX_BYTES; | |
return this.length > 0 && (e = this.toString("hex", 0, t).match(/.{2}/g).join(" "), this.length > t && (e += " ... ")), "<Buffer " + e + ">" | |
}, r.prototype.compare = function(e, t, a, o, n) { | |
if (!r.isBuffer(e)) throw new TypeError("Argument must be a Buffer"); | |
if (void 0 === t && (t = 0), void 0 === a && (a = e ? e.length : 0), void 0 === o && (o = 0), void 0 === n && (n = this.length), 0 > t || a > e.length || 0 > o || n > this.length) throw new RangeError("out of range index"); | |
if (o >= n && t >= a) return 0; | |
if (o >= n) return -1; | |
if (t >= a) return 1; | |
if (t >>>= 0, a >>>= 0, o >>>= 0, n >>>= 0, this === e) return 0; | |
for (var i = n - o, u = a - t, s = Math.min(i, u), c = this.slice(o, n), l = e.slice(t, a), m = 0; s > m; ++m) | |
if (c[m] !== l[m]) { | |
i = c[m], u = l[m]; | |
break | |
} | |
return u > i ? -1 : i > u ? 1 : 0 | |
}, r.prototype.includes = function(e, t, a) { | |
return -1 !== this.indexOf(e, t, a) | |
}, r.prototype.indexOf = function(e, t, a) { | |
return v(this, e, t, a, !0) | |
}, r.prototype.lastIndexOf = function(e, t, a) { | |
return v(this, e, t, a, !1) | |
}, r.prototype.write = function(e, t, a, o) { | |
if (void 0 === t) o = "utf8", a = this.length, t = 0; | |
else if (void 0 === a && "string" == typeof t) o = t, a = this.length, t = 0; | |
else { | |
if (!isFinite(t)) throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported"); | |
t = 0 | t, isFinite(a) ? (a = 0 | a, void 0 === o && (o = "utf8")) : (o = a, a = void 0) | |
} | |
var n = this.length - t; | |
if ((void 0 === a || a > n) && (a = n), e.length > 0 && (0 > a || 0 > t) || t > this.length) throw new RangeError("Attempt to write outside buffer bounds"); | |
o || (o = "utf8"); | |
for (var i = !1;;) switch (o) { | |
case "hex": | |
return w(this, e, t, a); | |
case "utf8": | |
case "utf-8": | |
return _(this, e, t, a); | |
case "ascii": | |
return A(this, e, t, a); | |
case "latin1": | |
case "binary": | |
return E(this, e, t, a); | |
case "base64": | |
return C(this, e, t, a); | |
case "ucs2": | |
case "ucs-2": | |
case "utf16le": | |
case "utf-16le": | |
return x(this, e, t, a); | |
default: | |
if (i) throw new TypeError("Unknown encoding: " + o); | |
o = ("" + o).toLowerCase(), i = !0 | |
} | |
}, r.prototype.toJSON = function() { | |
return { | |
type: "Buffer", | |
data: Array.prototype.slice.call(this._arr || this, 0) | |
} | |
}; | |
var ee = 4096; | |
r.prototype.slice = function(e, t) { | |
var a = this.length; | |
e = ~~e, t = void 0 === t ? a : ~~t, 0 > e ? (e += a, 0 > e && (e = 0)) : e > a && (e = a), 0 > t ? (t += a, 0 > t && (t = 0)) : t > a && (t = a), e > t && (t = e); | |
var o; | |
if (r.TYPED_ARRAY_SUPPORT) o = this.subarray(e, t), o.__proto__ = r.prototype; | |
else { | |
var n = t - e; | |
o = new r(n, void 0); | |
for (var i = 0; n > i; ++i) o[i] = this[i + e] | |
} | |
return o | |
}, r.prototype.readUIntLE = function(e, t, a) { | |
e = 0 | e, t = 0 | t, a || R(e, t, this.length); | |
for (var o = this[e], n = 1, i = 0; ++i < t && (n *= 256);) o += this[e + i] * n; | |
return o | |
}, r.prototype.readUIntBE = function(e, t, a) { | |
e = 0 | e, t = 0 | t, a || R(e, t, this.length); | |
for (var o = this[e + --t], n = 1; t > 0 && (n *= 256);) o += this[e + --t] * n; | |
return o | |
}, r.prototype.readUInt8 = function(e, t) { | |
return t || R(e, 1, this.length), this[e] | |
}, r.prototype.readUInt16LE = function(e, t) { | |
return t || R(e, 2, this.length), this[e] | this[e + 1] << 8 | |
}, r.prototype.readUInt16BE = function(e, t) { | |
return t || R(e, 2, this.length), this[e] << 8 | this[e + 1] | |
}, r.prototype.readUInt32LE = function(e, t) { | |
return t || R(e, 4, this.length), (this[e] | this[e + 1] << 8 | this[e + 2] << 16) + 16777216 * this[e + 3] | |
}, r.prototype.readUInt32BE = function(e, t) { | |
return t || R(e, 4, this.length), 16777216 * this[e] + (this[e + 1] << 16 | this[e + 2] << 8 | this[e + 3]) | |
}, r.prototype.readIntLE = function(e, t, a) { | |
e = 0 | e, t = 0 | t, a || R(e, t, this.length); | |
for (var o = this[e], n = 1, i = 0; ++i < t && (n *= 256);) o += this[e + i] * n; | |
return n *= 128, o >= n && (o -= Math.pow(2, 8 * t)), o | |
}, r.prototype.readIntBE = function(e, t, a) { | |
e = 0 | e, t = 0 | t, a || R(e, t, this.length); | |
for (var o = t, n = 1, i = this[e + --o]; o > 0 && (n *= 256);) i += this[e + --o] * n; | |
return n *= 128, i >= n && (i -= Math.pow(2, 8 * t)), i | |
}, r.prototype.readInt8 = function(e, t) { | |
return t || R(e, 1, this.length), 128 & this[e] ? -1 * (255 - this[e] + 1) : this[e] | |
}, r.prototype.readInt16LE = function(e, t) { | |
t || R(e, 2, this.length); | |
var a = this[e] | this[e + 1] << 8; | |
return 32768 & a ? 4294901760 | a : a | |
}, r.prototype.readInt16BE = function(e, t) { | |
t || R(e, 2, this.length); | |
var a = this[e + 1] | this[e] << 8; | |
return 32768 & a ? 4294901760 | a : a | |
}, r.prototype.readInt32LE = function(e, t) { | |
return t || R(e, 4, this.length), this[e] | this[e + 1] << 8 | this[e + 2] << 16 | this[e + 3] << 24 | |
}, r.prototype.readInt32BE = function(e, t) { | |
return t || R(e, 4, this.length), this[e] << 24 | this[e + 1] << 16 | this[e + 2] << 8 | this[e + 3] | |
}, r.prototype.readFloatLE = function(e, t) { | |
return t || R(e, 4, this.length), Z.read(this, e, !0, 23, 4) | |
}, r.prototype.readFloatBE = function(e, t) { | |
return t || R(e, 4, this.length), Z.read(this, e, !1, 23, 4) | |
}, r.prototype.readDoubleLE = function(e, t) { | |
return t || R(e, 8, this.length), Z.read(this, e, !0, 52, 8) | |
}, r.prototype.readDoubleBE = function(e, t) { | |
return t || R(e, 8, this.length), Z.read(this, e, !1, 52, 8) | |
}, r.prototype.writeUIntLE = function(e, t, a, o) { | |
if (e = +e, t = 0 | t, a = 0 | a, !o) { | |
var n = Math.pow(2, 8 * a) - 1; | |
I(this, e, t, a, n, 0) | |
} | |
var i = 1, | |
r = 0; | |
for (this[t] = 255 & e; ++r < a && (i *= 256);) this[t + r] = e / i & 255; | |
return t + a | |
}, r.prototype.writeUIntBE = function(e, t, a, o) { | |
if (e = +e, t = 0 | t, a = 0 | a, !o) { | |
var n = Math.pow(2, 8 * a) - 1; | |
I(this, e, t, a, n, 0) | |
} | |
var i = a - 1, | |
r = 1; | |
for (this[t + i] = 255 & e; --i >= 0 && (r *= 256);) this[t + i] = e / r & 255; | |
return t + a | |
}, r.prototype.writeUInt8 = function(e, t, a) { | |
return e = +e, t = 0 | t, a || I(this, e, t, 1, 255, 0), r.TYPED_ARRAY_SUPPORT || (e = Math.floor(e)), this[t] = 255 & e, t + 1 | |
}, r.prototype.writeUInt16LE = function(e, t, a) { | |
return e = +e, t = 0 | t, a || I(this, e, t, 2, 65535, 0), r.TYPED_ARRAY_SUPPORT ? (this[t] = 255 & e, this[t + 1] = e >>> 8) : N(this, e, t, !0), t + 2 | |
}, r.prototype.writeUInt16BE = function(e, t, a) { | |
return e = +e, t = 0 | t, a || I(this, e, t, 2, 65535, 0), r.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 8, this[t + 1] = 255 & e) : N(this, e, t, !1), t + 2 | |
}, r.prototype.writeUInt32LE = function(e, t, a) { | |
return e = +e, t = 0 | t, a || I(this, e, t, 4, 4294967295, 0), r.TYPED_ARRAY_SUPPORT ? (this[t + 3] = e >>> 24, this[t + 2] = e >>> 16, this[t + 1] = e >>> 8, this[t] = 255 & e) : L(this, e, t, !0), t + 4 | |
}, r.prototype.writeUInt32BE = function(e, t, a) { | |
return e = +e, t = 0 | t, a || I(this, e, t, 4, 4294967295, 0), r.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 24, this[t + 1] = e >>> 16, this[t + 2] = e >>> 8, this[t + 3] = 255 & e) : L(this, e, t, !1), t + 4 | |
}, r.prototype.writeIntLE = function(e, t, a, o) { | |
if (e = +e, t = 0 | t, !o) { | |
var n = Math.pow(2, 8 * a - 1); | |
I(this, e, t, a, n - 1, -n) | |
} | |
var i = 0, | |
r = 1, | |
u = 0; | |
for (this[t] = 255 & e; ++i < a && (r *= 256);) 0 > e && 0 === u && 0 !== this[t + i - 1] && (u = 1), this[t + i] = (e / r >> 0) - u & 255; | |
return t + a | |
}, r.prototype.writeIntBE = function(e, t, a, o) { | |
if (e = +e, t = 0 | t, !o) { | |
var n = Math.pow(2, 8 * a - 1); | |
I(this, e, t, a, n - 1, -n) | |
} | |
var i = a - 1, | |
r = 1, | |
u = 0; | |
for (this[t + i] = 255 & e; --i >= 0 && (r *= 256);) 0 > e && 0 === u && 0 !== this[t + i + 1] && (u = 1), this[t + i] = (e / r >> 0) - u & 255; | |
return t + a | |
}, r.prototype.writeInt8 = function(e, t, a) { | |
return e = +e, t = 0 | t, a || I(this, e, t, 1, 127, -128), r.TYPED_ARRAY_SUPPORT || (e = Math.floor(e)), 0 > e && (e = 255 + e + 1), this[t] = 255 & e, t + 1 | |
}, r.prototype.writeInt16LE = function(e, t, a) { | |
return e = +e, t = 0 | t, a || I(this, e, t, 2, 32767, -32768), r.TYPED_ARRAY_SUPPORT ? (this[t] = 255 & e, this[t + 1] = e >>> 8) : N(this, e, t, !0), t + 2 | |
}, r.prototype.writeInt16BE = function(e, t, a) { | |
return e = +e, t = 0 | t, a || I(this, e, t, 2, 32767, -32768), r.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 8, this[t + 1] = 255 & e) : N(this, e, t, !1), t + 2 | |
}, r.prototype.writeInt32LE = function(e, t, a) { | |
return e = +e, t = 0 | t, a || I(this, e, t, 4, 2147483647, -2147483648), r.TYPED_ARRAY_SUPPORT ? (this[t] = 255 & e, this[t + 1] = e >>> 8, this[t + 2] = e >>> 16, this[t + 3] = e >>> 24) : L(this, e, t, !0), t + 4 | |
}, r.prototype.writeInt32BE = function(e, t, a) { | |
return e = +e, t = 0 | t, a || I(this, e, t, 4, 2147483647, -2147483648), 0 > e && (e = 4294967295 + e + 1), r.TYPED_ARRAY_SUPPORT ? (this[t] = e >>> 24, this[t + 1] = e >>> 16, this[t + 2] = e >>> 8, this[t + 3] = 255 & e) : L(this, e, t, !1), t + 4 | |
}, r.prototype.writeFloatLE = function(e, t, a) { | |
return M(this, e, t, !0, a) | |
}, r.prototype.writeFloatBE = function(e, t, a) { | |
return M(this, e, t, !1, a) | |
}, r.prototype.writeDoubleLE = function(e, t, a) { | |
return q(this, e, t, !0, a) | |
}, r.prototype.writeDoubleBE = function(e, t, a) { | |
return q(this, e, t, !1, a) | |
}, r.prototype.copy = function(e, t, a, o) { | |
if (a || (a = 0), o || 0 === o || (o = this.length), t >= e.length && (t = e.length), t || (t = 0), o > 0 && a > o && (o = a), o === a) return 0; | |
if (0 === e.length || 0 === this.length) return 0; | |
if (0 > t) throw new RangeError("targetStart out of bounds"); | |
if (0 > a || a >= this.length) throw new RangeError("sourceStart out of bounds"); | |
if (0 > o) throw new RangeError("sourceEnd out of bounds"); | |
o > this.length && (o = this.length), e.length - t < o - a && (o = e.length - t + a); | |
var n, i = o - a; | |
if (this === e && t > a && o > t) | |
for (n = i - 1; n >= 0; --n) e[n + t] = this[n + a]; | |
else if (1e3 > i || !r.TYPED_ARRAY_SUPPORT) | |
for (n = 0; i > n; ++n) e[n + t] = this[n + a]; | |
else Uint8Array.prototype.set.call(e, this.subarray(a, a + i), t); | |
return i | |
}, r.prototype.fill = function(e, t, a, o) { | |
if ("string" == typeof e) { | |
if ("string" == typeof t ? (o = t, t = 0, a = this.length) : "string" == typeof a && (o = a, a = this.length), 1 === e.length) { | |
var n = e.charCodeAt(0); | |
256 > n && (e = n) | |
} | |
if (void 0 !== o && "string" != typeof o) throw new TypeError("encoding must be a string"); | |
if ("string" == typeof o && !r.isEncoding(o)) throw new TypeError("Unknown encoding: " + o) | |
} else "number" == typeof e && (e = 255 & e); | |
if (0 > t || this.length < t || this.length < a) throw new RangeError("Out of range index"); | |
if (t >= a) return this; | |
t >>>= 0, a = void 0 === a ? this.length : a >>> 0, e || (e = 0); | |
var i; | |
if ("number" == typeof e) | |
for (i = t; a > i; ++i) this[i] = e; | |
else { | |
var u = r.isBuffer(e) ? e : W(new r(e, o).toString()), | |
s = u.length; | |
for (i = 0; a - t > i; ++i) this[i + t] = u[i % s] | |
} | |
return this | |
}; | |
var te = /[^+\/0-9A-Za-z-_]/g | |
}).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}) | |
}, { | |
"base64-js": 79, | |
ieee754: 121, | |
isarray: 126 | |
}], | |
91: [function(e, t, a) { | |
var o = e("upper-case"), | |
n = e("sentence-case"); | |
t.exports = function(e, t, a) { | |
var i = n(e, t); | |
return a || (i = i.replace(/(\d) (?=\d)/g, "$1_")), i.replace(/ (.)/g, function(e, a) { | |
return o(a, t) | |
}) | |
} | |
}, { | |
"sentence-case": 151, | |
"upper-case": 176 | |
}], | |
92: [function(e, t, a) { | |
a.dot = a.dotCase = e("dot-case"), a.swap = a.swapCase = e("swap-case"), a.path = a.pathCase = e("path-case"), a.upper = a.upperCase = e("upper-case"), a.lower = a.lowerCase = e("lower-case"), a.camel = a.camelCase = e("camel-case"), a.snake = a.snakeCase = e("snake-case"), a.title = a.titleCase = e("title-case"), a.param = a.paramCase = e("param-case"), a.pascal = a.pascalCase = e("pascal-case"), a.constant = a.constantCase = e("constant-case"), a.sentence = a.sentenceCase = e("sentence-case"), a.isUpper = a.isUpperCase = e("is-upper-case"), a.isLower = a.isLowerCase = e("is-lower-case"), a.ucFirst = a.upperCaseFirst = e("upper-case-first"), a.lcFirst = a.lowerCaseFirst = e("lower-case-first") | |
}, { | |
"camel-case": 91, | |
"constant-case": 97, | |
"dot-case": 98, | |
"is-lower-case": 124, | |
"is-upper-case": 125, | |
"lower-case": 131, | |
"lower-case-first": 130, | |
"param-case": 138, | |
"pascal-case": 144, | |
"path-case": 145, | |
"sentence-case": 151, | |
"snake-case": 155, | |
"swap-case": 172, | |
"title-case": 173, | |
"upper-case": 176, | |
"upper-case-first": 175 | |
}], | |
93: [function(e, t, a) { | |
(function(e) { | |
var a = function() { | |
"use strict"; | |
function t(a, o, n, i, s) { | |
function m(a, n) { | |
if (null === a) return null; | |
if (0 === n) return a; | |
var g, f; | |
if ("object" != typeof a) return a; | |
if (a instanceof u) g = new u; | |
else if (a instanceof c) g = new c; | |
else if (a instanceof l) g = new l(function(e, t) { | |
a.then(function(t) { | |
e(m(t, n - 1)) | |
}, function(e) { | |
t(m(e, n - 1)) | |
}) | |
}); | |
else if (t.__isArray(a)) g = []; | |
else if (t.__isRegExp(a)) g = new RegExp(a.source, r(a)), a.lastIndex && (g.lastIndex = a.lastIndex); | |
else if (t.__isDate(a)) g = new Date(a.getTime()); | |
else { | |
if (d && e.isBuffer(a)) return g = new e(a.length), a.copy(g), g; | |
a instanceof Error ? g = Object.create(a) : "undefined" == typeof i ? (f = Object.getPrototypeOf(a), g = Object.create(f)) : (g = Object.create(i), f = i) | |
} | |
if (o) { | |
var k = p.indexOf(a); | |
if (-1 != k) return h[k]; | |
p.push(a), h.push(g) | |
} | |
if (a instanceof u) | |
for (var y = a.keys();;) { | |
var j = y.next(); | |
if (j.done) break; | |
var v = m(j.value, n - 1), | |
b = m(a.get(j.value), n - 1); | |
g.set(v, b) | |
} | |
if (a instanceof c) | |
for (var w = a.keys();;) { | |
var j = w.next(); | |
if (j.done) break; | |
var _ = m(j.value, n - 1); | |
g.add(_) | |
} | |
for (var A in a) { | |
var E; | |
f && (E = Object.getOwnPropertyDescriptor(f, A)), E && null == E.set || (g[A] = m(a[A], n - 1)) | |
} | |
if (Object.getOwnPropertySymbols) | |
for (var C = Object.getOwnPropertySymbols(a), A = 0; A < C.length; A++) { | |
var x = C[A], | |
F = Object.getOwnPropertyDescriptor(a, x); | |
(!F || F.enumerable || s) && (g[x] = m(a[x], n - 1), F.enumerable || Object.defineProperty(g, x, { | |
enumerable: !1 | |
})) | |
} | |
if (s) | |
for (var z = Object.getOwnPropertyNames(a), A = 0; A < z.length; A++) { | |
var D = z[A], | |
F = Object.getOwnPropertyDescriptor(a, D); | |
F && F.enumerable || (g[D] = m(a[D], n - 1), Object.defineProperty(g, D, { | |
enumerable: !1 | |
})) | |
} | |
return g | |
} | |
"object" == typeof o && (n = o.depth, i = o.prototype, s = o.includeNonEnumerable, o = o.circular); | |
var p = [], | |
h = [], | |
d = "undefined" != typeof e; | |
return "undefined" == typeof o && (o = !0), "undefined" == typeof n && (n = 1 / 0), m(a, n) | |
} | |
function a(e) { | |
return Object.prototype.toString.call(e) | |
} | |
function o(e) { | |
return "object" == typeof e && "[object Date]" === a(e) | |
} | |
function n(e) { | |
return "object" == typeof e && "[object Array]" === a(e) | |
} | |
function i(e) { | |
return "object" == typeof e && "[object RegExp]" === a(e) | |
} | |
function r(e) { | |
var t = ""; | |
return e.global && (t += "g"), e.ignoreCase && (t += "i"), e.multiline && (t += "m"), t | |
} | |
var u; | |
try { | |
u = Map | |
} catch (s) { | |
u = function() {} | |
} | |
var c; | |
try { | |
c = Set | |
} catch (s) { | |
c = function() {} | |
} | |
var l; | |
try { | |
l = Promise | |
} catch (s) { | |
l = function() {} | |
} | |
return t.clonePrototype = function(e) { | |
if (null === e) return null; | |
var t = function() {}; | |
return t.prototype = e, new t | |
}, t.__objToStr = a, t.__isDate = o, t.__isArray = n, t.__isRegExp = i, t.__getRegExpFlags = r, t | |
}(); | |
"object" == typeof t && t.exports && (t.exports = a) | |
}).call(this, e("buffer").Buffer) | |
}, { | |
buffer: 90 | |
}], | |
94: [function(e, t, a) { | |
var o = [].slice; | |
t.exports = function(e, t) { | |
if ("string" == typeof t && (t = e[t]), "function" != typeof t) throw new Error("bind() requires a function"); | |
var a = o.call(arguments, 2); | |
return function() { | |
return t.apply(e, a.concat(o.call(arguments))) | |
} | |
} | |
}, {}], | |
95: [function(e, t, a) { | |
function o(e) { | |
return e ? n(e) : void 0 | |
} | |
function n(e) { | |
for (var t in o.prototype) e[t] = o.prototype[t]; | |
return e | |
} | |
t.exports = o, o.prototype.on = o.prototype.addEventListener = function(e, t) { | |
return this._callbacks = this._callbacks || {}, (this._callbacks[e] = this._callbacks[e] || []).push(t), this | |
}, o.prototype.once = function(e, t) { | |
function a() { | |
o.off(e, a), t.apply(this, arguments) | |
} | |
var o = this; | |
return this._callbacks = this._callbacks || {}, a.fn = t, this.on(e, a), this | |
}, o.prototype.off = o.prototype.removeListener = o.prototype.removeAllListeners = o.prototype.removeEventListener = function(e, t) { | |
if (this._callbacks = this._callbacks || {}, 0 == arguments.length) return this._callbacks = {}, this; | |
var a = this._callbacks[e]; | |
if (!a) return this; | |
if (1 == arguments.length) return delete this._callbacks[e], this; | |
for (var o, n = 0; n < a.length; n++) | |
if (o = a[n], o === t || o.fn === t) { | |
a.splice(n, 1); | |
break | |
} | |
return this | |
}, o.prototype.emit = function(e) { | |
this._callbacks = this._callbacks || {}; | |
var t = [].slice.call(arguments, 1), | |
a = this._callbacks[e]; | |
if (a) { | |
a = a.slice(0); | |
for (var o = 0, n = a.length; n > o; ++o) a[o].apply(this, t) | |
} | |
return this | |
}, o.prototype.listeners = function(e) { | |
return this._callbacks = this._callbacks || {}, this._callbacks[e] || [] | |
}, o.prototype.hasListeners = function(e) { | |
return !!this.listeners(e).length | |
} | |
}, {}], | |
96: [function(e, t, a) { | |
t.exports = function(e, t) { | |
var a = function() {}; | |
a.prototype = t.prototype, e.prototype = new a, e.prototype.constructor = e | |
} | |
}, {}], | |
97: [function(e, t, a) { | |
var o = e("upper-case"), | |
n = e("snake-case"); | |
t.exports = function(e, t) { | |
return o(n(e, t), t) | |
} | |
}, { | |
"snake-case": 155, | |
"upper-case": 176 | |
}], | |
98: [function(e, t, a) { | |
var o = e("sentence-case"); | |
t.exports = function(e, t) { | |
return o(e, t, ".") | |
} | |
}, { | |
"sentence-case": 151 | |
}], | |
99: [function(e, t, a) { | |
t.exports = e("./lib/index") | |
}, { | |
"./lib/index": 100 | |
}], | |
100: [function(e, t, a) { | |
t.exports = e("./socket"), t.exports.parser = e("engine.io-parser") | |
}, { | |
"./socket": 101, | |
"engine.io-parser": 113 | |
}], | |
101: [function(e, t, a) { | |
(function(a) { | |
function o(e, t) { | |
if (!(this instanceof o)) return new o(e, t); | |
t = t || {}, e && "object" == typeof e && (t = e, e = null), e ? (e = l(e), t.hostname = e.host, t.secure = "https" === e.protocol || "wss" === e.protocol, t.port = e.port, e.query && (t.query = e.query)) : t.host && (t.hostname = l(t.host).host), this.secure = null != t.secure ? t.secure : a.location && "https:" === location.protocol, t.hostname && !t.port && (t.port = this.secure ? "443" : "80"), this.agent = t.agent || !1, this.hostname = t.hostname || (a.location ? location.hostname : "localhost"), this.port = t.port || (a.location && location.port ? location.port : this.secure ? 443 : 80), this.query = t.query || {}, "string" == typeof this.query && (this.query = p.decode(this.query)), this.upgrade = !1 !== t.upgrade, this.path = (t.path || "/engine.io").replace(/\/$/, "") + "/", this.forceJSONP = !!t.forceJSONP, this.jsonp = !1 !== t.jsonp, this.forceBase64 = !!t.forceBase64, this.enablesXDR = !!t.enablesXDR, this.timestampParam = t.timestampParam || "t", this.timestampRequests = t.timestampRequests, this.transports = t.transports || ["polling", "websocket"], this.readyState = "", this.writeBuffer = [], this.prevBufferLen = 0, this.policyPort = t.policyPort || 843, this.rememberUpgrade = t.rememberUpgrade || !1, this.binaryType = null, this.onlyBinaryUpgrades = t.onlyBinaryUpgrades, this.perMessageDeflate = !1 !== t.perMessageDeflate ? t.perMessageDeflate || {} : !1, !0 === this.perMessageDeflate && (this.perMessageDeflate = {}), this.perMessageDeflate && null == this.perMessageDeflate.threshold && (this.perMessageDeflate.threshold = 1024), this.pfx = t.pfx || null, this.key = t.key || null, this.passphrase = t.passphrase || null, this.cert = t.cert || null, this.ca = t.ca || null, this.ciphers = t.ciphers || null, this.rejectUnauthorized = void 0 === t.rejectUnauthorized ? null : t.rejectUnauthorized, this.forceNode = !!t.forceNode; | |
var n = "object" == typeof a && a; | |
n.global === n && (t.extraHeaders && Object.keys(t.extraHeaders).length > 0 && (this.extraHeaders = t.extraHeaders), t.localAddress && (this.localAddress = t.localAddress)), this.id = null, this.upgrades = null, this.pingInterval = null, this.pingTimeout = null, this.pingIntervalTimer = null, this.pingTimeoutTimer = null, this.open() | |
} | |
function n(e) { | |
var t = {}; | |
for (var a in e) e.hasOwnProperty(a) && (t[a] = e[a]); | |
return t | |
} | |
var i = e("./transports/index"), | |
r = e("component-emitter"), | |
u = e("debug")("engine.io-client:socket"), | |
s = e("indexof"), | |
c = e("engine.io-parser"), | |
l = e("parseuri"), | |
m = e("parsejson"), | |
p = e("parseqs"); | |
t.exports = o, o.priorWebsocketSuccess = !1, r(o.prototype), o.protocol = c.protocol, o.Socket = o, o.Transport = e("./transport"), o.transports = e("./transports/index"), o.parser = e("engine.io-parser"), o.prototype.createTransport = function(e) { | |
u('creating transport "%s"', e); | |
var t = n(this.query); | |
t.EIO = c.protocol, t.transport = e, this.id && (t.sid = this.id); | |
var a = new i[e]({ | |
agent: this.agent, | |
hostname: this.hostname, | |
port: this.port, | |
secure: this.secure, | |
path: this.path, | |
query: t, | |
forceJSONP: this.forceJSONP, | |
jsonp: this.jsonp, | |
forceBase64: this.forceBase64, | |
enablesXDR: this.enablesXDR, | |
timestampRequests: this.timestampRequests, | |
timestampParam: this.timestampParam, | |
policyPort: this.policyPort, | |
socket: this, | |
pfx: this.pfx, | |
key: this.key, | |
passphrase: this.passphrase, | |
cert: this.cert, | |
ca: this.ca, | |
ciphers: this.ciphers, | |
rejectUnauthorized: this.rejectUnauthorized, | |
perMessageDeflate: this.perMessageDeflate, | |
extraHeaders: this.extraHeaders, | |
forceNode: this.forceNode, | |
localAddress: this.localAddress | |
}); | |
return a | |
}, o.prototype.open = function() { | |
var e; | |
if (this.rememberUpgrade && o.priorWebsocketSuccess && -1 !== this.transports.indexOf("websocket")) e = "websocket"; | |
else { | |
if (0 === this.transports.length) { | |
var t = this; | |
return void setTimeout(function() { | |
t.emit("error", "No transports available") | |
}, 0) | |
} | |
e = this.transports[0] | |
} | |
this.readyState = "opening"; | |
try { | |
e = this.createTransport(e) | |
} catch (a) { | |
return this.transports.shift(), void this.open() | |
} | |
e.open(), this.setTransport(e) | |
}, o.prototype.setTransport = function(e) { | |
u("setting transport %s", e.name); | |
var t = this; | |
this.transport && (u("clearing existing transport %s", this.transport.name), this.transport.removeAllListeners()), this.transport = e, e.on("drain", function() { | |
t.onDrain() | |
}).on("packet", function(e) { | |
t.onPacket(e) | |
}).on("error", function(e) { | |
t.onError(e) | |
}).on("close", function() { | |
t.onClose("transport close") | |
}) | |
}, o.prototype.probe = function(e) { | |
function t() { | |
if (p.onlyBinaryUpgrades) { | |
var t = !this.supportsBinary && p.transport.supportsBinary; | |
m = m || t | |
} | |
m || (u('probe transport "%s" opened', e), l.send([{ | |
type: "ping", | |
data: "probe" | |
}]), l.once("packet", function(t) { | |
if (!m) | |
if ("pong" === t.type && "probe" === t.data) { | |
if (u('probe transport "%s" pong', e), p.upgrading = !0, p.emit("upgrading", l), !l) return; | |
o.priorWebsocketSuccess = "websocket" === l.name, u('pausing current transport "%s"', p.transport.name), p.transport.pause(function() { | |
m || "closed" !== p.readyState && (u("changing transport and sending upgrade packet"), c(), p.setTransport(l), l.send([{ | |
type: "upgrade" | |
}]), p.emit("upgrade", l), l = null, p.upgrading = !1, p.flush()) | |
}) | |
} else { | |
u('probe transport "%s" failed', e); | |
var a = new Error("probe error"); | |
a.transport = l.name, p.emit("upgradeError", a) | |
} | |
})) | |
} | |
function a() { | |
m || (m = !0, c(), l.close(), l = null) | |
} | |
function n(t) { | |
var o = new Error("probe error: " + t); | |
o.transport = l.name, a(), u('probe transport "%s" failed because of error: %s', e, t), p.emit("upgradeError", o) | |
} | |
function i() { | |
n("transport closed") | |
} | |
function r() { | |
n("socket closed") | |
} | |
function s(e) { | |
l && e.name !== l.name && (u('"%s" works - aborting "%s"', e.name, l.name), a()) | |
} | |
function c() { | |
l.removeListener("open", t), l.removeListener("error", n), l.removeListener("close", i), p.removeListener("close", r), p.removeListener("upgrading", s) | |
} | |
u('probing transport "%s"', e); | |
var l = this.createTransport(e, { | |
probe: 1 | |
}), | |
m = !1, | |
p = this; | |
o.priorWebsocketSuccess = !1, l.once("open", t), l.once("error", n), l.once("close", i), this.once("close", r), this.once("upgrading", s), l.open() | |
}, o.prototype.onOpen = function() { | |
if (u("socket open"), this.readyState = "open", o.priorWebsocketSuccess = "websocket" === this.transport.name, this.emit("open"), this.flush(), "open" === this.readyState && this.upgrade && this.transport.pause) { | |
u("starting upgrade probes"); | |
for (var e = 0, t = this.upgrades.length; t > e; e++) this.probe(this.upgrades[e]) | |
} | |
}, o.prototype.onPacket = function(e) { | |
if ("opening" === this.readyState || "open" === this.readyState || "closing" === this.readyState) switch (u('socket receive: type "%s", data "%s"', e.type, e.data), this.emit("packet", e), this.emit("heartbeat"), e.type) { | |
case "open": | |
this.onHandshake(m(e.data)); | |
break; | |
case "pong": | |
this.setPing(), this.emit("pong"); | |
break; | |
case "error": | |
var t = new Error("server error"); | |
t.code = e.data, this.onError(t); | |
break; | |
case "message": | |
this.emit("data", e.data), this.emit("message", e.data) | |
} else u('packet received with socket readyState "%s"', this.readyState) | |
}, o.prototype.onHandshake = function(e) { | |
this.emit("handshake", e), this.id = e.sid, this.transport.query.sid = e.sid, this.upgrades = this.filterUpgrades(e.upgrades), this.pingInterval = e.pingInterval, this.pingTimeout = e.pingTimeout, this.onOpen(), "closed" !== this.readyState && (this.setPing(), this.removeListener("heartbeat", this.onHeartbeat), this.on("heartbeat", this.onHeartbeat)) | |
}, o.prototype.onHeartbeat = function(e) { | |
clearTimeout(this.pingTimeoutTimer); | |
var t = this; | |
t.pingTimeoutTimer = setTimeout(function() { | |
"closed" !== t.readyState && t.onClose("ping timeout") | |
}, e || t.pingInterval + t.pingTimeout) | |
}, o.prototype.setPing = function() { | |
var e = this; | |
clearTimeout(e.pingIntervalTimer), e.pingIntervalTimer = setTimeout(function() { | |
u("writing ping packet - expecting pong within %sms", e.pingTimeout), e.ping(), e.onHeartbeat(e.pingTimeout) | |
}, e.pingInterval) | |
}, o.prototype.ping = function() { | |
var e = this; | |
this.sendPacket("ping", function() { | |
e.emit("ping") | |
}) | |
}, o.prototype.onDrain = function() { | |
this.writeBuffer.splice(0, this.prevBufferLen), this.prevBufferLen = 0, 0 === this.writeBuffer.length ? this.emit("drain") : this.flush() | |
}, o.prototype.flush = function() { | |
"closed" !== this.readyState && this.transport.writable && !this.upgrading && this.writeBuffer.length && (u("flushing %d packets in socket", this.writeBuffer.length), this.transport.send(this.writeBuffer), this.prevBufferLen = this.writeBuffer.length, this.emit("flush")) | |
}, o.prototype.write = o.prototype.send = function(e, t, a) { | |
return this.sendPacket("message", e, t, a), this | |
}, o.prototype.sendPacket = function(e, t, a, o) { | |
if ("function" == typeof t && (o = t, t = void 0), "function" == typeof a && (o = a, a = null), "closing" !== this.readyState && "closed" !== this.readyState) { | |
a = a || {}, a.compress = !1 !== a.compress; | |
var n = { | |
type: e, | |
data: t, | |
options: a | |
}; | |
this.emit("packetCreate", n), this.writeBuffer.push(n), o && this.once("flush", o), this.flush() | |
} | |
}, o.prototype.close = function() { | |
function e() { | |
o.onClose("forced close"), u("socket closing - telling transport to close"), o.transport.close() | |
} | |
function t() { | |
o.removeListener("upgrade", t), o.removeListener("upgradeError", t), e() | |
} | |
function a() { | |
o.once("upgrade", t), o.once("upgradeError", t) | |
} | |
if ("opening" === this.readyState || "open" === this.readyState) { | |
this.readyState = "closing"; | |
var o = this; | |
this.writeBuffer.length ? this.once("drain", function() { | |
this.upgrading ? a() : e() | |
}) : this.upgrading ? a() : e() | |
} | |
return this | |
}, o.prototype.onError = function(e) { | |
u("socket error %j", e), o.priorWebsocketSuccess = !1, this.emit("error", e), this.onClose("transport error", e) | |
}, o.prototype.onClose = function(e, t) { | |
if ("opening" === this.readyState || "open" === this.readyState || "closing" === this.readyState) { | |
u('socket close with reason: "%s"', e); | |
var a = this; | |
clearTimeout(this.pingIntervalTimer), clearTimeout(this.pingTimeoutTimer), this.transport.removeAllListeners("close"), this.transport.close(), this.transport.removeAllListeners(), this.readyState = "closed", this.id = null, this.emit("close", e, t), a.writeBuffer = [], a.prevBufferLen = 0 | |
} | |
}, o.prototype.filterUpgrades = function(e) { | |
for (var t = [], a = 0, o = e.length; o > a; a++) ~s(this.transports, e[a]) && t.push(e[a]); | |
return t | |
} | |
}).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {}) | |
}, { | |
"./transport": 102, | |
"./transports/index": 103, | |
"component-emitter": 109, | |
debug: 110, | |
"engine.io-parser": 113, | |
indexof: 122, | |
parsejson: 141, | |
parseqs: 142, | |
parseuri: 143 | |
}], | |
102: [function(e, t, a) { | |
function o(e) { | |
this.path = e.path, this.hostname = e.hostname, this.port = e.port, this.secure = e.secure, this.query = e.query, this.timestampParam = e.timestampParam, this.timestampRequests = e.timestampRequests, this.readyState = "", this.agent = e.agent || !1, this.socket = e.socket, this.enablesXDR = e.enablesXDR, this.pfx = e.pfx, this.key = e.key, this.passphrase = e.passphrase, this.cert = e.cert, this.ca = e.ca, this.ciphers = e.ciphers, this.rejectUnauthorized = e.rejectUnauthorized, this.forceNode = e.forceNode, this.extraHeaders = e.extraHeaders, this.localAddress = e.localAddress | |
} | |
var n = e("engine.io-parser"), | |
i = e("component-emitter"); | |
t.exports = o, i(o.prototype), o.prototype.onError = function(e, t) { | |
var a = new Error(e); | |
return a.type = "TransportError", a.description = t, this.emit("error", a), this | |
}, o.prototype.open = function() { | |
return ("closed" === this.readyState || "" === this.readyState) && (this.readyState = "opening", this.doOpen()), this | |
}, o.prototype.close = function() { | |
return ("opening" === this.readyState || "open" === this.readyState) && (this.doClose(), this.onClose()), this | |
}, o.prototype.send = function(e) { | |
if ("open" !== this.readyState) throw new Error("Transport not open"); | |
this.write(e) | |
}, o.prototype.onOpen = function() { | |
this.readyState = "open", this.writable = !0, this.emit("open") | |
}, o.prototype.onData = function(e) { | |
var t = n.decodePacket(e, this.socket.binaryType); | |
this.onPacket(t) | |
}, o.prototype.onPacket = function(e) { | |
this.emit("packet", e) | |
}, o.prototype.onClose = function() { | |
this.readyState = "closed", this.emit("close") | |
} | |
}, { | |
"component-emitter": 109, | |
"engine.io-parser": 113 | |
}], | |
103: [function(e, t, a) { | |
(function(t) { | |
function o(e) { | |
var a, o = !1, | |
u = !1, | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment