forked from zjcqoo/zjcqoo.github.io
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathx.js
267 lines (221 loc) · 153 KB
/
x.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = "./src/index.js");
/******/ })
/************************************************************************/
/******/ ({
/***/ "./src/cookie.js":
/*!***********************!*\
!*** ./src/cookie.js ***!
\***********************/
/*! exports provided: parse, set, concat */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parse\", function() { return parse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"set\", function() { return set; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"concat\", function() { return concat; });\n/* harmony import */ var _tld_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tld.js */ \"./src/tld.js\");\n\n\nconst assign = Object.assign\nconst now = Date.now\nconst parseDate = Date.parse\nconst _isNaN = isNaN\n\n\nfunction Cookie() {\n this.name = ''\n this.value = ''\n this.domain = ''\n this.hostOnly = false\n this.path = ''\n this.expires = NaN\n this.isExpired = false\n this.secure = false\n this.httpOnly = false\n this.sameSite = ''\n}\n\nfunction pathToFolder(path) {\n return path.replace(/[^/]+$/, '')\n}\n\n\n/**\n * @param {string} cookiePath \n * @param {string} urlPath \n */\nfunction isSubPath(cookiePath, urlPath) {\n return urlPath.startsWith(cookiePath)\n}\n\n\n/**\n * @param {string} cookieDomain \n * @param {string} urlDomain \n */\nfunction isSubDomain(cookieDomain, urlDomain) {\n return urlDomain === cookieDomain ||\n urlDomain.endsWith('.' + cookieDomain)\n}\n\n\n/**\n * @param {Cookie} item \n * @param {number} tick\n */\nfunction isExpired(item, tick) {\n const v = item.expires\n return !_isNaN(v) && v < tick\n}\n\n\nclass CookieDomainNode {\n constructor() {\n /** @type {Cookie[]} */\n this.items = null\n\n /** @type {Object<string, CookieDomainNode>} */\n this.children = {}\n }\n\n /**\n * @param {string} cookie \n */\n nextChild(name) {\n return this.children[name] || (\n this.children[name] = new CookieDomainNode\n )\n }\n\n /**\n * @param {string} cookie \n */\n getChild(name) {\n return this.children[name]\n }\n\n /**\n * @param {Cookie} cookie \n */\n addCookie(cookie) {\n if (this.items) {\n this.items.push(cookie)\n } else {\n this.items = [cookie]\n }\n }\n}\n\n/** @type {Map<string, Cookie>} */\nconst idCookieMap = new Map()\n\nconst root = new CookieDomainNode()\n\n\n/**\n * @param {string} str \n * @param {URL} urlObj \n */\nfunction parse(str, urlObj) {\n const item = new Cookie()\n const arr = str.split(';')\n\n for (let i = 0; i < arr.length; i++) {\n let key, val\n const s = arr[i].trim()\n const p = s.indexOf('=')\n\n if (p !== -1) {\n key = s.substr(0, p)\n val = s.substr(p + 1)\n } else {\n //\n // cookie = 's; secure; httponly'\n // 0: { key: '', val: 's' }\n // 1: { key: 'secure', val: '' }\n // 2: { key: 'httponly', val: '' }\n //\n key = (i === 0) ? '' : s\n val = (i === 0) ? s : ''\n }\n\n if (i === 0) {\n item.name = key\n item.value = val\n continue\n }\n\n switch (key.toLocaleLowerCase()) {\n case 'expires':\n if (_isNaN(item.expires)) {\n item.expires = parseDate(val)\n }\n break\n case 'domain':\n if (val[0] === '.') {\n val = val.substr(1)\n }\n item.domain = val\n break\n case 'path':\n if (!val.endsWith('/')) {\n val += '/'\n }\n item.path = val\n break\n case 'httponly':\n item.httpOnly = true\n break\n case 'secure':\n item.secure = true\n break\n case 'max-age':\n item.expires = now() + val * 1000\n break\n case 'samesite':\n item.sameSite = val\n break\n }\n }\n\n const tick = now()\n if (isExpired(item, tick)) {\n item.isExpired = true\n }\n\n // https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Set-Cookie\n if (item.name.startsWith('__Secure-')) {\n if (!(\n urlObj.protocol === 'https:' &&\n item.secure\n )) {\n return\n }\n }\n if (item.name.startsWith('__Host-')) {\n if (!(\n urlObj.protocol === 'https:' &&\n item.secure &&\n item.domain === '' &&\n item.path === '/'\n )) {\n return\n }\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#Compatibility_notes\n if (item.secure && urlObj.protocol === 'http:') {\n return\n }\n\n // check hostname\n const domain = urlObj.hostname\n// todo:tld\n if (item.domain) {\n if (!isSubDomain(item.domain, domain)) {\n console.warn('[jsproxy] invalid cookie domain! `%s` ⊄ `%s`',\n item.domain, domain)\n return\n }\n } else {\n item.domain = domain\n item.hostOnly = true\n }\n\n // check pathname\n const path = pathToFolder(urlObj.pathname)\n\n if (item.path) {\n if (!isSubPath(item.path, path)) {\n console.warn('[jsproxy] invalid cookie path! `%s` ⊄ `%s`',\n item.path, path)\n return\n }\n } else {\n item.path = path\n }\n\n set(item)\n\n return item\n}\n\n\n/**\n * @param {Cookie} item\n */\nfunction getCookieId(item) {\n return (item.secure ? ';' : '') +\n item.name + ';' + \n item.domain +\n item.path\n}\n\n\n/**\n * @param {Cookie} item\n */\nfunction set(item) {\n // console.log('set:', item)\n const id = getCookieId(item)\n const matched = idCookieMap.get(id)\n\n if (matched) {\n if (item.isExpired) {\n // delete\n idCookieMap.delete(id)\n } else {\n // update\n assign(matched, item)\n }\n } else {\n // create\n const labels = item.domain.split('.')\n let labelPos = labels.length\n let node = root\n do {\n node = node.nextChild(labels[--labelPos])\n } while (labelPos !== 0)\n \n node.addCookie(item)\n idCookieMap.set(id, item)\n }\n}\n\n\n/**\n * @param {URL} urlObj \n */\nfunction concat(urlObj) {\n const ret = []\n const tick = now()\n const domain = urlObj.hostname\n const path = pathToFolder(urlObj.pathname)\n const insecure = (urlObj.protocol !== 'https:')\n\n\n const labels = domain.split('.')\n let labelPos = labels.length\n let node = root\n do {\n node = node.getChild(labels[--labelPos])\n if (!node) {\n break\n }\n const items = node.items\n items && items.forEach(item => {\n // https url | secure flag | carry\n // ✔ | ✔ | ✔\n // ✔ | ✘ | ✔\n // ✘ | ✘ | ✔\n // ✘ | ✔ | ✘\n if (insecure && item.secure) {\n return\n }\n // HostOnly Cookie 需匹配完整域名\n if (item.hostOnly && labelPos !== 0) {\n return\n }\n if (!isSubPath(item.path, path)) {\n return\n }\n if (isExpired(item, tick)) {\n item.isExpired = true\n return\n }\n // TODO: same site\n ret.push(item.name + '=' + item.value)\n })\n } while (labelPos !== 0)\n\n return ret.join('; ')\n}\n\n\n//# sourceURL=webpack:///./src/cookie.js?");
/***/ }),
/***/ "./src/fakeloc.js":
/*!************************!*\
!*** ./src/fakeloc.js ***!
\************************/
/*! exports provided: createFakeLoc */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createFakeLoc\", function() { return createFakeLoc; });\n/* harmony import */ var _urlx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./urlx */ \"./src/urlx.js\");\n\n\nconst {\n defineProperty\n} = Reflect\n\n\nfunction setup(obj, fakeLoc) {\n defineProperty(obj, '__location', {\n get() {\n return fakeLoc\n },\n set(val) {\n console.log('[jsproxy] %s set location: %s', obj, val)\n fakeLoc.href = val\n }\n })\n}\n\nfunction checkUnload() {\n // TODO:\n}\n\n/**\n * @param {Window} win\n * @param {URL} vPageUrlObj\n * @param {URL} vBaseUrlObj\n */\nfunction createFakeLoc(win, vPageUrlObj, vBaseUrlObj) {\n const loc = win.location\n let ancestorOrigins\n\n // TODO: iframe 场合下存在问题\n // 比如 youtube 首页缺少这个判断会报错\n // if (loc.href === 'about:blank') {\n // loc = win.top.location\n // }\n\n const fakeLoc = Object.setPrototypeOf({\n get href() {\n // console.log('[jsproxy] get location.href')\n return vPageUrlObj.href\n },\n\n get protocol() {\n return vPageUrlObj.protocol\n },\n\n get host() {\n return vPageUrlObj.host\n },\n\n get hostname() {\n return vPageUrlObj.hostname\n },\n\n get port() {\n return vPageUrlObj.port\n },\n\n get pathname() {\n return vPageUrlObj.pathname\n },\n\n get search() {\n return loc.search\n },\n\n get hash() {\n return loc.hash\n },\n\n get origin() {\n // console.log('[jsproxy] get location.origin')\n return vPageUrlObj.origin\n },\n\n get ancestorOrigins() {\n if (!ancestorOrigins) {\n // TODO: DOMStringList[]\n ancestorOrigins = []\n\n let p = win\n while ((p = p.parent) !== top) {\n const vUrlStr = _urlx__WEBPACK_IMPORTED_MODULE_0__[\"decUrlObj\"](p.location)\n const vOriStr = new URL(vUrlStr).origin\n ancestorOrigins.unshift(vOriStr)\n }\n }\n return ancestorOrigins\n },\n\n set href(val) {\n console.log('[jsproxy] set location.href:', val)\n loc.href = _urlx__WEBPACK_IMPORTED_MODULE_0__[\"encUrlStr\"](val, vBaseUrlObj)\n checkUnload()\n },\n\n set protocol(val) {\n vPageUrlObj.protocol = val\n loc.href = _urlx__WEBPACK_IMPORTED_MODULE_0__[\"encUrlObj\"](vPageUrlObj)\n },\n\n set host(val) {\n console.log('[jsproxy] set location.host:', val)\n vPageUrlObj.host = val\n loc.href = _urlx__WEBPACK_IMPORTED_MODULE_0__[\"encUrlObj\"](vPageUrlObj)\n },\n\n set hostname(val) {\n console.log('[jsproxy] set location.hostname:', val)\n vPageUrlObj.hostname = val\n loc.href = _urlx__WEBPACK_IMPORTED_MODULE_0__[\"encUrlObj\"](vPageUrlObj)\n },\n\n set port(val) {\n console.log('[jsproxy] set location.port:', val)\n vPageUrlObj.port = val\n loc.href = _urlx__WEBPACK_IMPORTED_MODULE_0__[\"encUrlObj\"](vPageUrlObj)\n },\n\n set pathname(val) {\n console.log('[jsproxy] set location.pathname:', val)\n vPageUrlObj.pathname = val\n loc.href = _urlx__WEBPACK_IMPORTED_MODULE_0__[\"encUrlObj\"](vPageUrlObj)\n },\n\n set search(val) {\n vPageUrlObj.search = val\n loc.search = val\n },\n\n set hash(val) {\n vPageUrlObj.hash = val\n loc.hash = val\n },\n\n reload() {\n console.warn('[jsproxy] location.reload')\n loc.reload(...arguments)\n },\n\n replace(val) {\n if (val) {\n console.warn('[jsproxy] location.replace:', val)\n arguments[0] = _urlx__WEBPACK_IMPORTED_MODULE_0__[\"encUrlStr\"](val, vBaseUrlObj)\n }\n loc.replace(...arguments)\n checkUnload()\n },\n\n assign(val) {\n if (val) {\n console.warn('[jsproxy] location.assign:', val)\n arguments[0] = _urlx__WEBPACK_IMPORTED_MODULE_0__[\"encUrlStr\"](val, vBaseUrlObj)\n }\n loc.assign(...arguments)\n checkUnload()\n },\n\n toString() {\n const val = loc.toString(...arguments)\n return _urlx__WEBPACK_IMPORTED_MODULE_0__[\"decUrlStr\"](val)\n },\n\n toLocaleString() {\n const val = loc.toLocaleString(...arguments)\n return _urlx__WEBPACK_IMPORTED_MODULE_0__[\"decUrlStr\"](val)\n },\n }, loc.constructor.prototype)\n\n\n setup(win, fakeLoc)\n setup(win.document, fakeLoc)\n}\n\n\n//# sourceURL=webpack:///./src/fakeloc.js?");
/***/ }),
/***/ "./src/hook.js":
/*!*********************!*\
!*** ./src/hook.js ***!
\*********************/
/*! exports provided: DROP, createHook */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DROP\", function() { return DROP; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createHook\", function() { return createHook; });\nconst DROP = {}\n\nconst {\n apply,\n getOwnPropertyDescriptor,\n defineProperty,\n} = Reflect\n\n\n\n/**\n * @param {Window} win \n */\nfunction createHook(win) {\n /**\n * hook function\n * \n * @param {object} obj \n * @param {string} key \n * @param {(oldFn: Function) => Function} factory\n */\n function func(obj, key, factory) {\n /** @type {Function} */\n const oldFn = obj[key]\n if (!oldFn) {\n return false\n }\n\n const newFn = factory(oldFn)\n\n Object.keys(oldFn).forEach(k => {\n newFn[k] = oldFn[k]\n })\n\n const proto = oldFn.prototype\n if (proto) {\n newFn.prototype = proto\n }\n\n obj[key] = newFn\n return true\n }\n\n /**\n * hook property\n * \n * @param {object} obj \n * @param {string} key \n * @param {(oldFn: () => any) => Function} g \n * @param {(oldFn: () => void) => Function} s \n */\n function prop(obj, key, g, s) {\n const desc = getOwnPropertyDescriptor(obj, key)\n if (!desc) {\n return false\n }\n if (g) {\n func(desc, 'get', g)\n }\n if (s) {\n func(desc, 'set', s)\n }\n defineProperty(obj, key, desc)\n return true\n }\n\n\n /**\n * @param {object} proto \n * @param {string} name \n * @param {Function} onget \n * @param {Function} onset \n */\n function hookElemProp(proto, name, onget, onset) {\n prop(proto, name,\n getter => function() {\n const val = getter.call(this)\n return onget.call(this, val)\n },\n setter => function(val) {\n val = onset.call(this, val)\n if (val === DROP) {\n return\n }\n setter.call(this, val)\n }\n )\n }\n\n const elemProto = win.Element.prototype\n const rawGetAttr = elemProto.getAttribute\n const rawSetAttr = elemProto.setAttribute\n\n const tagAttrHandlersMap = {}\n const tagTextHandlerMap = {}\n const tagKeySetMap = {}\n const tagKeyGetMap = {}\n\n /**\n * @param {string} tag \n * @param {object} proto \n * @param {...any} handlers \n */\n function attr(tag, proto, ...handlers) {\n /** @type {boolean} */\n let hasBind\n\n /** @type {boolean} */\n let hasAttr\n \n let keySetMap\n let keyGetMap\n\n \n handlers.forEach(v => {\n // 带划线的 attr 属性名,转换成驼峰形式的 prop 属性名。\n // 例如 `http-equiv` -> `httpEquiv`\n const prop = v.name.replace(/-(\\w)/g,\n (_, char) => char.toUpperCase()\n )\n hookElemProp(proto, prop, v.onget, v.onset)\n\n // #text\n if (prop === 'innerText') {\n tagTextHandlerMap[tag] = v\n return\n }\n\n // attribute\n if (tagAttrHandlersMap[tag]) {\n tagAttrHandlersMap[tag].push(v)\n hasBind = true\n } else {\n tagAttrHandlersMap[tag] = [v]\n tagKeySetMap[tag] = {}\n tagKeyGetMap[tag] = {}\n }\n\n if (!keySetMap) {\n keySetMap = tagKeySetMap[tag]\n keyGetMap = tagKeyGetMap[tag]\n }\n const key = v.name.toLocaleLowerCase()\n keySetMap[key] = v.onset\n keyGetMap[key] = v.onget\n hasAttr = true\n })\n\n if (hasBind || !hasAttr) {\n return\n }\n\n // 如果之前调用过 setAttribute,直接返回上次设置的值;\n // 如果没有调用过,则返回 onget 的回调值。\n func(proto, 'getAttribute', oldFn => function(name) {\n const key = (name + '').toLocaleLowerCase()\n\n const onget = keyGetMap[key]\n if (!onget) {\n return apply(oldFn, this, arguments)\n }\n\n const lastVal = this['_k' + key]\n if (lastVal !== undefined) {\n return lastVal\n }\n const val = apply(oldFn, this, arguments)\n return onget(val)\n })\n\n func(proto, 'setAttribute', oldFn => function(name, val) {\n const key = (name + '').toLocaleLowerCase()\n const onset = keySetMap[key]\n if (onset) {\n this['_k' + key] = val\n\n const ret = onset.call(this, val)\n if (ret === DROP) {\n return\n }\n arguments[1] = ret\n }\n return apply(oldFn, this, arguments)\n })\n\n func(proto, 'setAttributeNode', oldFn => function(node) {\n console.log('setAttributeNode:', node, this)\n return apply(oldFn, this, arguments)\n })\n\n // ...\n }\n\n /**\n * @param {Text} node\n * @param {object} handler\n * @param {Element} elem \n */\n function parseNewTextNode(node, handler, elem) {\n// console.log('parseTextNode')\n const val = node.nodeValue\n const ret = handler.onset.call(elem, val, true)\n if (ret === DROP) {\n return\n }\n node.nodeValue = ret\n }\n\n /**\n * @param {Element} elem \n * @param {object} handler\n */\n function parseNewElemNode(elem, handler) {\n const name = handler.name\n if (!elem.hasAttribute(name)) {\n return\n }\n const val = rawGetAttr.call(elem, name)\n const ret = handler.onset.call(elem, val, true)\n if (ret === DROP) {\n return\n }\n rawSetAttr.call(elem, name, ret)\n }\n\n \n /**\n * @param {Node} node \n */\n function addNode(node) {\n switch (node.nodeType) {\n case 1: // ELEMENT_NODE\n const handlers = tagAttrHandlersMap[node.tagName]\n handlers && handlers.forEach(v => {\n parseNewElemNode(node, v)\n })\n break\n case 3: // TEXT_NODE\n const parent = node.parentElement\n if (parent) {\n const handler = tagTextHandlerMap[parent.tagName]\n if (handler) {\n parseNewTextNode(node, handler, parent)\n }\n }\n break\n }\n }\n\n /**\n * @param {Node} node \n */\n function delNode(node) {\n \n }\n \n // win.addEventListener('DOMContentLoaded', e => {\n // parseMutations(observer.takeRecords())\n // observer.disconnect()\n // })\n\n \n return {\n func,\n prop,\n attr,\n addNode,\n delNode,\n }\n}\n\n//# sourceURL=webpack:///./src/hook.js?");
/***/ }),
/***/ "./src/index.js":
/*!**********************!*\
!*** ./src/index.js ***!
\**********************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
eval("function main() {\n if ('onclick' in self) {\n // page env\n return __webpack_require__(/*! ./page.js */ \"./src/page.js\")\n }\n if ('onfetch' in self) {\n // sw env\n return __webpack_require__(/*! ./sw.js */ \"./src/sw.js\")\n }\n return __webpack_require__(/*! ./worker.js */ \"./src/worker.js\")\n}\n\nmain()\n\n//# sourceURL=webpack:///./src/index.js?");
/***/ }),
/***/ "./src/inject.js":
/*!***********************!*\
!*** ./src/inject.js ***!
\***********************/
/*! exports provided: htmlRemote, htmlLocal, jsRemote, workerRemote, workerLocal */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"htmlRemote\", function() { return htmlRemote; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"htmlLocal\", function() { return htmlLocal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"jsRemote\", function() { return jsRemote; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"workerRemote\", function() { return workerRemote; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"workerLocal\", function() { return workerLocal; });\n/* harmony import */ var _urlx__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./urlx */ \"./src/urlx.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util.js */ \"./src/util.js\");\n/* harmony import */ var _jsfilter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./jsfilter.js */ \"./src/jsfilter.js\");\n\n\n\n\n\nconst RES_HOST = location.origin\nconst HELPER_URL = RES_HOST + '/x.js'\n\n// Worker \nconst WORKER_BEG = _util_js__WEBPACK_IMPORTED_MODULE_1__[\"strToBytes\"](\n `importScripts('${HELPER_URL}');`\n)\n\n\n/**\n * @param {Response} res\n * @param {Object} resOpt\n */\nfunction htmlRemote(res, resOpt, htmlPath) {\n const reader = res.body.getReader()\n let injected\n\n const stream = new ReadableStream({\n async pull(controller) {\n if (!injected) {\n injected = true\n const htmlStr = `\\\n<!doctype html><base href=\"${htmlPath}\"><script src=\"${HELPER_URL}\"></script>\n`\n const htmlBuf = _util_js__WEBPACK_IMPORTED_MODULE_1__[\"strToBytes\"](htmlStr)\n controller.enqueue(htmlBuf)\n }\n const r = await reader.read()\n if (r.done) {\n controller.close()\n return\n }\n controller.enqueue(r.value)\n }\n })\n return new Response(stream, resOpt)\n}\n\n\n// 处理 data、blob 协议的页面\nfunction htmlLocal(uri) {\n // TODO:\n}\n\n\n/**\n * @param {Response} res\n * @param {Object} resOpt\n */\nasync function jsRemote(res, resOpt, charset) {\n // 之后会分析语法树,所以不使用流模式\n const buf = await res.arrayBuffer()\n const ret = await _jsfilter_js__WEBPACK_IMPORTED_MODULE_2__[\"parseBin\"](buf, charset)\n if (ret) {\n resOpt.headers = new Headers(resOpt.headers)\n resOpt.headers.set('content-type', 'text/javascript')\n }\n return new Response(ret || buf, resOpt)\n}\n\n\nfunction workerRemote(res, resOpt, charset) {\n // TODO: \n}\n\n\n// 处理 data、blob 协议的 Worker\nfunction workerLocal(data) {\n // TODO: \n}\n\n//# sourceURL=webpack:///./src/inject.js?");
/***/ }),
/***/ "./src/jsfilter.js":
/*!*************************!*\
!*** ./src/jsfilter.js ***!
\*************************/
/*! exports provided: parseSync, parseBin */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseSync\", function() { return parseSync; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseBin\", function() { return parseBin; });\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util.js */ \"./src/util.js\");\n\n\n\n/**\n * @param {string} code \n */\nfunction parseSync(code) {\n // TODO: parse js ast\n let match\n code = code.replace(/(\\b)location(\\b)/g, (_, $1, $2) => {\n match = true\n return $1 + '__location' + $2\n })\n if (match) {\n return code\n }\n return null\n}\n\n/**\n * @param {Uint8Array} buf\n */\nasync function parseBin(buf, charset) {\n const str = _util_js__WEBPACK_IMPORTED_MODULE_0__[\"bytesToStr\"](buf, charset)\n const ret = parseSync(str)\n if (ret !== null) {\n return _util_js__WEBPACK_IMPORTED_MODULE_0__[\"strToBytes\"](ret)\n }\n if (charset && !_util_js__WEBPACK_IMPORTED_MODULE_0__[\"isUtf8\"](charset)) {\n return _util_js__WEBPACK_IMPORTED_MODULE_0__[\"strToBytes\"](str)\n }\n return null\n}\n\n//# sourceURL=webpack:///./src/jsfilter.js?");
/***/ }),
/***/ "./src/lock-native.js":
/*!****************************!*\
!*** ./src/lock-native.js ***!
\****************************/
/*! exports provided: lockNative */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"lockNative\", function() { return lockNative; });\nconst {\n getOwnPropertyDescriptor,\n defineProperties,\n freeze,\n} = Object\n\n\n/**\n * @param {object} obj \n * @param {string[]} keys \n */\nfunction lock(obj, keys) {\n const map = {}\n\n keys.forEach(key => {\n const desc = getOwnPropertyDescriptor(obj, key)\n desc.writable = false\n desc.configurable = false\n map[key]= desc\n })\n defineProperties(obj, map)\n}\n\n\n/**\n * @param {Window} win \n */\nfunction lockNative(win) {\n // 禁止重写原生属性\n const funcProto = win.Function.prototype\n lock(funcProto, ['call', 'apply'])\n\n const strProto = win.String.prototype\n lock(strProto, [\n 'startsWith',\n 'endsWith',\n 'split',\n 'substr',\n 'indexOf',\n 'match',\n 'toLowerCase',\n // 'trim',\n 'replace',\n ])\n\n const arrProto = win.Array.prototype\n lock(arrProto, [\n 'forEach',\n 'map',\n 'join',\n 'push',\n 'unshift'\n ])\n\n const regProto = win.RegExp.prototype\n lock(regProto, ['test'])\n\n const mapProto = win.Map.prototype\n lock(mapProto, ['get', 'set'])\n\n const weakmapProto = win.WeakMap.prototype\n lock(weakmapProto, ['get', 'set'])\n\n const setProto = win.Set.prototype\n lock(setProto, ['has', 'add', 'delete'])\n\n const weaksetProto = win.WeakSet.prototype\n lock(weaksetProto, ['has', 'add', 'delete'])\n\n lock(win, ['URL'])\n freeze(win.URL.prototype)\n}\n\n\n//# sourceURL=webpack:///./src/lock-native.js?");
/***/ }),
/***/ "./src/page.js":
/*!*********************!*\
!*** ./src/page.js ***!
\*********************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _urlx_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./urlx.js */ \"./src/urlx.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util.js */ \"./src/util.js\");\n/* harmony import */ var _jsfilter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./jsfilter.js */ \"./src/jsfilter.js\");\n/* harmony import */ var _cookie_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./cookie.js */ \"./src/cookie.js\");\n/* harmony import */ var _hook_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hook.js */ \"./src/hook.js\");\n/* harmony import */ var _fakeloc_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./fakeloc.js */ \"./src/fakeloc.js\");\n/* harmony import */ var _storage_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./storage.js */ \"./src/storage.js\");\n/* harmony import */ var _lock_native__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./lock-native */ \"./src/lock-native.js\");\n\n\n\n\n\n\n\n\n\nconst gWinInfoMap = new WeakMap()\nconst gObjWinMap = new WeakMap()\n\n/**\n * @param {Window} win\n */\nfunction initWin(win) {\n if (!win) {\n return\n }\n try {\n if ('__location' in win) {\n return\n }\n } catch (err) {\n console.warn('not same origin')\n return\n }\n\n const {\n document,\n location,\n navigator,\n setInterval,\n top,\n } = win\n\n const {\n apply,\n construct,\n } = Reflect\n\n const sw = navigator.serviceWorker.controller\n\n setInterval(_ => {\n sw.postMessage({\n cmd: 'ping'\n })\n }, 1000 * 10)\n\n // /** @type {WeakSet<HTMLBaseElement>} */\n // const baseElemSet = new WeakSet()\n\n const headElem = document.head\n const baseElemList = document.getElementsByTagName('base')\n const baseElem = baseElemList[0]\n\n function updateBaseElem() {\n if (baseElemList.length === 0) {\n // 有些页面会清空 <head> 所有元素(比如百度搜索),\n // 导致默认的 <base> 元素丢失,因此需要补上。\n headElem.insertBefore(baseElem, headElem.firstChild)\n console.warn('[jsproxy] base elem restored')\n }\n\n // 更新基地址\n const lastBaseElem = baseElemList[baseElemList.length - 1]\n vBaseUrlObj.href = lastBaseElem.href\n console.warn('[jsproxy] update base url:', vBaseUrlObj.href)\n }\n \n function isBlank(loc) {\n return loc.href === 'about:blank'\n }\n\n function getNonBlankPageUrlObj() {\n let p = win\n while (p !== top) {\n p = p.parent\n\n const info = gWinInfoMap.get(p)\n const base = info && info.vBaseUrlObj\n if (base && !isBlank(base)) {\n return new URL(_urlx_js__WEBPACK_IMPORTED_MODULE_0__[\"decUrlObj\"](base))\n }\n }\n }\n\n // 原始页面路径(可通过 history.pushState 修改)\n const vPageUrlObj = new URL(_urlx_js__WEBPACK_IMPORTED_MODULE_0__[\"decUrlObj\"](location))\n\n // 相对路径基值(可通过 <base> 修改)\n const vBaseUrlObj = isBlank(location)\n ? getNonBlankPageUrlObj(win)\n : new URL(vPageUrlObj)\n\n gWinInfoMap.set(win, {\n vBaseUrlObj,\n vPageUrlObj,\n })\n\n// if(location.href==='about:blank')debugger\n\n Object(_lock_native__WEBPACK_IMPORTED_MODULE_7__[\"lockNative\"])(win)\n\n const hook = Object(_hook_js__WEBPACK_IMPORTED_MODULE_4__[\"createHook\"])(win)\n\n const nodeSet = new WeakSet()\n\n function onNodeAdd(node) {\n if (nodeSet.has(node)) {\n return\n }\n nodeSet.add(node)\n \n const nodes = node.childNodes\n for (let i = 0, n = nodes.length; i < n; i++) {\n onNodeAdd(nodes[i])\n }\n hook.addNode(node)\n }\n\n function onNodeDel(node) {\n nodeSet.delete(node)\n\n const nodes = node.childNodes\n for (let i = 0, n = nodes.length; i < n; i++) {\n onNodeDel(nodes[i])\n }\n hook.delNode(node)\n\n if (node.tagName === 'BASE') {\n updateBaseElem()\n }\n }\n\n /**\n * @param {MutationRecord[]} mutations \n */\n function parseMutations(mutations) {\n mutations.forEach(mutation => {\n mutation.addedNodes.forEach(onNodeAdd)\n mutation.removedNodes.forEach(onNodeDel)\n })\n }\n\n const observer = new win.MutationObserver(parseMutations)\n observer.observe(win.document, {\n childList: true,\n subtree: true,\n })\n\n\n Object(_storage_js__WEBPACK_IMPORTED_MODULE_6__[\"createStorage\"])(win, hook, vPageUrlObj)\n\n // hook window.location\n Object(_fakeloc_js__WEBPACK_IMPORTED_MODULE_5__[\"createFakeLoc\"])(win, vPageUrlObj, vBaseUrlObj)\n\n\n const navProto = win.Navigator.prototype\n hook.prop(navProto, 'cookieEnabled',\n getter => function() {\n // TODO:\n return true\n }\n )\n\n // hook document.domain\n const docProto = win.Document.prototype\n\n // TODO:\n let domain = vPageUrlObj.hostname\n\n hook.prop(docProto, 'domain',\n getter => function() {\n return domain\n },\n setter => function(val) {\n console.warn('[jsproxy] set document.domain:', val)\n domain = val\n // TODO:\n setter.call(this, location.hostname)\n }\n )\n\n // hook document.cookie\n hook.prop(docProto, 'cookie',\n getter => function(val) {\n // console.warn('[jsproxy] get document.cookie')\n return _cookie_js__WEBPACK_IMPORTED_MODULE_3__[\"concat\"](vPageUrlObj)\n },\n setter => function(val) {\n // console.warn('[jsproxy] set document.cookie:', val)\n const ret = _cookie_js__WEBPACK_IMPORTED_MODULE_3__[\"parse\"](val, vPageUrlObj)\n if (ret) {\n if (sw) {\n sw.postMessage({\n cmd: 'cookie',\n val: ret\n })\n } else {\n // todo\n }\n }\n }\n )\n\n // uri api\n function getUriHook(getter) {\n return function() {\n const val = getter.call(this)\n return _urlx_js__WEBPACK_IMPORTED_MODULE_0__[\"decUrlStr\"](val)\n }\n }\n\n const nodeProto = win.Node.prototype\n hook.prop(nodeProto, 'baseURI', getUriHook)\n hook.prop(docProto, 'referrer', getUriHook)\n hook.prop(docProto, 'URL', getUriHook)\n hook.prop(docProto, 'documentURI', getUriHook)\n\n\n // disable ServiceWorker\n const swProto = win.ServiceWorkerContainer.prototype\n if (swProto) {\n hook.func(swProto, 'register', oldFn => function() {\n console.warn('access serviceWorker.register blocked')\n return new Promise(function() {})\n })\n hook.func(swProto, 'getRegistration', oldFn => function() {\n console.warn('access serviceWorker.getRegistration blocked')\n return new Promise(function() {})\n })\n hook.func(swProto, 'getRegistrations', oldFn => function() {\n console.warn('access serviceWorker.getRegistrations blocked')\n return new Promise(function() {})\n })\n\n // hook.prop(swProto, 'controller',\n // getter => function() {\n // return null\n // }\n // )\n }\n\n /**\n * @param {string} name \n */\n function hookHistory(name) {\n gObjWinMap.set(win.history, win)\n const proto = win.History.prototype\n\n hook.func(proto, name, oldFn => function(data, title, url) {\n console.log('[jsproxy] history.%s: %s', name, url)\n// debugger\n const win = gObjWinMap.get(this)\n if (!win) {\n return apply(oldFn, this, arguments)\n }\n\n const {\n vBaseUrlObj,\n vPageUrlObj,\n } = gWinInfoMap.get(win)\n\n const urlObj = url && _urlx_js__WEBPACK_IMPORTED_MODULE_0__[\"newUrl\"](url, vBaseUrlObj)\n if (urlObj) {\n const vPageOrigin = vPageUrlObj.origin\n\n if (urlObj.origin !== vPageOrigin) {\n const vPageUrlStr = vPageUrlObj.href\n throw Error(`\\\nFailed to execute '${name}' on 'History': \\\nA history state object with URL '${url}' \\\ncannot be created in a document with \\\norigin '${vPageOrigin}' and URL '${vPageUrlStr}'.`\n )\n }\n vPageUrlObj.href = urlObj\n arguments[2] = _urlx_js__WEBPACK_IMPORTED_MODULE_0__[\"encUrlObj\"](urlObj)\n }\n return apply(oldFn, this, arguments)\n })\n }\n hookHistory('pushState')\n hookHistory('replaceState')\n\n\n //\n hook.func(navigator, 'registerProtocolHandler', oldFn => function(_0, url, _1) {\n console.log('registerProtocolHandler:', arguments)\n return apply(oldFn, this, arguments)\n })\n \n\n // hook Performance API\n const perfProto = win.PerformanceEntry.prototype\n hook.prop(perfProto, 'name', getUriHook)\n\n\n // hook window.open()\n hook.func(win, 'open', oldFn => function(url) {\n if (url) {\n arguments[0] = _urlx_js__WEBPACK_IMPORTED_MODULE_0__[\"encUrlStr\"](url, vBaseUrlObj)\n }\n return apply(oldFn, this, arguments)\n })\n\n const frames = win.frames\n win.frames = new Proxy(frames, {\n get(_, key) {\n if (typeof key === 'number') {\n console.log('get frames index:', key)\n const win = frames[key]\n initWin(win)\n return win\n } else {\n return frames[key]\n }\n }\n })\n\n //\n // hook message origin\n //\n hook.func(win, 'postMessage', oldFn => function(msg, origin) {\n // origin 必须是完整的 URL(不接受 // 开头的相对协议)\n if (origin && origin !== '*') {\n arguments[1] = _urlx_js__WEBPACK_IMPORTED_MODULE_0__[\"encUrlStr\"](origin)\n }\n return apply(oldFn, this, arguments)\n })\n\n hook.prop(win.MessageEvent.prototype, 'origin', getUriHook)\n\n //\n // hook xhr\n //\n const xhrProto = win.XMLHttpRequest.prototype\n hook.func(xhrProto, 'open', oldFn => function(_0, url, async) {\n if (url) {\n arguments[1] = _urlx_js__WEBPACK_IMPORTED_MODULE_0__[\"encUrlStr\"](url, vBaseUrlObj)\n }\n if (async === false) {\n console.log('[jsproxy] sync xhr is disabled')\n arguments[2] = true\n }\n return apply(oldFn, this, arguments)\n })\n\n\n hook.func(win, 'fetch', oldFn => function(v) {\n if (v) {\n if (v.url) {\n // v is Request\n const url = _urlx_js__WEBPACK_IMPORTED_MODULE_0__[\"encUrlStr\"](v.url)\n arguments[0] = new Request(url, v)\n } else {\n // v is string\n arguments[0] = _urlx_js__WEBPACK_IMPORTED_MODULE_0__[\"encUrlStr\"](v, vBaseUrlObj)\n }\n }\n return apply(oldFn, this, arguments)\n })\n\n\n // hook Worker\n function workHook(oldFn) {\n return function(url) {\n if (url) {\n console.log('[jsproxy] new worker:', url)\n arguments[0] = _urlx_js__WEBPACK_IMPORTED_MODULE_0__[\"encUrlStr\"](url, vBaseUrlObj)\n }\n return construct(oldFn, arguments)\n }\n }\n hook.func(win, 'Worker', workHook)\n hook.func(win, 'SharedWorker', workHook)\n\n\n // hook WebSocket\n hook.func(win, 'WebSocket', oldFn => function(url) {\n if (url) {\n const args = {\n 'referer': vPageUrlObj.href,\n 'cookie': _cookie_js__WEBPACK_IMPORTED_MODULE_3__[\"concat\"](vPageUrlObj),\n }\n arguments[0] = _urlx_js__WEBPACK_IMPORTED_MODULE_0__[\"packUrl\"](args, 'ws')\n }\n return construct(oldFn, arguments)\n })\n\n\n\n // 监控相对路径基值的变化\n const baseProto = win.HTMLBaseElement.prototype\n\n hook.attr('BASE', baseProto, {\n name: 'href',\n onget(val) {\n return _urlx_js__WEBPACK_IMPORTED_MODULE_0__[\"decUrlStr\"](val)\n },\n onset(val) {\n console.log('[jsproxy] set base.href:', val)\n vBaseUrlObj.href = val\n return val\n }\n })\n\n //\n // hook <meta>\n //\n const metaProto = win.HTMLMetaElement.prototype\n\n hook.attr('META', metaProto,\n {\n name: 'http-equiv',\n onget(val) {\n // TODO: \n return val\n },\n onset(val) {\n switch (val.toLowerCase()) {\n case 'content-security-policy':\n console.warn('[jsproxy] meta csp removed')\n this.remove()\n break\n case 'content-type':\n this.remove()\n break\n }\n return val\n }\n },\n // {\n // name: 'name',\n // onget(val) {\n // return val\n // },\n // onset(val) {\n // switch (val.toLowerCase()) {\n // case 'referrer':\n // if (/^origin$/i.test(this.content)) {\n // this.content = 'default'\n // }\n // break\n // }\n // return val\n // }\n // },\n {\n name: 'charset',\n onget(val) {\n return val\n },\n onset(val) {\n return 'utf-8'\n }\n }\n )\n\n //\n // 拦截 URL 属性\n //\n const anchorProto = win.HTMLAnchorElement.prototype\n const areaProto = win.HTMLAreaElement.prototype\n const formProto = win.HTMLFormElement.prototype\n\n function hookAttr(tag, proto, name) {\n hook.attr(tag, proto, {\n name,\n onget(val) {\n return _urlx_js__WEBPACK_IMPORTED_MODULE_0__[\"decUrlStr\"](val, vBaseUrlObj)\n },\n onset(val) {\n return _urlx_js__WEBPACK_IMPORTED_MODULE_0__[\"encUrlStr\"](val, vBaseUrlObj)\n }\n })\n }\n\n hookAttr('A', anchorProto, 'href')\n hookAttr('AREA', areaProto, 'href')\n hookAttr('FORM', formProto, 'action')\n\n\n const scriptProto = win.HTMLScriptElement.prototype\n const linkProto = win.HTMLLinkElement.prototype\n\n // 防止混合内容\n if (vPageUrlObj.protocol === 'http:') {\n hookAttr('SCRIPT', scriptProto, 'src')\n hookAttr('LINK', linkProto, 'href')\n }\n\n const imgProto = win.HTMLImageElement.prototype\n hookAttr('IMG', imgProto, 'src')\n\n const embedProto = win.HTMLEmbedElement.prototype\n hookAttr('EMBED', embedProto, 'src')\n\n const objectProto = win.HTMLObjectElement.prototype\n hookAttr('OBJECT', objectProto, 'data')\n\n const iframeProto = win.HTMLIFrameElement.prototype\n hookAttr('IFRAME', iframeProto, 'src')\n\n // child frame\n hook.prop(iframeProto, 'contentWindow',\n getter => function() {\n const win = getter.call(this)\n initWin(win)\n return win\n }\n )\n\n hook.prop(iframeProto, 'contentDocument',\n getter => function() {\n const doc = getter.call(this)\n if (doc) {\n initWin(doc.defaultView)\n }\n return doc\n }\n )\n\n function hookAnchorUrlProp(anchorProto) {\n /**\n * @param {string} prop \n */\n function hookProp(prop) {\n hook.prop(anchorProto, prop,\n getter => function() {\n const vLinkUrlObj = new URL(this.href)\n return vLinkUrlObj[prop]\n },\n setter => function(val) {\n console.log('[jsproxy] set link %s: %s', prop, val)\n const vLinkUrlObj = new URL(this.href)\n vLinkUrlObj[prop] = val\n this.href = vLinkUrlObj.href\n }\n )\n }\n hookProp('protocol')\n hookProp('hostname')\n hookProp('host')\n hookProp('port')\n hookProp('pathname')\n hookProp('origin')\n }\n hookAnchorUrlProp(anchorProto)\n hookAnchorUrlProp(areaProto)\n\n // 监控离屏元素 click 方法访问页面\n // 例如:\n // var s = document.createElement('div')\n // s.innerHTML = '<a href=\"https://google.com\"><img></a>'\n // s.getElementsByTagName('img')[0].click()\n //\n const htmlProto = win.HTMLElement.prototype\n\n hook.func(htmlProto, 'click', oldFn => function() {\n /** @type {HTMLElement} */\n let el = this\n\n // 添加到文档时已经过 MutationObserver 处理\n if (el.isConnected) {\n return\n }\n while (el) {\n const tag = el.tagName\n if (tag === 'A' || tag === 'AREA') {\n el.href = el.href\n break\n }\n el = el.parentNode\n }\n return apply(oldFn, this, arguments)\n })\n\n\n /** @type {WeakMap<HTMLElement, string>} */\n const integrityMap = new WeakMap()\n\n /** @type {WeakMap<HTMLElement, string>} */\n const charsetMap = new WeakMap()\n\n\n hook.attr('SCRIPT', scriptProto,\n // 统一使用 utf-8 编码\n {\n name: 'charset',\n onget(val) {\n return charsetMap.get(this) || val\n },\n onset(val) {\n if (!_util_js__WEBPACK_IMPORTED_MODULE_1__[\"isUtf8\"](val)) {\n val = 'utf-8'\n }\n charsetMap.set(this, val)\n return val\n }\n },\n // 禁止设置内容校验\n {\n name: 'integrity',\n onget(val) {\n return integrityMap.get(this) || ''\n },\n onset(val) {\n integrityMap.set(this, val)\n return ''\n }\n },\n {\n name: 'innerText',\n onget(val) {\n return val\n },\n onset(val, isInit) {\n const ret = updateScriptText(this, val)\n if (ret === null) {\n return isInit ? _hook_js__WEBPACK_IMPORTED_MODULE_4__[\"DROP\"] : val\n }\n return ret\n }\n })\n\n // text 属性只有 prop 没有 attr\n hook.prop(scriptProto, 'text',\n getter => function() {\n return getter.call(this)\n },\n setter => function(val) {\n debugger\n const ret = updateScriptText(this, val)\n if (ret === null) {\n setter.call(this, val)\n }\n setter.call(this, ret)\n }\n )\n\n const JS_MIME_SET = new Set([\n 'text/javascript',\n 'application/javascript',\n 'application/ecmascript',\n 'application/x-ecmascript',\n 'module',\n ])\n \n /** @type {WeakSet<HTMLScriptElement>} */\n const parsedSet = new WeakSet()\n\n /**\n * @param {HTMLScriptElement} elem \n */\n function updateScriptText(elem, code) {\n// console.log('updateScript')\n const type = elem.type\n if (type && !JS_MIME_SET.has(type)) {\n return null\n }\n if (parsedSet.has(elem)) {\n return null\n }\n parsedSet.add(elem)\n\n return _jsfilter_js__WEBPACK_IMPORTED_MODULE_2__[\"parseSync\"](code)\n }\n}\n// if(self!==top)debugger\ninitWin(self)\n\ndocument.currentScript.remove()\nconsole.log('[jsproxy] helper inited', location.href)\n\n\n//# sourceURL=webpack:///./src/page.js?");
/***/ }),
/***/ "./src/storage.js":
/*!************************!*\
!*** ./src/storage.js ***!
\************************/
/*! exports provided: createStorage */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createStorage\", function() { return createStorage; });\nconst {\n apply,\n defineProperty,\n ownKeys,\n getOwnPropertyDescriptor,\n} = Reflect\n\nconst undefined = void 0\n\n\n/**\n * @param {Window} win \n * @param {string} name \n * @param {URL} vPageUrlObj \n */\nfunction setup(win, name, vPageUrlObj) {\n const prefix = vPageUrlObj.origin + ':'\n const prefixLen = prefix.length\n\n /** @type {Storage} */\n const raw = win[name]\n\n const nativeMap = {\n getItem,\n setItem,\n removeItem,\n clear,\n key,\n constructor: raw.constructor,\n toString: () => raw.toString(),\n get length() {\n return ownKeys(raw)\n .filter(v => v.startsWith(prefix))\n .length\n },\n }\n \n /**\n * @param {string} key \n */\n function getItem(key) {\n return raw.getItem(prefix + key)\n }\n\n /**\n * @param {string} key \n * @param {string} value \n */\n function setItem(key, val) {\n raw.setItem(prefix + key, val)\n }\n\n /**\n * @param {string} key \n */\n function removeItem(key) {\n return raw.removeItem(prefix + key)\n }\n\n function clear() {\n getAllKeys().forEach(removeItem)\n }\n\n /**\n * @param {*} val\n */\n function key(val) {\n // TODO: 无需遍历所有\n const arr = getAllKeys()\n const ret = arr[val | 0]\n if (ret === undefined) {\n return null\n }\n return ret\n }\n\n\n /**\n * @returns {string[]}\n */\n function getAllKeys() {\n return ownKeys(raw)\n .filter(v => v.startsWith(prefix))\n .map(v => v.substr(prefixLen))\n }\n\n const storage = new Proxy(raw, {\n get(obj, key) {\n const val = nativeMap[key]\n if (val !== undefined) {\n return val\n }\n console.log('[jsproxy] %s get: %s', name, key)\n const ret = getItem(key)\n if (ret === null) {\n return undefined\n }\n return ret\n },\n set(obj, key, val) {\n if (key in nativeMap) {\n nativeMap[key] = val\n return\n }\n console.log('[jsproxy] %s set: %s = %s', name, key, val)\n setItem(key, val)\n return true\n },\n deleteProperty(obj, key) {\n console.log('[jsproxy] %s del: %s', name, key)\n return removeItem(key)\n },\n has(obj, key) {\n console.log('[jsproxy] %s has: %s', name, key)\n return (prefix + key) in raw\n },\n enumerate(obj) {\n console.log('[jsproxy] %s enumerate: %s', name)\n // TODO:\n },\n ownKeys(obj) {\n console.log('[jsproxy] %s ownKeys', name)\n return getAllKeys()\n },\n defineProperty(obj, key, desc) {\n console.log('[jsproxy] %s defineProperty: %s', name, key)\n // TODO:\n },\n getOwnPropertyDescriptor(obj, key) {\n console.log('[jsproxy] %s getOwnPropertyDescriptor: %s', name, key)\n return getOwnPropertyDescriptor(raw, prefix + key)\n }\n })\n\n defineProperty(win, name, {value: storage})\n}\n\n\nfunction createStorage(win, hook, vPageUrlObj) {\n //\n // Web Storage\n //\n setup(win, 'localStorage', vPageUrlObj)\n setup(win, 'sessionStorage', vPageUrlObj)\n \n //\n // Storage API\n //\n function dbOpenHook(oldFn) {\n return function() {\n if (name) {\n arguments[0] = prefix + name\n }\n return apply(oldFn, this, arguments)\n }\n }\n\n // indexedDB\n const idbProto = win.IDBFactory.prototype\n hook.func(idbProto, 'open', dbOpenHook)\n\n // Cache Storage\n const cacheStorageProto = win.CacheStorage.prototype\n hook.func(cacheStorageProto, 'open', dbOpenHook)\n\n // WebSQL\n hook.func(win, 'openDatabase', dbOpenHook)\n}\n\n//# sourceURL=webpack:///./src/storage.js?");
/***/ }),
/***/ "./src/sw.js":
/*!*******************!*\
!*** ./src/sw.js ***!
\*******************/
/*! no exports provided */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _urlx_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./urlx.js */ \"./src/urlx.js\");\n/* harmony import */ var _util_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util.js */ \"./src/util.js\");\n/* harmony import */ var _inject_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./inject.js */ \"./src/inject.js\");\n/* harmony import */ var _cookie_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./cookie.js */ \"./src/cookie.js\");\n\n\n\n\n\n\nconst TYPE_HTML = 1\nconst TYPE_JS = 2\nconst TYPE_WORKER = 2\n\nconst MAX_REDIR = 5\nconst MAX_COOKIE_NUM = 20\n\nconst ENABLE_3RD_COOKIE = true\n\nconst REFER_ORIGIN = location.origin + '/'\n\n\n/**\n * @param {Request} req \n * @param {URL} urlObj\n */\nasync function forward(req, urlObj, redirNum = 0) {\n const args = {\n url__: urlObj.href.split('#')[0],\n }\n\n req.headers.forEach((val, key) => {\n if (key !== 'user-agent') {\n args[key] = val\n } else {\n // args[key] = val + ' (compatible; Googlebot/2.1;)'\n }\n })\n\n // 标记原始 origin\n args['origin'] = ''\n // if (req.mode === 'cors') {\n // // console.log('cors:', req.referrer, urlObj.href)\n // // TODO:\n // if (req.referrer) {\n // const rawUrl = urlx.decUrlStr(req.referrer)\n // const obj = new URL(rawUrl)\n // args['origin'] = obj.origin\n // }\n // }\n\n // 标记原始 referer\n const referer = req.referrer\n // console.log(urlObj.href, 'referer:', referer)\n if (referer) {\n if (referer === REFER_ORIGIN) {\n // console.log('refer origin:', urlObj.href)\n args['referer'] = urlObj.href\n } else {\n args['referer'] = _urlx_js__WEBPACK_IMPORTED_MODULE_0__[\"decUrlStr\"](referer)\n }\n }\n\n // Cookie 携带策略\n const cred = req.credentials\n switch (cred) {\n case 'include':\n break\n case 'same-origin':\n break\n case 'omit':\n break\n }\n\n // console.log(urlObj.href, req.credentials)\n const reqCookie = _cookie_js__WEBPACK_IMPORTED_MODULE_3__[\"concat\"](urlObj)\n if (reqCookie) {\n args['cookie'] = reqCookie\n }\n\n let reqType = 0\n if (req.mode === 'navigate') {\n reqType = TYPE_HTML\n } else {\n const dest = req.destination\n if (dest === 'script') {\n reqType = TYPE_JS\n } else if (dest === 'worker') {\n reqType = TYPE_WORKER\n }\n }\n\n /** @type {RequestInit} */\n const reqOpt = {\n method: req.method,\n signal: req.signal,\n }\n\n if (req.method === 'POST') {\n if (!req.bodyUsed) {\n const buf = await req.arrayBuffer()\n if (buf.byteLength > 0) {\n reqOpt.body = buf\n }\n } else {\n console.warn('bodyUsed!')\n }\n }\n\n // const urlPacked = urlx.encUrlObj(urlObj)\n const proxyUrl = _urlx_js__WEBPACK_IMPORTED_MODULE_0__[\"packUrl\"](args, 'http')\n\n const res = await fetch(proxyUrl, reqOpt)\n\n const resHdr = new Headers(res.headers)\n const resStatus = +resHdr.get('status--')\n resHdr.delete('status--')\n\n// console.log(urlObj.href, resStatus, new Map(req.headers), new Map(resHdr))\n const resCookie = resHdr.get('set-cookie--')\n if (resCookie) {\n resHdr.delete('set-cookie--')\n resCookie.split(';--;', MAX_COOKIE_NUM).forEach(v => {\n _cookie_js__WEBPACK_IMPORTED_MODULE_3__[\"parse\"](v, urlObj)\n })\n }\n\n const resOpt = {\n status: resStatus,\n statusText: res.statusText,\n headers: resHdr,\n }\n\n // https://fetch.spec.whatwg.org/#statuses\n const isEmpty =\n (resStatus === 101) ||\n (resStatus === 204) ||\n (resStatus === 205) ||\n (resStatus === 304)\n\n if (isEmpty) {\n return new Response(null, resOpt)\n }\n\n // 处理重定向\n const isRedir =\n (resStatus === 301) ||\n (resStatus === 302) ||\n (resStatus === 303) ||\n (resStatus === 307) ||\n (resStatus === 308)\n\n if (isRedir) {\n const locStr = resHdr.get('location')\n if (locStr) {\n // 重定向到相对路径,是基于请求的 URL 计算(不是页面的 URL)\n const locObj = _urlx_js__WEBPACK_IMPORTED_MODULE_0__[\"newUrl\"](locStr, urlObj)\n if (locObj) {\n if (req.redirect === 'follow') {\n if (redirNum === MAX_REDIR) {\n return new Response('too many redirects')\n }\n // 递归请求\n return forward(req, locObj, redirNum + 1)\n }\n // req.redirect === 'manual'\n resHdr.set('location', _urlx_js__WEBPACK_IMPORTED_MODULE_0__[\"encUrlObj\"](locObj))\n }\n }\n return new Response(res.body, resOpt)\n }\n\n // 提取 mime 和 charset,不存在则为 undefined。\n // 可能存在多个段,并且值可能包含引号,例如:\n // content-type: text/html; ...; charset=\"gbk\"\n const ctVal = resHdr.get('content-type') || ''\n const [, mime, charset] = ctVal\n .toLocaleLowerCase()\n .match(/([^;]*)(?:.*?charset=['\"]?([^'\"]+))?/)\n\n if (reqType === TYPE_HTML) {\n if (mime === 'text/html') {\n return _inject_js__WEBPACK_IMPORTED_MODULE_2__[\"htmlRemote\"](res, resOpt, urlObj.href)\n }\n } else if (reqType === TYPE_JS) {\n return _inject_js__WEBPACK_IMPORTED_MODULE_2__[\"jsRemote\"](res, resOpt, charset)\n }\n\n return new Response(res.body, resOpt)\n}\n\n\nasync function proxy(e, urlObj) {\n // TODO: 读取本地缓存的资源,以及从本地 CDN 加速\n // try {\n return forward(e.request, urlObj)\n // } catch (err) {\n // console.warn('[jsproxy] forward err:', err)\n // }\n}\n\n\nasync function getUrlById(id) {\n const client = await clients.get(id)\n if (!client) {\n return\n }\n return _urlx_js__WEBPACK_IMPORTED_MODULE_0__[\"decUrlStr\"](client.url)\n}\n\n\nself.addEventListener('fetch', e => {\n// console.warn('fetch:',e.request.url)\n// if(e.request.url.includes('jquery-2.2.0.min.js'))debugger\n // TODO:\n const urlObj = new URL(e.request.url)\n if (urlObj.pathname === '/x.js') {\n return\n }\n\n const rawUrlStr = _urlx_js__WEBPACK_IMPORTED_MODULE_0__[\"decUrlObj\"](urlObj)\n const rawUrlObj = new URL(rawUrlStr)\n\n if (_urlx_js__WEBPACK_IMPORTED_MODULE_0__[\"isHttpProto\"](rawUrlStr)) {\n e.respondWith(proxy(e, rawUrlObj))\n } else {\n console.log('ignore non-http res:', rawUrlStr)\n }\n})\n\n\nself.addEventListener('message', e => {\n // console.log('sw msg:', e.data)\n const msg = e.data\n switch (msg.cmd) {\n case 'cookie':\n _cookie_js__WEBPACK_IMPORTED_MODULE_3__[\"set\"](msg.val)\n break\n case 'ping':\n // pong\n break\n }\n})\n\n\nself.addEventListener('install', _ => {\n\tskipWaiting()\n})\n\n\nself.addEventListener('activate', _ => {\n\tclients.claim()\n})\n\n\nconsole.log('[jsproxy] sw inited')\n\n\n//# sourceURL=webpack:///./src/sw.js?");
/***/ }),
/***/ "./src/tld-data.js":
/*!*************************!*\
!*** ./src/tld-data.js ***!
\*************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n// THIS FILE WAS GENERATED BY './tools/tld/gen.js'\n/* harmony default export */ __webpack_exports__[\"default\"] = ('0.bg,001www.com,0emm.com,1.bg,12hp.at,12hp.ch,12hp.de,1337.pictures,16-b.it,1kapp.com,2.bg,2000.hu,2038.io,2ix.at,2ix.ch,2ix.de,3.bg,32-b.it,3utilities.com,4.bg,4lima.at,4lima.ch,4lima.de,4u.com,5.bg,6.bg,64-b.it,7.bg,8.bg,9.bg,9guacu.br,a.bg,a.prod.fastly.net,a.run.app,a.se,a.ssl.fastly.net,aa.no,aaa.pro,aarborte.no,ab.ca,abashiri.hokkaido.jp,abc.br,abeno.osaka.jp,abiko.chiba.jp,abira.hokkaido.jp,abkhazia.su,abo.pa,abr.it,abruzzo.it,abu.yamaguchi.jp,ac.ae,ac.at,ac.be,ac.ci,ac.cn,ac.cr,ac.cy,ac.gn,ac.gov.br,ac.id,ac.il,ac.im,ac.in,ac.ir,ac.jp,ac.ke,ac.kr,ac.leg.br,ac.lk,ac.ls,ac.ma,ac.me,ac.mu,ac.mw,ac.mz,ac.ni,ac.nz,ac.pa,ac.pr,ac.rs,ac.ru,ac.rw,ac.se,ac.sz,ac.th,ac.tj,ac.tz,ac.ug,ac.uk,ac.vn,ac.za,ac.zm,ac.zw,aca.pro,academia.bo,academy.museum,accesscam.org,accident-investigation.aero,accident-prevention.aero,acct.pro,achi.nagano.jp,act.au,act.edu.au,ad.jp,adachi.tokyo.jp,adm.br,adult.ht,adv.br,adv.mz,advisor.ws,adygeya.ru,adygeya.su,ae.org,aejrie.no,aero.mv,aero.tt,aerobatic.aero,aeroclub.aero,aerodrome.aero,aeroport.fr,afjord.no,africa.com,ag.it,aga.niigata.jp,agano.niigata.jp,agdenes.no,agematsu.nagano.jp,agents.aero,agr.br,agrar.hu,agric.za,agriculture.museum,agrigento.it,agrinet.tn,agro.bo,agro.pl,aguni.okinawa.jp,ah.cn,ah.no,aibetsu.hokkaido.jp,aichi.jp,aid.pl,aikawa.kanagawa.jp,ainan.ehime.jp,aioi.hyogo.jp,aip.ee,air-surveillance.aero,air-traffic-control.aero,air.museum,aircraft.aero,airguard.museum,airline.aero,airport.aero,airtraffic.aero,aisai.aichi.jp,aisho.shiga.jp,aizubange.fukushima.jp,aizumi.tokushima.jp,aizumisato.fukushima.jp,aizuwakamatsu.fukushima.jp,aju.br,ak.us,akabira.hokkaido.jp,akagi.shimane.jp,akaiwa.okayama.jp,akashi.hyogo.jp,aki.kochi.jp,akiruno.tokyo.jp,akishima.tokyo.jp,akita.akita.jp,akita.jp,akkeshi.hokkaido.jp,aknoluokta.no,ako.hyogo.jp,akrehamn.no,aktyubinsk.su,akune.kagoshima.jp,al.eu.org,al.gov.br,al.it,al.leg.br,al.no,al.us,alabama.museum,alaheadju.no,aland.fi,alaska.museum,alces.network,alessandria.it,alesund.no,algard.no,alpha-myqnapcloud.com,alpha.bounty-full.com,alstahaug.no,alt.za,alta.no,alto-adige.it,altoadige.it,alvdal.no,alwaysdata.net,am.br,am.gov.br,am.leg.br,ama.aichi.jp,ama.shimane.jp,amagasaki.hyogo.jp,amakusa.kumamoto.jp,amami.kagoshima.jp,amber.museum,ambulance.aero,ambulance.museum,american.museum,americana.museum,americanantiques.museum,americanart.museum,ami.ibaraki.jp,amli.no,amot.no,amsterdam.museum,amusement.aero,an.it,anamizu.ishikawa.jp,anan.nagano.jp,anan.tokushima.jp,anani.br,ancona.it,and.museum,andasuolo.no,andebu.no,ando.nara.jp,andoy.no,andria-barletta-trani.it,andria-trani-barletta.it,andriabarlettatrani.it,andriatranibarletta.it,andøy.no,anjo.aichi.jp,ann-arbor.mi.us,annaka.gunma.jp,annefrank.museum,anpachi.gifu.jp,anthro.museum,anthropology.museum,antiques.museum,ao.it,aogaki.hyogo.jp,aogashima.tokyo.jp,aoki.nagano.jp,aomori.aomori.jp,aomori.jp,aosta-valley.it,aosta.it,aostavalley.it,aoste.it,ap-northeast-1.elasticbeanstalk.com,ap-northeast-2.elasticbeanstalk.com,ap-northeast-3.elasticbeanstalk.com,ap-south-1.elasticbeanstalk.com,ap-southeast-1.elasticbeanstalk.com,ap-southeast-2.elasticbeanstalk.com,ap.gov.br,ap.gov.pl,ap.it,ap.leg.br,aparecida.br,api.stdlib.com,apigee.io,app.lmpm.com,app.os.fedoraproject.org,app.os.stg.fedoraproject.org,appchizi.com,applicationcloud.io,applinzi.com,apps.fbsbx.com,apps.lair.io,appspot.com,aq.it,aquarium.museum,aquila.it,ar.com,ar.it,ar.us,arai.shizuoka.jp,arakawa.saitama.jp,arakawa.tokyo.jp,arao.kumamoto.jp,arboretum.museum,archaeological.museum,archaeology.museum,architecture.museum,ardal.no,aremark.no,arendal.no,arezzo.it,ariake.saga.jp,arida.wakayama.jp,aridagawa.wakayama.jp,arita.saga.jp,arkhangelsk.su,armenia.su,arna.no,arq.br,art.br,art.do,art.dz,art.ht,art.museum,art.pl,art.sn,artanddesign.museum,artcenter.museum,artdeco.museum,arte.bo,arteducation.museum,artgallery.museum,arts.co,arts.museum,arts.nf,arts.ro,arts.ve,artsandcrafts.museum,as.us,asago.hyogo.jp,asahi.chiba.jp,asahi.ibaraki.jp,asahi.mie.jp,asahi.nagano.jp,asahi.toyama.jp,asahi.yamagata.jp,asahikawa.hokkaido.jp,asaka.saitama.jp,asakawa.fukushima.jp,asakuchi.okayama.jp,asaminami.hiroshima.jp,ascoli-piceno.it,ascolipiceno.it,aseral.no,ashgabad.su,ashibetsu.hokkaido.jp,ashikaga.tochigi.jp,ashiya.fukuoka.jp,ashiya.hyogo.jp,ashoro.hokkaido.jp,asker.no,askim.no,askoy.no,askvoll.no,askøy.no,asmatart.museum,asn.au,asn.lv,asnes.no,aso.kumamoto.jp,ass.km,assabu.hokkaido.jp,assassination.museum,assedic.fr,assisi.museum,assn.lk,asso.bj,asso.ci,asso.dz,asso.eu.org,asso.fr,asso.gp,asso.ht,asso.km,asso.mc,asso.nc,asso.re,association.aero,association.museum,asti.it,astronomy.museum,asuke.aichi.jp,at-band-camp.net,at.eu.org,at.it,atami.shizuoka.jp,ath.cx,atlanta.museum,atm.pl,ato.br,atsugi.kanagawa.jp,atsuma.hokkaido.jp,au.eu.org,audnedaln.no,augustow.pl,aukra.no,aure.no,aurland.no,aurskog-holand.no,aurskog-høland.no,austevoll.no,austin.museum,australia.museum,austrheim.no,author.aero,auto.pl,automotive.museum,av.it,av.tr,avellino.it,averoy.no,averøy.no,aviation.museum,avocat.fr,avocat.pro,avoues.fr,awaji.hyogo.jp,awdev.ca,axis.museum,aya.miyazaki.jp,ayabe.kyoto.jp,ayagawa.kagawa.jp,ayase.kanagawa.jp,az.us,azerbaijan.su,azumino.nagano.jp,azure-mobile.net,azurecontainer.io,azurewebsites.net,aéroport.ci,b.bg,b.br,b.se,b.ssl.fastly.net,ba.gov.br,ba.it,ba.leg.br,babia-gora.pl,backplaneapp.io,badaddja.no,badajoz.museum,baghdad.museum,bahcavuotna.no,bahccavuotna.no,bahn.museum,baidar.no,bajddar.no,balashov.su,balat.no,bale.museum,balestrand.no,ballangen.no,ballooning.aero,balsan-sudtirol.it,balsan-suedtirol.it,balsan-südtirol.it,balsan.it,balsfjord.no,baltimore.museum,bamble.no,bandai.fukushima.jp,bando.ibaraki.jp,bar.pro,barcelona.museum,bardu.no,bari.it,barletta-trani-andria.it,barlettatraniandria.it,barreau.bj,barrel-of-knowledge.info,barrell-of-knowledge.info,barsy.bg,barsy.club,barsy.co.uk,barsy.de,barsy.eu,barsy.in,barsy.info,barsy.io,barsy.me,barsy.menu,barsy.mobi,barsy.net,barsy.online,barsy.org,barsy.pro,barsy.pub,barsy.shop,barsy.site,barsy.support,barsy.uk,barsycenter.com,barsyonline.co.uk,barsyonline.com,barueri.br,barum.no,bas.it,baseball.museum,basel.museum,bashkiria.ru,bashkiria.su,basilicata.it,baths.museum,bato.tochigi.jp,batsfjord.no,bauern.museum,bbs.tr,bc.ca,bci.dnstrace.pro,bd,bd.se,be.eu.org,bearalvahki.no,bearalváhki.no,beardu.no,beauxarts.museum,bedzin.pl,beeldengeluid.museum,beep.pl,beiarn.no,bel.tr,belau.pw,belem.br,bellevue.museum,belluno.it,benevento.it,beppu.oita.jp,berg.no,bergamo.it,bergbau.museum,bergen.no,berkeley.museum,berlevag.no,berlevåg.no,berlin.museum,bern.museum,beskidy.pl,beta.bounty-full.com,betainabox.com,better-than.tv,bg.eu.org,bg.it,bhz.br,bi.it,bialowieza.pl,bialystok.pl,bibai.hokkaido.jp,bible.museum,biei.hokkaido.jp,bielawa.pl,biella.it,bieszczady.pl,bievat.no,bievát.no,bifuka.hokkaido.jp,bihoro.hokkaido.jp,bilbao.museum,bill.museum,bindal.no,bio.br,bir.ru,biratori.hokkaido.jp,birdart.museum,birkenes.no,birthplace.museum,bitballoon.com,biz.at,biz.az,biz.bb,biz.cy,biz.dk,biz.et,biz.id,biz.ki,biz.ls,biz.mv,biz.mw,biz.ni,biz.nr,biz.pk,biz.pl,biz.pr,biz.tj,biz.tr,biz.tt,biz.ua,biz.vn,biz.zm,bizen.okayama.jp,bj.cn,bjarkoy.no,bjarkøy.no,bjerkreim.no,bjugn.no,bl.it,blackbaudcdn.net,blog.bo,blog.br,blogdns.com,blogdns.net,blogdns.org,blogsite.org,blogsite.xyz,blogspot.ae,blogspot.al,blogspot.am,blogspot.ba,blogspot.be,blogspot.bg,blogspot.bj,blogspot.ca,blogspot.cf,blogspot.ch,blogspot.cl,blogspot.co.at,blogspot.co.id,blogspot.co.il,blogspot.co.ke,blogspot.co.nz,blogspot.co.uk,blogspot.co.za,blogspot.com,blogspot.com.ar,blogspot.com.au,blogspot.com.br,blogspot.com.by,blogspot.com.co,blogspot.com.cy,blogspot.com.ee,blogspot.com.eg,blogspot.com.es,blogspot.com.mt,blogspot.com.ng,blogspot.com.tr,blogspot.com.uy,blogspot.cv,blogspot.cz,blogspot.de,blogspot.dk,blogspot.fi,blogspot.fr,blogspot.gr,blogspot.hk,blogspot.hr,blogspot.hu,blogspot.ie,blogspot.in,blogspot.is,blogspot.it,blogspot.jp,blogspot.kr,blogspot.li,blogspot.lt,blogspot.lu,blogspot.md,blogspot.mk,blogspot.mr,blogspot.mx,blogspot.my,blogspot.nl,blogspot.no,blogspot.pe,blogspot.pt,blogspot.qa,blogspot.re,blogspot.ro,blogspot.rs,blogspot.ru,blogspot.se,blogspot.sg,blogspot.si,blogspot.sk,blogspot.sn,blogspot.td,blogspot.tw,blogspot.ug,blogspot.vn,blogsyte.com,bloxcms.com,bmd.br,bmoattachments.org,bn.it,bnr.la,bo.it,bo.nordland.no,bo.telemark.no,boavista.br,bodo.no,bodø.no,bokn.no,boldlygoingnowhere.org,boleslawiec.pl,bolivia.bo,bologna.it,bolt.hu,bolzano-altoadige.it,bolzano.it,bomlo.no,bonn.museum,boomla.net,boston.museum,botanical.museum,botanicalgarden.museum,botanicgarden.museum,botany.museum,bounceme.net,bounty-full.com,boxfuse.io,bozen-sudtirol.it,bozen-suedtirol.it,bozen-südtirol.it,bozen.it,bplaced.com,bplaced.de,bplaced.net,br.com,br.it,brand.se,brandywinevalley.museum,brasil.museum,brasilia.me,bremanger.no,brescia.it,brindisi.it,bristol.museum,british.museum,britishcolumbia.museum,broadcast.museum,broke-it.net,broker.aero,bronnoy.no,bronnoysund.no,browsersafetymark.io,brumunddal.no,brunel.museum,brussel.museum,brussels.museum,bruxelles.museum,bryansk.su,bryne.no,brønnøy.no,brønnøysund.no,bs.it,bsb.br,bss.design,bt.it,bu.no,budejju.no,building.museum,bukhara.su,bulsan-sudtirol.it,bulsan-suedtirol.it,bulsan-südtirol.it,bulsan.it,bungoono.oita.jp,bungotakada.oita.jp,bunkyo.tokyo.jp,burghof.museum,bus.museum,busan.kr,bushey.museum,buyshouses.net,buzen.fukuoka.jp,bydgoszcz.pl,byen.site,bygland.no,bykle.no,bytom.pl,bz.it,bzz.dapps.earth,báhcavuotna.no,báhccavuotna.no,báidár.no,bájddar.no,bálát.no,bådåddjå.no,båtsfjord.no,bærum.no,bø.nordland.no,bø.telemark.no,bømlo.no,c.bg,c.cdn77.org,c.la,c.se,c66.me,ca-central-1.elasticbeanstalk.com,ca.eu.org,ca.it,ca.na,ca.us,caa.aero,cable-modem.org,cadaques.museum,cagliari.it,cahcesuolo.no,cal.it,calabria.it,california.museum,caltanissetta.it,cam.it,cambridge.museum,camdvr.org,campania.it,campidano-medio.it,campidanomedio.it,campinagrande.br,campinas.br,campobasso.it,can.museum,canada.museum,capebreton.museum,carbonia-iglesias.it,carboniaiglesias.it,cargo.aero,carrara-massa.it,carraramassa.it,carrier.museum,cartoonart.museum,casacam.net,casadelamoneda.museum,caserta.it,casino.hu,castle.museum,castres.museum,catania.it,catanzaro.it,catering.aero,caxias.br,cb.it,cbg.ru,cc.ak.us,cc.al.us,cc.ar.us,cc.as.us,cc.az.us,cc.ca.us,cc.co.us,cc.ct.us,cc.dc.us,cc.de.us,cc.fl.us,cc.ga.us,cc.gu.us,cc.hi.us,cc.ia.us,cc.id.us,cc.il.us,cc.in.us,cc.ks.us,cc.ky.us,cc.la.us,cc.ma.us,cc.md.us,cc.me.us,cc.mi.us,cc.mn.us,cc.mo.us,cc.ms.us,cc.mt.us,cc.na,cc.nc.us,cc.nd.us,cc.ne.us,cc.nh.us,cc.nj.us,cc.nm.us,cc.nv.us,cc.ny.us,cc.oh.us,cc.ok.us,cc.or.us,cc.pa.us,cc.pr.us,cc.ri.us,cc.sc.us,cc.sd.us,cc.tn.us,cc.tx.us,cc.ua,cc.ut.us,cc.va.us,cc.vi.us,cc.vt.us,cc.wa.us,cc.wi.us,cc.wv.us,cc.wy.us,cci.fr,cd.eu.org,cdn77-ssl.net,ce.gov.br,ce.it,ce.leg.br,cechire.com,celtic.museum,center.museum,certification.aero,certmgr.org,cesena-forli.it,cesena-forlì.it,cesenaforli.it,cesenaforlì.it,ch.eu.org,ch.it,chambagri.fr,championship.aero,channelsdvr.net,charter.aero,chattanooga.museum,cheltenham.museum,cherkassy.ua,cherkasy.ua,chernigov.ua,chernihiv.ua,chernivtsi.ua,chernovtsy.ua,chesapeakebay.museum,chiba.jp,chicago.museum,chichibu.saitama.jp,chieti.it,chigasaki.kanagawa.jp,chihayaakasaka.osaka.jp,chijiwa.nagasaki.jp,chikugo.fukuoka.jp,chikuho.fukuoka.jp,chikuhoku.nagano.jp,chikujo.fukuoka.jp,chikuma.nagano.jp,chikusei.ibaraki.jp,chikushino.fukuoka.jp,chikuzen.fukuoka.jp,children.museum,childrens.museum,childrensgarden.museum,chimkent.su,chino.nagano.jp,chippubetsu.hokkaido.jp,chiropractic.museum,chirurgiens-dentistes-en-france.fr,chirurgiens-dentistes.fr,chiryu.aichi.jp,chita.aichi.jp,chitose.hokkaido.jp,chiyoda.gunma.jp,chiyoda.tokyo.jp,chizu.tottori.jp,chocolate.museum,chofu.tokyo.jp,chonan.chiba.jp,chosei.chiba.jp,choshi.chiba.jp,choyo.kumamoto.jp,christiansburg.museum,chtr.k12.ma.us,chungbuk.kr,chungnam.kr,chuo.chiba.jp,chuo.fukuoka.jp,chuo.osaka.jp,chuo.tokyo.jp,chuo.yamanashi.jp,ci.it,ciencia.bo,cieszyn.pl,cim.br,cincinnati.museum,cinema.museum,circus.museum,ciscofreak.com,cistron.nl,city.hu,civilaviation.aero,civilisation.museum,civilization.museum,civilwar.museum,ck,ck.ua,cl.it,clan.rip,cleverapps.io,clinton.museum,clock.museum,cloud.fedoraproject.org,cloud.goog,cloud.metacentrum.cz,cloud66.ws,cloudaccess.host,cloudaccess.net,cloudapp.net,cloudcontrolapp.com,cloudcontrolled.com,cloudeity.net,cloudfront.net,cloudfunctions.net,cloudns.asia,cloudns.biz,cloudns.cc,cloudns.club,cloudns.eu,cloudns.in,cloudns.info,cloudns.org,cloudns.pro,cloudns.pw,cloudns.us,cloudycluster.net,club.aero,club.tw,cn-north-1.eb.amazonaws.com.cn,cn-northwest-1.eb.amazonaws.com.cn,cn.com,cn.eu.org,cn.it,cn.ua,cng.br,cnpy.gdn,cns.joyent.com,cnt.br,co.ae,co.ag,co.ao,co.at,co.bb,co.bi,co.business,co.bw,co.ca,co.ci,co.cl,co.cm,co.com,co.cr,co.cz,co.dk,co.education,co.events,co.financial,co.gg,co.gl,co.gy,co.hu,co.id,co.il,co.im,co.in,co.ir,co.it,co.je,co.jp,co.ke,co.kr,co.krd,co.lc,co.ls,co.ma,co.me,co.mg,co.mu,co.mw,co.mz,co.na,co.network,co.ni,co.nl,co.no,co.nz,co.om,co.pl,co.place,co.pn,co.pw,co.rs,co.rw,co.st,co.sz,co.technology,co.th,co.tj,co.tm,co.tt,co.tz,co.ua,co.ug,co.uk,co.us,co.uz,co.ve,co.vi,co.za,co.zm,co.zw,coal.museum,coastaldefence.museum,codespot.com,cody.museum,cog.mi.us,coldwar.museum,collection.museum,collegefan.org,colonialwilliamsburg.museum,coloradoplateau.museum,columbia.museum,columbus.museum,com.ac,com.af,com.ag,com.ai,com.al,com.ar,com.au,com.aw,com.az,com.ba,com.bb,com.bh,com.bi,com.bm,com.bn,com.bo,com.br,com.bs,com.bt,com.by,com.bz,com.ci,com.cm,com.cn,com.co,com.cu,com.cw,com.cy,com.de,com.dm,com.do,com.dz,com.ec,com.ee,com.eg,com.es,com.et,com.fr,com.ge,com.gh,com.gi,com.gl,com.gn,com.gp,com.gr,com.gt,com.gu,com.gy,com.hk,com.hn,com.hr,com.ht,com.im,com.io,com.iq,com.is,com.jo,com.kg,com.ki,com.km,com.kp,com.kw,com.ky,com.kz,com.la,com.lb,com.lc,com.lk,com.lr,com.lv,com.ly,com.mg,com.mk,com.ml,com.mo,com.ms,com.mt,com.mu,com.mv,com.mw,com.mx,com.my,com.na,com.nf,com.ng,com.ni,com.nr,com.om,com.pa,com.pe,com.pf,com.ph,com.pk,com.pl,com.pr,com.ps,com.pt,com.py,com.qa,com.re,com.ro,com.ru,com.rw,com.sa,com.sb,com.sc,com.sd,com.se,com.sg,com.sh,com.sl,com.sn,com.so,com.st,com.sv,com.sy,com.tj,com.tm,com.tn,com.to,com.tr,com.tt,com.tw,com.ua,com.ug,com.uy,com.uz,com.vc,com.ve,com.vi,com.vn,com.vu,com.ws,com.zm,communication.museum,communications.museum,community.museum,como.it,compute-1.amazonaws.com,compute.amazonaws.com,compute.amazonaws.com.cn,compute.estate,computer.museum,computerhistory.museum,comunicações.museum,conf.au,conf.lv,conference.aero,consulado.st,consultant.aero,consulting.aero,contagem.br,contemporary.museum,contemporaryart.museum,control.aero,convent.museum,coop.br,coop.ht,coop.km,coop.mv,coop.mw,coop.py,coop.tt,cooperativa.bo,copenhagen.museum,corporation.museum,correios-e-telecomunicações.museum,corvette.museum,cosenza.it,costume.museum,couchpotatofries.org,council.aero,countryestate.museum,county.museum,cpa.pro,cq.cn,cr.it,cr.ua,crafting.xyz,crafts.museum,cranbrook.museum,creation.museum,cremona.it,crew.aero,cri.br,cri.nz,crimea.ua,crotone.it,cryptonomic.net,cs.it,ct.it,ct.us,cuiaba.br,cultural.museum,culturalcenter.museum,culture.museum,cuneo.it,cupcake.is,curitiba.br,cust.dev.thingdust.io,cust.disrec.thingdust.io,cust.prod.thingdust.io,cust.testing.thingdust.io,custom.metacentrum.cz,customer.enonic.io,customer.speedpartner.de,cv.ua,cy.eu.org,cya.gg,cyber.museum,cymru.museum,cyon.link,cyon.site,cz.eu.org,cz.it,czeladz.pl,czest.pl,d.bg,d.se,daegu.kr,daejeon.kr,dagestan.ru,dagestan.su,daigo.ibaraki.jp,daisen.akita.jp,daito.osaka.jp,daiwa.hiroshima.jp,dali.museum,dallas.museum,damnserver.com,daplie.me,dapps.earth,database.museum,date.fukushima.jp,date.hokkaido.jp,dattolocal.com,dattolocal.net,dattorelay.com,dattoweb.com,davvenjarga.no,davvenjárga.no,davvesiida.no,dazaifu.fukuoka.jp,dc.us,dd-dns.de,ddns.me,ddns.net,ddnsfree.com,ddnsgeek.com,ddnsking.com,ddnslive.com,ddnss.de,ddnss.org,ddr.museum,de.com,de.cool,de.eu.org,de.us,deatnu.no,debian.net,decorativearts.museum,dedyn.io,def.br,defense.tn,definima.io,definima.net,delaware.museum,dell-ogliastra.it,dellogliastra.it,delmenhorst.museum,democracia.bo,demon.nl,denmark.museum,dep.no,deporte.bo,depot.museum,desa.id,design.aero,design.museum,detroit.museum,dev-myqnapcloud.com,dev.static.land,development.run,devices.resinstaging.io,df.gov.br,df.leg.br,dgca.aero,dh.bytemark.co.uk,dielddanuorri.no,dinosaur.museum,discovery.museum,diskstation.eu,diskstation.me,diskstation.org,ditchyourip.com,divtasvuodna.no,divttasvuotna.no,dk.eu.org,dlugoleka.pl,dn.ua,dnepropetrovsk.ua,dni.us,dnipropetrovsk.ua,dnsalias.com,dnsalias.net,dnsalias.org,dnsdojo.com,dnsdojo.net,dnsdojo.org,dnsfor.me,dnshome.de,dnsiskinky.com,dnsking.ch,dnsup.net,dnsupdater.de,does-it.net,doesntexist.com,doesntexist.org,dolls.museum,dominic.ua,donetsk.ua,donna.no,donostia.museum,dontexist.com,dontexist.net,dontexist.org,doomdns.com,doomdns.org,doshi.yamanashi.jp,dovre.no,dp.ua,dr.na,dr.tr,drammen.no,drangedal.no,dray-dns.de,drayddns.com,draydns.de,dreamhosters.com,drobak.no,drud.io,drud.us,drøbak.no,dscloud.biz,dscloud.me,dscloud.mobi,dsmynas.com,dsmynas.net,dsmynas.org,dst.mi.us,duckdns.org,durham.museum,dvrcam.info,dvrdns.org,dy.fi,dyn-berlin.de,dyn-ip24.de,dyn-o-saur.com,dyn-vpn.de,dyn.cosidns.de,dyn.ddnss.de,dyn.home-webserver.de,dynalias.com,dynalias.net,dynalias.org,dynamic-dns.info,dynamisches-dns.de,dynathome.net,dyndns-at-home.com,dyndns-at-work.com,dyndns-blog.com,dyndns-free.com,dyndns-home.com,dyndns-ip.com,dyndns-mail.com,dyndns-office.com,dyndns-pics.com,dyndns-remote.com,dyndns-server.com,dyndns-web.com,dyndns-wiki.com,dyndns-work.com,dyndns.biz,dyndns.ddnss.de,dyndns.info,dyndns.org,dyndns.tv,dyndns.ws,dyndns1.de,dynns.com,dynserv.org,dynu.net,dynv6.net,dynvpn.de,dyroy.no,dyrøy.no,dønna.no,e.bg,e.se,e12.ve,e164.arpa,e4.cz,east-kazakhstan.su,eastafrica.museum,eastcoast.museum,eating-organic.net,eaton.mi.us,ebetsu.hokkaido.jp,ebina.kanagawa.jp,ebino.miyazaki.jp,ebiz.tw,echizen.fukui.jp,ecn.br,eco.br,ecologia.bo,economia.bo,ed.ao,ed.ci,ed.cr,ed.jp,ed.pw,edogawa.tokyo.jp,edu.ac,edu.af,edu.al,edu.ar,edu.au,edu.az,edu.ba,edu.bb,edu.bh,edu.bi,edu.bm,edu.bn,edu.bo,edu.br,edu.bs,edu.bt,edu.bz,edu.ci,edu.cn,edu.co,edu.cu,edu.cw,edu.dm,edu.do,edu.dz,edu.ec,edu.ee,edu.eg,edu.es,edu.et,edu.eu.org,edu.ge,edu.gh,edu.gi,edu.gl,edu.gn,edu.gp,edu.gr,edu.gt,edu.gu,edu.gy,edu.hk,edu.hn,edu.ht,edu.in,edu.iq,edu.is,edu.it,edu.jo,edu.kg,edu.ki,edu.km,edu.kn,edu.kp,edu.krd,edu.kw,edu.ky,edu.kz,edu.la,edu.lb,edu.lc,edu.lk,edu.lr,edu.ls,edu.lv,edu.ly,edu.me,edu.mg,edu.mk,edu.ml,edu.mn,edu.mo,edu.ms,edu.mt,edu.mv,edu.mw,edu.mx,edu.my,edu.mz,edu.ng,edu.ni,edu.nr,edu.om,edu.pa,edu.pe,edu.pf,edu.ph,edu.pk,edu.pl,edu.pn,edu.pr,edu.ps,edu.pt,edu.py,edu.qa,edu.rs,edu.ru,edu.rw,edu.sa,edu.sb,edu.sc,edu.sd,edu.sg,edu.sl,edu.sn,edu.st,edu.sv,edu.sy,edu.tj,edu.tm,edu.to,edu.tr,edu.tt,edu.tw,edu.ua,edu.uy,edu.vc,edu.ve,edu.vn,edu.vu,edu.ws,edu.za,edu.zm,education.museum,educational.museum,educator.aero,edunet.tn,ee.eu.org,egersund.no,egyptian.museum,ehime.jp,eid.no,eidfjord.no,eidsberg.no,eidskog.no,eidsvoll.no,eigersund.no,eiheiji.fukui.jp,eisenbahn.museum,ekloges.cy,elasticbeanstalk.com,elb.amazonaws.com,elb.amazonaws.com.cn,elblag.pl,elburg.museum,elk.pl,elvendrell.museum,elverum.no,emb.kw,embaixada.st,embetsu.hokkaido.jp,embroidery.museum,emergency.aero,emilia-romagna.it,emiliaromagna.it,emp.br,empresa.bo,emr.it,en.it,ena.gifu.jp,encyclopedic.museum,endofinternet.net,endofinternet.org,endoftheinternet.org,enebakk.no,eng.br,eng.pro,engerdal.no,engine.aero,engineer.aero,england.museum,eniwa.hokkaido.jp,enna.it,enonic.io,ens.tn,entertainment.aero,entomology.museum,environment.museum,environmentalconservation.museum,epilepsy.museum,equipment.aero,er,erimo.hokkaido.jp,erotica.hu,erotika.hu,es.eu.org,es.gov.br,es.kr,es.leg.br,esan.hokkaido.jp,esashi.hokkaido.jp,esp.br,essex.museum,est-a-la-maison.com,est-a-la-masion.com,est-le-patron.com,est-mon-blogueur.com,est.pr,estate.museum,etajima.hiroshima.jp,etc.br,ethnology.museum,eti.br,etne.no,etnedal.no,eu-1.evennode.com,eu-2.evennode.com,eu-3.evennode.com,eu-4.evennode.com,eu-central-1.elasticbeanstalk.com,eu-west-1.elasticbeanstalk.com,eu-west-2.elasticbeanstalk.com,eu-west-3.elasticbeanstalk.com,eu.com,eu.int,eu.meteorapp.com,eu.org,eun.eg,evenassi.no,evenes.no,evenášši.no,evje-og-hornnes.no,ex.futurecms.at,ex.ortsinfo.at,exchange.aero,exeter.museum,exhibition.museum,exnet.su,experts-comptables.fr,express.aero,f.bg,f.se,fam.pk,family.museum,familyds.com,familyds.net,familyds.org,fantasyleague.cc,far.br,farm.museum,farmequipment.museum,farmers.museum,farmstead.museum,farsund.no,fastly-terrarium.com,fastlylb.net,fastpanel.direct,fastvps-server.com,fauske.no,fbx-os.fr,fbxos.fr,fc.it,fe.it,fed.us,federation.aero,fedje.no,fedorainfracloud.org,fedorapeople.org,feira.br,fermo.it,ferrara.it,feste-ip.net,fet.no,fetsund.no,fg.it,fh.se,fhapp.xyz,fhs.no,fhsk.se,fhv.se,fi.cr,fi.eu.org,fi.it,fie.ee,field.museum,figueres.museum,filatelia.museum,filegear-au.me,filegear-de.me,filegear-gb.me,filegear-ie.me,filegear-jp.me,filegear-sg.me,filegear.me,film.hu,film.museum,fin.ec,fin.tn,fineart.museum,finearts.museum,finland.museum,finnoy.no,finnøy.no,firebaseapp.com,firenze.it,firewall-gateway.com,firewall-gateway.de,firewall-gateway.net,firm.co,firm.dk,firm.ht,firm.in,firm.nf,firm.ro,firm.ve,fitjar.no,fj,fj.cn,fjaler.no,fjell.no,fk,fl.us,fla.no,flakstad.no,flanders.museum,flatanger.no,flekkefjord.no,flesberg.no,flight.aero,flog.br,flora.no,florence.it,florida.museum,floripa.br,floro.no,florø.no,flt.cloud.muni.cz,flynnhosting.net,flynnhub.com,flå.no,fm.br,fm.it,fm.no,fnd.br,foggia.it,folkebibl.no,folldal.no,for-better.biz,for-more.biz,for-our.info,for-some.biz,for-the.biz,force.museum,forde.no,forgot.her.name,forgot.his.name,forli-cesena.it,forlicesena.it,forlì-cesena.it,forlìcesena.it,forsand.no,fortal.br,fortmissoula.museum,fortworth.museum,forum.hu,forumz.info,fosnes.no,fot.br,foundation.museum,foz.br,fr.eu.org,fr.it,frana.no,francaise.museum,frankfurt.museum,franziskaner.museum,fredrikstad.no,freebox-os.com,freebox-os.fr,freeboxos.com,freeboxos.fr,freeddns.org,freeddns.us,freedesktop.org,freemasonry.museum,freesite.host,freetls.fastly.net,frei.no,freiburg.museum,freight.aero,fribourg.museum,friuli-v-giulia.it,friuli-ve-giulia.it,friuli-vegiulia.it,friuli-venezia-giulia.it,friuli-veneziagiulia.it,friuli-vgiulia.it,friuliv-giulia.it,friulive-giulia.it,friulivegiulia.it,friulivenezia-giulia.it,friuliveneziagiulia.it,friulivgiulia.it,frog.museum,frogn.no,froland.no,from-ak.com,from-al.com,from-ar.com,from-az.net,from-ca.com,from-co.net,from-ct.com,from-dc.com,from-de.com,from-fl.com,from-ga.com,from-hi.com,from-ia.com,from-id.com,from-il.com,from-in.com,from-ks.com,from-ky.com,from-la.net,from-ma.com,from-md.com,from-me.org,from-mi.com,from-mn.com,from-mo.com,from-ms.com,from-mt.com,from-nc.com,from-nd.com,from-ne.com,from-nh.com,from-nj.com,from-nm.com,from-nv.com,from-ny.net,from-oh.com,from-ok.com,from-or.com,from-pa.com,from-pr.com,from-ri.com,from-sc.com,from-sd.com,from-tn.com,from-tx.com,from-ut.com,from-va.com,from-vt.com,from-wa.com,from-wi.com,from-wv.com,from-wy.com,from.hr,frosinone.it,frosta.no,froya.no,fræna.no,frøya.no,fst.br,ftpaccess.cc,fuchu.hiroshima.jp,fuchu.tokyo.jp,fuchu.toyama.jp,fudai.iwate.jp,fuefuki.yamanashi.jp,fuel.aero,fuettertdasnetz.de,fuji.shizuoka.jp,fujieda.shizuoka.jp,fujiidera.osaka.jp,fujikawa.shizuoka.jp,fujikawa.yamanashi.jp,fujikawaguchiko.yamanashi.jp,fujimi.nagano.jp,fujimi.saitama.jp,fujimino.saitama.jp,fujinomiya.shizuoka.jp,fujioka.gunma.jp,fujisato.akita.jp,fujisawa.iwate.jp,fujisawa.kanagawa.jp,fujishiro.ibaraki.jp,fujiyoshida.yamanashi.jp,fukagawa.hokkaido.jp,fukaya.saitama.jp,fukuchi.fukuoka.jp,fukuchiyama.kyoto.jp,fukudomi.saga.jp,fukui.fukui.jp,fukui.jp,fukumitsu.toyama.jp,fukuoka.jp,fukuroi.shizuoka.jp,fukusaki.hyogo.jp,fukushima.fukushima.jp,fukushima.hokkaido.jp,fukushima.jp,fukuyama.hiroshima.jp,funabashi.chiba.jp,funagata.yamagata.jp,funahashi.toyama.jp,fundacio.museum,fuoisku.no,fuossko.no,furano.hokkaido.jp,furniture.museum,furubira.hokkaido.jp,furudono.fukushima.jp,furukawa.miyagi.jp,fusa.no,fuso.aichi.jp,fussa.tokyo.jp,futaba.fukushima.jp,futsu.nagasaki.jp,futtsu.chiba.jp,futurecms.at,futurehosting.at,futuremailing.at,fvg.it,fylkesbibl.no,fyresdal.no,førde.no,g.bg,g.se,g12.br,ga.us,gaivuotna.no,gallery.museum,galsa.no,gamagori.aichi.jp,game-host.org,game-server.cc,game.tw,games.hu,gamo.shiga.jp,gamvik.no,gangaviika.no,gangwon.kr,garden.museum,gateway.museum,gaular.no,gausdal.no,gb.com,gb.net,gc.ca,gd.cn,gda.pl,gdansk.pl,gdynia.pl,ge.it,geek.nz,geekgalaxy.com,geelvinck.museum,geisei.kochi.jp,gemological.museum,gen.in,gen.mi.us,gen.nz,gen.tr,genkai.saga.jp,genoa.it,genova.it,geology.museum,geometre-expert.fr,georgia.museum,georgia.su,getmyip.com,gets-it.net,ggf.br,giehtavuoatna.no,giessen.museum,gifu.gifu.jp,gifu.jp,giize.com,gildeskal.no,gildeskål.no,ginan.gifu.jp,ginowan.okinawa.jp,ginoza.okinawa.jp,giske.no,git-repos.de,github.io,githubusercontent.com,gitlab.io,gjemnes.no,gjerdrum.no,gjerstad.no,gjesdal.no,gjovik.no,gjøvik.no,glas.museum,glass.museum,gleeze.com,gliding.aero,gliwice.pl,global.prod.fastly.net,global.ssl.fastly.net,glogow.pl,gloppen.no,glug.org.uk,gmina.pl,gniezno.pl,go-vip.co,go.ci,go.cr,go.dyndns.org,go.gov.br,go.id,go.it,go.jp,go.ke,go.kr,go.leg.br,go.pw,go.th,go.tj,go.tz,go.ug,gob.ar,gob.bo,gob.cl,gob.do,gob.ec,gob.es,gob.gt,gob.hn,gob.mx,gob.ni,gob.pa,gob.pe,gob.pk,gob.sv,gob.ve,gobo.wakayama.jp,godo.gifu.jp,goiania.br,goip.de,gojome.akita.jp,gok.pk,gokase.miyazaki.jp,gol.no,golffan.us,gon.pk,gonohe.aomori.jp,googleapis.com,googlecode.com,gop.pk,gorge.museum,gorizia.it,gorlice.pl,gos.pk,gose.nara.jp,gosen.niigata.jp,goshiki.hyogo.jp,gotdns.ch,gotdns.com,gotdns.org,gotemba.shizuoka.jp,goto.nagasaki.jp,gotpantheon.com,gotsu.shimane.jp,gouv.bj,gouv.ci,gouv.fr,gouv.ht,gouv.km,gouv.ml,gouv.rw,gouv.sn,gov.ac,gov.ae,gov.af,gov.al,gov.ar,gov.as,gov.au,gov.az,gov.ba,gov.bb,gov.bf,gov.bh,gov.bm,gov.bn,gov.br,gov.bs,gov.bt,gov.by,gov.bz,gov.cd,gov.cl,gov.cm,gov.cn,gov.co,gov.cu,gov.cx,gov.cy,gov.dm,gov.do,gov.dz,gov.ec,gov.ee,gov.eg,gov.et,gov.ge,gov.gh,gov.gi,gov.gn,gov.gr,gov.gu,gov.gy,gov.hk,gov.ie,gov.il,gov.in,gov.iq,gov.ir,gov.is,gov.it,gov.jo,gov.kg,gov.ki,gov.km,gov.kn,gov.kp,gov.kw,gov.ky,gov.kz,gov.la,gov.lb,gov.lc,gov.lk,gov.lr,gov.ls,gov.lt,gov.lv,gov.ly,gov.ma,gov.me,gov.mg,gov.mk,gov.ml,gov.mn,gov.mo,gov.mr,gov.ms,gov.mu,gov.mv,gov.mw,gov.my,gov.mz,gov.nc.tr,gov.ng,gov.nr,gov.om,gov.ph,gov.pk,gov.pl,gov.pn,gov.pr,gov.ps,gov.pt,gov.py,gov.qa,gov.rs,gov.ru,gov.rw,gov.sa,gov.sb,gov.sc,gov.sd,gov.sg,gov.sh,gov.sl,gov.st,gov.sx,gov.sy,gov.tj,gov.tl,gov.tm,gov.tn,gov.to,gov.tr,gov.tt,gov.tw,gov.ua,gov.uk,gov.vc,gov.ve,gov.vn,gov.ws,gov.za,gov.zm,gov.zw,government.aero,govt.nz,gr.com,gr.eu.org,gr.it,gr.jp,grajewo.pl,gran.no,grandrapids.museum,grane.no,granvin.no,gratangen.no,graz.museum,greta.fr,grimstad.no,griw.gov.pl,groks-the.info,groks-this.info,grondar.za,grong.no,grosseto.it,groundhandling.aero,group.aero,grozny.ru,grozny.su,grp.lk,gru.br,grue.no,gs.aa.no,gs.ah.no,gs.bu.no,gs.cn,gs.fm.no,gs.hl.no,gs.hm.no,gs.jan-mayen.no,gs.mr.no,gs.nl.no,gs.nt.no,gs.of.no,gs.ol.no,gs.oslo.no,gs.rl.no,gs.sf.no,gs.st.no,gs.svalbard.no,gs.tm.no,gs.tr.no,gs.va.no,gs.vf.no,gsm.pl,gu.us,guam.gu,gub.uy,guernsey.museum,gujo.gifu.jp,gulen.no,gunma.jp,guovdageaidnu.no,gushikami.okinawa.jp,gv.ao,gv.at,gwangju.kr,gwiddle.co.uk,gx.cn,gyeongbuk.kr,gyeonggi.kr,gyeongnam.kr,gyokuto.kumamoto.jp,gz.cn,gáivuotna.no,gálsá.no,gáŋgaviika.no,h.bg,h.se,ha.cn,ha.no,habikino.osaka.jp,habmer.no,haboro.hokkaido.jp,hachijo.tokyo.jp,hachinohe.aomori.jp,hachioji.tokyo.jp,hachirogata.akita.jp,hadano.kanagawa.jp,hadsel.no,haebaru.okinawa.jp,haga.tochigi.jp,hagebostad.no,hagi.yamaguchi.jp,haibara.shizuoka.jp,hakata.fukuoka.jp,hakodate.hokkaido.jp,hakone.kanagawa.jp,hakuba.nagano.jp,hakui.ishikawa.jp,hakusan.ishikawa.jp,halden.no,half.host,halloffame.museum,halsa.no,ham-radio-op.net,hamada.shimane.jp,hamamatsu.shizuoka.jp,hamar.no,hamaroy.no,hamatama.saga.jp,hamatonbetsu.hokkaido.jp,hamburg.museum,hammarfeasta.no,hammerfest.no,hamura.tokyo.jp,hanamaki.iwate.jp,hanamigawa.chiba.jp,hanawa.fukushima.jp,handa.aichi.jp,handson.museum,hanggliding.aero,hannan.osaka.jp,hanno.saitama.jp,hanyu.saitama.jp,hapmir.no,happou.akita.jp,hara.nagano.jp,haram.no,hareid.no,harima.hyogo.jp,harstad.no,harvestcelebration.museum,hasama.oita.jp,hasami.nagasaki.jp,hashbang.sh,hashikami.aomori.jp,hashima.gifu.jp,hashimoto.wakayama.jp,hasuda.saitama.jp,hasura-app.io,hasura.app,hasvik.no,hatogaya.saitama.jp,hatoyama.saitama.jp,hatsukaichi.hiroshima.jp,hattfjelldal.no,haugesund.no,hawaii.museum,hayakawa.yamanashi.jp,hayashima.okayama.jp,hazu.aichi.jp,hb.cldmail.ru,hb.cn,he.cn,health-carereform.com,health.museum,health.nz,health.vn,heguri.nara.jp,heimatunduhren.museum,hekinan.aichi.jp,hellas.museum,helsinki.museum,hembygdsforbund.museum,hemne.no,hemnes.no,hemsedal.no,hepforge.org,herad.no,here-for-more.info,heritage.museum,herokuapp.com,herokussl.com,heroy.more-og-romsdal.no,heroy.nordland.no,herøy.møre-og-romsdal.no,herøy.nordland.no,hi.cn,hi.us,hicam.net,hichiso.gifu.jp,hida.gifu.jp,hidaka.hokkaido.jp,hidaka.kochi.jp,hidaka.saitama.jp,hidaka.wakayama.jp,higashi.fukuoka.jp,higashi.fukushima.jp,higashi.okinawa.jp,higashiagatsuma.gunma.jp,higashichichibu.saitama.jp,higashihiroshima.hiroshima.jp,higashiizu.shizuoka.jp,higashiizumo.shimane.jp,higashikagawa.kagawa.jp,higashikagura.hokkaido.jp,higashikawa.hokkaido.jp,higashikurume.tokyo.jp,higashimatsushima.miyagi.jp,higashimatsuyama.saitama.jp,higashimurayama.tokyo.jp,higashinaruse.akita.jp,higashine.yamagata.jp,higashiomi.shiga.jp,higashiosaka.osaka.jp,higashishirakawa.gifu.jp,higashisumiyoshi.osaka.jp,higashitsuno.kochi.jp,higashiura.aichi.jp,higashiyama.kyoto.jp,higashiyamato.tokyo.jp,higashiyodogawa.osaka.jp,higashiyoshino.nara.jp,hiji.oita.jp,hikari.yamaguchi.jp,hikawa.shimane.jp,hikimi.shimane.jp,hikone.shiga.jp,himeji.hyogo.jp,himeshima.oita.jp,himi.toyama.jp,hino.tokyo.jp,hino.tottori.jp,hinode.tokyo.jp,hinohara.tokyo.jp,hioki.kagoshima.jp,hirado.nagasaki.jp,hiraizumi.iwate.jp,hirakata.osaka.jp,hiranai.aomori.jp,hirara.okinawa.jp,hirata.fukushima.jp,hiratsuka.kanagawa.jp,hiraya.nagano.jp,hirogawa.wakayama.jp,hirokawa.fukuoka.jp,hirono.fukushima.jp,hirono.iwate.jp,hiroo.hokkaido.jp,hirosaki.aomori.jp,hiroshima.jp,hisayama.fukuoka.jp,histoire.museum,historical.museum,historicalsociety.museum,historichouses.museum,historisch.museum,historisches.museum,history.museum,historyofscience.museum,hita.oita.jp,hitachi.ibaraki.jp,hitachinaka.ibaraki.jp,hitachiomiya.ibaraki.jp,hitachiota.ibaraki.jp,hitra.no,hizen.saga.jp,hjartdal.no,hjelmeland.no,hk.cn,hk.com,hk.org,hl.cn,hl.no,hm.no,hn.cn,hobby-site.com,hobby-site.org,hobol.no,hobøl.no,hof.no,hofu.yamaguchi.jp,hokkaido.jp,hokksund.no,hokuryu.hokkaido.jp,hokuto.hokkaido.jp,hokuto.yamanashi.jp,hol.no,hole.no,holmestrand.no,holtalen.no,holtålen.no,home-webserver.de,home.dyndns.org,homebuilt.aero,homedns.org,homeftp.net,homeftp.org,homeip.net,homelink.one,homelinux.com,homelinux.net,homelinux.org,homeoffice.gov.uk,homesecuritymac.com,homesecuritypc.com,homeunix.com,homeunix.net,homeunix.org,honai.ehime.jp,honbetsu.hokkaido.jp,honefoss.no,hongo.hiroshima.jp,honjo.akita.jp,honjo.saitama.jp,honjyo.akita.jp,hopto.me,hopto.org,hornindal.no,horokanai.hokkaido.jp,horology.museum,horonobe.hokkaido.jp,horten.no,hosting-cluster.nl,hosting.myjino.ru,hotel.hu,hotel.lk,hotel.tz,house.museum,hoyanger.no,hoylandet.no,hr.eu.org,hs.kr,hu.com,hu.eu.org,hu.net,huissier-justice.fr,humanities.museum,hurdal.no,hurum.no,hvaler.no,hyllestad.no,hyogo.jp,hyuga.miyazaki.jp,hzc.io,hábmer.no,hámmárfeasta.no,hápmir.no,hå.no,hægebostad.no,hønefoss.no,høyanger.no,høylandet.no,i.bg,i.ng,i.ph,i.se,i234.me,ia.us,iamallama.com,ibara.okayama.jp,ibaraki.ibaraki.jp,ibaraki.jp,ibaraki.osaka.jp,ibestad.no,ibigawa.gifu.jp,ic.gov.pl,ichiba.tokushima.jp,ichihara.chiba.jp,ichikai.tochigi.jp,ichikawa.chiba.jp,ichikawa.hyogo.jp,ichikawamisato.yamanashi.jp,ichinohe.iwate.jp,ichinomiya.aichi.jp,ichinomiya.chiba.jp,ichinoseki.iwate.jp,id.au,id.ir,id.lv,id.ly,id.us,ide.kyoto.jp,idf.il,idrett.no,idv.hk,idv.tw,ie.eu.org,if.ua,iglesias-carbonia.it,iglesiascarbonia.it,iheya.okinawa.jp,iida.nagano.jp,iide.yamagata.jp,iijima.nagano.jp,iitate.fukushima.jp,iiyama.nagano.jp,iizuka.fukuoka.jp,iizuna.nagano.jp,ikaruga.nara.jp,ikata.ehime.jp,ikawa.akita.jp,ikeda.fukui.jp,ikeda.gifu.jp,ikeda.hokkaido.jp,ikeda.nagano.jp,ikeda.osaka.jp,iki.fi,iki.nagasaki.jp,ikoma.nara.jp,ikusaka.nagano.jp,il.eu.org,il.us,ilawa.pl,illustration.museum,ilovecollege.info,im.it,imabari.ehime.jp,imageandsound.museum,imakane.hokkaido.jp,imari.saga.jp,imb.br,imizu.toyama.jp,imperia.it,in-addr.arpa,in-berlin.de,in-brb.de,in-butter.de,in-dsl.de,in-dsl.net,in-dsl.org,in-the-band.net,in-vpn.de,in-vpn.net,in-vpn.org,in.eu.org,in.futurecms.at,in.na,in.net,in.ni,in.rs,in.th,in.ua,in.us,ina.ibaraki.jp,ina.nagano.jp,ina.saitama.jp,inabe.mie.jp,inagawa.hyogo.jp,inagi.tokyo.jp,inami.toyama.jp,inami.wakayama.jp,inashiki.ibaraki.jp,inatsuki.fukuoka.jp,inawashiro.fukushima.jp,inazawa.aichi.jp,inc.hk,incheon.kr,ind.br,ind.gt,ind.in,ind.kw,ind.tn,inderoy.no,inderøy.no,indian.museum,indiana.museum,indianapolis.museum,indianmarket.museum,indigena.bo,industria.bo,ine.kyoto.jp,inf.br,inf.cu,inf.mk,inf.ua,info.at,info.au,info.az,info.bb,info.bo,info.co,info.cx,info.ec,info.et,info.gu,info.ht,info.hu,info.ke,info.ki,info.la,info.ls,info.mv,info.na,info.nf,info.ni,info.nr,info.pk,info.pl,info.pr,info.ro,info.sd,info.tn,info.tr,info.tt,info.tz,info.ve,info.vn,info.zm,ing.pa,ingatlan.hu,ino.kochi.jp,instantcloud.cn,insurance.aero,int.ar,int.az,int.bo,int.ci,int.co,int.eu.org,int.is,int.la,int.lk,int.mv,int.mw,int.ni,int.pt,int.ru,int.rw,int.tj,int.tt,int.ve,int.vn,intelligence.museum,interactive.museum,internet-dns.de,intl.tn,inuyama.aichi.jp,inzai.chiba.jp,ip6.arpa,ipifony.net,iraq.museum,iris.arpa,iron.museum,iruma.saitama.jp,is-a-anarchist.com,is-a-blogger.com,is-a-bookkeeper.com,is-a-bruinsfan.org,is-a-bulls-fan.com,is-a-candidate.org,is-a-caterer.com,is-a-celticsfan.org,is-a-chef.com,is-a-chef.net,is-a-chef.org,is-a-conservative.com,is-a-cpa.com,is-a-cubicle-slave.com,is-a-democrat.com,is-a-designer.com,is-a-doctor.com,is-a-financialadvisor.com,is-a-geek.com,is-a-geek.net,is-a-geek.org,is-a-green.com,is-a-guru.com,is-a-hard-worker.com,is-a-hunter.com,is-a-knight.org,is-a-landscaper.com,is-a-lawyer.com,is-a-liberal.com,is-a-libertarian.com,is-a-linux-user.org,is-a-llama.com,is-a-musician.com,is-a-nascarfan.com,is-a-nurse.com,is-a-painter.com,is-a-patsfan.org,is-a-personaltrainer.com,is-a-photographer.com,is-a-player.com,is-a-republican.com,is-a-rockstar.com,is-a-socialist.com,is-a-soxfan.org,is-a-student.com,is-a-teacher.com,is-a-techie.com,is-a-therapist.com,is-an-accountant.com,is-an-actor.com,is-an-actress.com,is-an-anarchist.com,is-an-artist.com,is-an-engineer.com,is-an-entertainer.com,is-by.us,is-certified.com,is-found.org,is-gone.com,is-into-anime.com,is-into-cars.com,is-into-cartoons.com,is-into-games.com,is-leet.com,is-lost.org,is-not-certified.com,is-saved.org,is-slick.com,is-uberleet.com,is-very-bad.org,is-very-evil.org,is-very-good.org,is-very-nice.org,is-very-sweet.org,is-with-theband.com,is.eu.org,is.gov.pl,is.it,isa-geek.com,isa-geek.net,isa-geek.org,isa-hockeynut.com,isa.kagoshima.jp,isa.us,isahaya.nagasaki.jp,ise.mie.jp,isehara.kanagawa.jp,isen.kagoshima.jp,isernia.it,isesaki.gunma.jp,ishigaki.okinawa.jp,ishikari.hokkaido.jp,ishikawa.fukushima.jp,ishikawa.jp,ishikawa.okinawa.jp,ishinomaki.miyagi.jp,isla.pr,isleofman.museum,isshiki.aichi.jp,issmarterthanyou.com,isteingeek.de,istmein.de,isumi.chiba.jp,it.ao,it.eu.org,itabashi.tokyo.jp,itako.ibaraki.jp,itakura.gunma.jp,itami.hyogo.jp,itano.tokushima.jp,itayanagi.aomori.jp,ito.shizuoka.jp,itoigawa.niigata.jp,itoman.okinawa.jp,its.me,ivano-frankivsk.ua,ivanovo.su,iveland.no,ivgu.no,iwade.wakayama.jp,iwafune.tochigi.jp,iwaizumi.iwate.jp,iwaki.fukushima.jp,iwakuni.yamaguchi.jp,iwakura.aichi.jp,iwama.ibaraki.jp,iwamizawa.hokkaido.jp,iwanai.hokkaido.jp,iwanuma.miyagi.jp,iwata.shizuoka.jp,iwate.iwate.jp,iwate.jp,iwatsuki.saitama.jp,iwi.nz,iyo.ehime.jp,iz.hr,izena.okinawa.jp,izu.shizuoka.jp,izumi.kagoshima.jp,izumi.osaka.jp,izumiotsu.osaka.jp,izumisano.osaka.jp,izumizaki.fukushima.jp,izumo.shimane.jp,izumozaki.niigata.jp,izunokuni.shizuoka.jp,j.bg,jab.br,jambyl.su,jamison.museum,jampa.br,jan-mayen.no,jaworzno.pl,jdevcloud.com,jdf.br,jefferson.museum,jeju.kr,jelenia-gora.pl,jeonbuk.kr,jeonnam.kr,jerusalem.museum,jessheim.no,jevnaker.no,jewelry.museum,jewish.museum,jewishart.museum,jfk.museum,jgora.pl,jinsekikogen.hiroshima.jp,jl.cn,jm,joboji.iwate.jp,jobs.tt,joetsu.niigata.jp,jogasz.hu,johana.toyama.jp,joinville.br,jolster.no,jondal.no,jor.br,jorpeland.no,joso.ibaraki.jp,journal.aero,journalism.museum,journalist.aero,joyo.kyoto.jp,jp.eu.org,jp.net,jpn.com,js.cn,js.org,judaica.museum,judygarland.museum,juedisches.museum,juif.museum,jur.pro,jus.br,jx.cn,jølster.no,jørpeland.no,k.bg,k.se,k12.ak.us,k12.al.us,k12.ar.us,k12.as.us,k12.az.us,k12.ca.us,k12.co.us,k12.ct.us,k12.dc.us,k12.de.us,k12.ec,k12.fl.us,k12.ga.us,k12.gu.us,k12.ia.us,k12.id.us,k12.il,k12.il.us,k12.in.us,k12.ks.us,k12.ky.us,k12.la.us,k12.ma.us,k12.md.us,k12.me.us,k12.mi.us,k12.mn.us,k12.mo.us,k12.ms.us,k12.mt.us,k12.nc.us,k12.ne.us,k12.nh.us,k12.nj.us,k12.nm.us,k12.nv.us,k12.ny.us,k12.oh.us,k12.ok.us,k12.or.us,k12.pa.us,k12.pr.us,k12.ri.us,k12.sc.us,k12.tn.us,k12.tr,k12.tx.us,k12.ut.us,k12.va.us,k12.vi,k12.vi.us,k12.vt.us,k12.wa.us,k12.wi.us,k12.wy.us,kadena.okinawa.jp,kadogawa.miyazaki.jp,kadoma.osaka.jp,kafjord.no,kaga.ishikawa.jp,kagami.kochi.jp,kagamiishi.fukushima.jp,kagamino.okayama.jp,kagawa.jp,kagoshima.jp,kagoshima.kagoshima.jp,kaho.fukuoka.jp,kahoku.ishikawa.jp,kahoku.yamagata.jp,kai.yamanashi.jp,kainan.tokushima.jp,kainan.wakayama.jp,kaisei.kanagawa.jp,kaita.hiroshima.jp,kaizuka.osaka.jp,kakamigahara.gifu.jp,kakegawa.shizuoka.jp,kakinoki.shimane.jp,kakogawa.hyogo.jp,kakuda.miyagi.jp,kalisz.pl,kalmykia.ru,kalmykia.su,kaluga.su,kamagaya.chiba.jp,kamaishi.iwate.jp,kamakura.kanagawa.jp,kameoka.kyoto.jp,kameyama.mie.jp,kami.kochi.jp,kami.miyagi.jp,kamiamakusa.kumamoto.jp,kamifurano.hokkaido.jp,kamigori.hyogo.jp,kamiichi.toyama.jp,kamiizumi.saitama.jp,kamijima.ehime.jp,kamikawa.hokkaido.jp,kamikawa.hyogo.jp,kamikawa.saitama.jp,kamikitayama.nara.jp,kamikoani.akita.jp,kamimine.saga.jp,kaminokawa.tochigi.jp,kaminoyama.yamagata.jp,kamioka.akita.jp,kamisato.saitama.jp,kamishihoro.hokkaido.jp,kamisu.ibaraki.jp,kamisunagawa.hokkaido.jp,kamitonda.wakayama.jp,kamitsue.oita.jp,kamo.kyoto.jp,kamo.niigata.jp,kamoenai.hokkaido.jp,kamogawa.chiba.jp,kanagawa.jp,kanan.osaka.jp,kanazawa.ishikawa.jp,kanegasaki.iwate.jp,kaneyama.fukushima.jp,kaneyama.yamagata.jp,kani.gifu.jp,kanie.aichi.jp,kanmaki.nara.jp,kanna.gunma.jp,kannami.shizuoka.jp,kanonji.kagawa.jp,kanoya.kagoshima.jp,kanra.gunma.jp,kanuma.tochigi.jp,kanzaki.saga.jp,karacol.su,karaganda.su,karasjohka.no,karasjok.no,karasuyama.tochigi.jp,karate.museum,karatsu.saga.jp,karelia.su,karikatur.museum,kariwa.niigata.jp,kariya.aichi.jp,karlsoy.no,karmoy.no,karmøy.no,karpacz.pl,kartuzy.pl,karuizawa.nagano.jp,karumai.iwate.jp,kasahara.gifu.jp,kasai.hyogo.jp,kasama.ibaraki.jp,kasamatsu.gifu.jp,kasaoka.okayama.jp,kashiba.nara.jp,kashihara.nara.jp,kashima.ibaraki.jp,kashima.saga.jp,kashiwa.chiba.jp,kashiwara.osaka.jp,kashiwazaki.niigata.jp,kasuga.fukuoka.jp,kasuga.hyogo.jp,kasugai.aichi.jp,kasukabe.saitama.jp,kasumigaura.ibaraki.jp,kasuya.fukuoka.jp,kaszuby.pl,katagami.akita.jp,katano.osaka.jp,katashina.gunma.jp,katori.chiba.jp,katowice.pl,katsuragi.nara.jp,katsuragi.wakayama.jp,katsushika.tokyo.jp,katsuura.chiba.jp,katsuyama.fukui.jp,kautokeino.no,kawaba.gunma.jp,kawachinagano.osaka.jp,kawagoe.mie.jp,kawagoe.saitama.jp,kawaguchi.saitama.jp,kawahara.tottori.jp,kawai.iwate.jp,kawai.nara.jp,kawajima.saitama.jp,kawakami.nagano.jp,kawakami.nara.jp,kawakita.ishikawa.jp,kawamata.fukushima.jp,kawaminami.miyazaki.jp,kawanabe.kagoshima.jp,kawanehon.shizuoka.jp,kawanishi.hyogo.jp,kawanishi.nara.jp,kawanishi.yamagata.jp,kawara.fukuoka.jp,kawasaki.jp,kawasaki.miyagi.jp,kawatana.nagasaki.jp,kawaue.gifu.jp,kawazu.shizuoka.jp,kayabe.hokkaido.jp,kazimierz-dolny.pl,kazo.saitama.jp,kazuno.akita.jp,keisen.fukuoka.jp,kembuchi.hokkaido.jp,kep.tr,kepno.pl,ketrzyn.pl,keymachine.de,kg.kr,kh,kh.ua,khakassia.su,kharkiv.ua,kharkov.ua,kherson.ua,khmelnitskiy.ua,khmelnytskyi.ua,kibichuo.okayama.jp,kicks-ass.net,kicks-ass.org,kids.museum,kids.us,kiev.ua,kiho.mie.jp,kihoku.ehime.jp,kijo.miyazaki.jp,kikonai.hokkaido.jp,kikuchi.kumamoto.jp,kikugawa.shizuoka.jp,kimino.wakayama.jp,kimitsu.chiba.jp,kimobetsu.hokkaido.jp,kin.okinawa.jp,kinko.kagoshima.jp,kinokawa.wakayama.jp,kira.aichi.jp,kirkenes.no,kirovograd.ua,kiryu.gunma.jp,kisarazu.chiba.jp,kishiwada.osaka.jp,kiso.nagano.jp,kisofukushima.nagano.jp,kisosaki.mie.jp,kita.kyoto.jp,kita.osaka.jp,kita.tokyo.jp,kitaaiki.nagano.jp,kitaakita.akita.jp,kitadaito.okinawa.jp,kitagata.gifu.jp,kitagata.saga.jp,kitagawa.kochi.jp,kitagawa.miyazaki.jp,kitahata.saga.jp,kitahiroshima.hokkaido.jp,kitakami.iwate.jp,kitakata.fukushima.jp,kitakata.miyazaki.jp,kitakyushu.jp,kitami.hokkaido.jp,kitamoto.saitama.jp,kitanakagusuku.okinawa.jp,kitashiobara.fukushima.jp,kitaura.miyazaki.jp,kitayama.wakayama.jp,kiwa.mie.jp,kiwi.nz,kiyama.saga.jp,kiyokawa.kanagawa.jp,kiyosato.hokkaido.jp,kiyose.tokyo.jp,kiyosu.aichi.jp,kizu.kyoto.jp,klabu.no,klepp.no,klodzko.pl,klæbu.no,km.ua,kmpsp.gov.pl,knightpoint.systems,knowsitall.info,knx-server.net,kobayashi.miyazaki.jp,kobe.jp,kobierzyce.pl,kochi.jp,kochi.kochi.jp,kodaira.tokyo.jp,koebenhavn.museum,koeln.museum,kofu.yamanashi.jp,koga.fukuoka.jp,koga.ibaraki.jp,koganei.tokyo.jp,koge.tottori.jp,koka.shiga.jp,kokonoe.oita.jp,kokubunji.tokyo.jp,kolobrzeg.pl,komae.tokyo.jp,komagane.nagano.jp,komaki.aichi.jp,komatsu.ishikawa.jp,komatsushima.tokushima.jp,komforb.se,kommunalforbund.se,kommune.no,komono.mie.jp,komoro.nagano.jp,komvux.se,konan.aichi.jp,konan.shiga.jp,kongsberg.no,kongsvinger.no,konin.pl,konskowola.pl,konsulat.gov.pl,konyvelo.hu,koori.fukushima.jp,kopervik.no,koriyama.fukushima.jp,koryo.nara.jp,kosai.shizuoka.jp,kosaka.akita.jp,kosei.shiga.jp,koshigaya.saitama.jp,koshimizu.hokkaido.jp,koshu.yamanashi.jp,kosuge.yamanashi.jp,kota.aichi.jp,koto.shiga.jp,koto.tokyo.jp,kotohira.kagawa.jp,kotoura.tottori.jp,kouhoku.saga.jp,kounosu.saitama.jp,kouyama.kagoshima.jp,kouzushima.tokyo.jp,koya.wakayama.jp,koza.wakayama.jp,kozagawa.wakayama.jp,kozaki.chiba.jp,kozow.com,kppsp.gov.pl,kr.com,kr.eu.org,kr.it,kr.ua,kraanghke.no,kragero.no,kragerø.no,krakow.pl,krasnik.pl,krasnodar.su,kristiansand.no,kristiansund.no,krodsherad.no,krokstadelva.no,krym.ua,kråanghke.no,krødsherad.no,ks.ua,ks.us,kuchinotsu.nagasaki.jp,kudamatsu.yamaguchi.jp,kudoyama.wakayama.jp,kui.hiroshima.jp,kuji.iwate.jp,kuju.oita.jp,kujukuri.chiba.jp,kuki.saitama.jp,kumagaya.saitama.jp,kumakogen.ehime.jp,kumamoto.jp,kumamoto.kumamoto.jp,kumano.hiroshima.jp,kumano.mie.jp,kumatori.osaka.jp,kumejima.okinawa.jp,kumenan.okayama.jp,kumiyama.kyoto.jp,kunden.ortsinfo.at,kunigami.okinawa.jp,kunimi.fukushima.jp,kunisaki.oita.jp,kunitachi.tokyo.jp,kunitomi.miyazaki.jp,kunneppu.hokkaido.jp,kunohe.iwate.jp,kunst.museum,kunstsammlung.museum,kunstunddesign.museum,kurashiki.okayama.jp,kurate.fukuoka.jp,kure.hiroshima.jp,kurgan.su,kuriyama.hokkaido.jp,kurobe.toyama.jp,kurogi.fukuoka.jp,kuroishi.aomori.jp,kuroiso.tochigi.jp,kuromatsunai.hokkaido.jp,kurotaki.nara.jp,kurume.fukuoka.jp,kusatsu.gunma.jp,kusatsu.shiga.jp,kushima.miyazaki.jp,kushimoto.wakayama.jp,kushiro.hokkaido.jp,kustanai.ru,kustanai.su,kusu.oita.jp,kutchan.hokkaido.jp,kutno.pl,kuwana.mie.jp,kuzumaki.iwate.jp,kv.ua,kvafjord.no,kvalsund.no,kvam.no,kvanangen.no,kvinesdal.no,kvinnherad.no,kviteseid.no,kvitsoy.no,kvitsøy.no,kvæfjord.no,kvænangen.no,kwp.gov.pl,kwpsp.gov.pl,ky.us,kyiv.ua,kyonan.chiba.jp,kyotamba.kyoto.jp,kyotanabe.kyoto.jp,kyotango.kyoto.jp,kyoto.jp,kyowa.akita.jp,kyowa.hokkaido.jp,kyuragi.saga.jp,kárášjohka.no,kåfjord.no,l-o-g-i-n.de,l.bg,l.se,la-spezia.it,la.us,laakesvuemie.no,labor.museum,labour.museum,lahppi.no,lajolla.museum,lakas.hu,lanbib.se,lancashire.museum,land-4-sale.us,landes.museum,landing.myjino.ru,langevag.no,langevåg.no,lans.museum,lapy.pl,laquila.it,lardal.no,larsson.museum,larvik.no,laspezia.it,latina.it,lavagis.no,lavangen.no,law.pro,law.za,laz.it,lazio.it,lc.it,lcube-server.de,le.it,leadpages.co,leangaviika.no,leasing.aero,leaŋgaviika.no,lebesby.no,lebork.pl,lebtimnetz.de,lecce.it,lecco.it,leczna.pl,leg.br,legnica.pl,leikanger.no,leirfjord.no,leirvik.no,leitungsen.de,leka.no,leksvik.no,lel.br,lenug.su,lenvik.no,lerdal.no,lesja.no,levanger.no,lewismiller.museum,lezajsk.pl,lg.jp,lg.ua,li.it,lib.ak.us,lib.al.us,lib.ar.us,lib.as.us,lib.az.us,lib.ca.us,lib.co.us,lib.ct.us,lib.dc.us,lib.de.us,lib.ee,lib.fl.us,lib.ga.us,lib.gu.us,lib.hi.us,lib.ia.us,lib.id.us,lib.il.us,lib.in.us,lib.ks.us,lib.ky.us,lib.la.us,lib.ma.us,lib.md.us,lib.me.us,lib.mi.us,lib.mn.us,lib.mo.us,lib.ms.us,lib.mt.us,lib.nc.us,lib.nd.us,lib.ne.us,lib.nh.us,lib.nj.us,lib.nm.us,lib.nv.us,lib.ny.us,lib.oh.us,lib.ok.us,lib.or.us,lib.pa.us,lib.pr.us,lib.ri.us,lib.sc.us,lib.sd.us,lib.tn.us,lib.tx.us,lib.ut.us,lib.va.us,lib.vi.us,lib.vt.us,lib.wa.us,lib.wi.us,lib.wy.us,lier.no,lierne.no,lig.it,liguria.it,likes-pie.com,likescandy.com,lillehammer.no,lillesand.no,lima-city.at,lima-city.ch,lima-city.de,lima-city.rocks,lima.zone,limanowa.pl,lincoln.museum,lindas.no,lindesnes.no,lindås.no,linkitools.space,linkyard-cloud.ch,linkyard.cloud,linz.museum,living.museum,livinghistory.museum,livorno.it,ln.cn,lo.it,loabat.no,loabát.no,localhistory.museum,localhost.daplie.me,lodi.it,lodingen.no,loginto.me,logistics.aero,logoip.com,logoip.de,lom.it,lom.no,lombardia.it,lombardy.it,lomza.pl,london.museum,londrina.br,loppa.no,lorenskog.no,losangeles.museum,loseyourip.com,loten.no,louvre.museum,lowicz.pl,loyalist.museum,lpages.co,lpusercontent.com,lt.eu.org,lt.it,lt.ua,ltd.co.im,ltd.cy,ltd.gi,ltd.hk,ltd.lk,ltd.ua,ltd.uk,lu.eu.org,lu.it,lubartow.pl,lubin.pl,lublin.pl,lucania.it,lucca.it,lucerne.museum,lug.org.uk,lugansk.ua,lugs.org.uk,lukow.pl,lund.no,lunner.no,luroy.no,lurøy.no,luster.no,lutsk.ua,luxembourg.museum,luzern.museum,lv.eu.org,lv.ua,lviv.ua,lyngdal.no,lyngen.no,láhppi.no,läns.museum,lærdal.no,lødingen.no,lørenskog.no,løten.no,m.bg,m.se,ma.gov.br,ma.leg.br,ma.us,macapa.br,maceio.br,macerata.it,machida.tokyo.jp,mad.museum,madrid.museum,maebashi.gunma.jp,magazine.aero,magentosite.cloud,maibara.shiga.jp,mail.pl,maintenance.aero,maizuru.kyoto.jp,makinohara.shizuoka.jp,makurazaki.kagoshima.jp,malatvuopmi.no,malbork.pl,mallorca.museum,malopolska.pl,malselv.no,malvik.no,mamurogawa.yamagata.jp,manaus.br,manchester.museum,mandal.no,mangyshlak.su,maniwa.okayama.jp,manno.kagawa.jp,mansion.museum,mansions.museum,mantova.it,manx.museum,maori.nz,map.fastly.net,map.fastlylb.net,mar.it,marburg.museum,marche.it,marine.ru,maringa.br,maritime.museum,maritimo.museum,marker.no,marnardal.no,marugame.kagawa.jp,marumori.miyagi.jp,maryland.museum,marylhurst.museum,masaki.ehime.jp,masfjorden.no,mashike.hokkaido.jp,mashiki.kumamoto.jp,mashiko.tochigi.jp,masoy.no,massa-carrara.it,massacarrara.it,masuda.shimane.jp,mat.br,matera.it,matsubara.osaka.jp,matsubushi.saitama.jp,matsuda.kanagawa.jp,matsudo.chiba.jp,matsue.shimane.jp,matsukawa.nagano.jp,matsumae.hokkaido.jp,matsumoto.kagoshima.jp,matsumoto.nagano.jp,matsuno.ehime.jp,matsusaka.mie.jp,matsushige.tokushima.jp,matsushima.miyagi.jp,matsuura.nagasaki.jp,matsuyama.ehime.jp,matsuzaki.shizuoka.jp,matta-varjjat.no,mayfirst.info,mayfirst.org,mazowsze.pl,mazury.pl,mb.ca,mb.it,mc.eu.org,mc.it,md.ci,md.us,me.eu.org,me.it,me.ke,me.tz,me.uk,me.us,med.br,med.ec,med.ee,med.ht,med.ly,med.om,med.pa,med.pl,med.pro,med.sa,med.sd,medecin.fr,medecin.km,media.aero,media.hu,media.museum,media.pl,medical.museum,medicina.bo,medio-campidano.it,mediocampidano.it,medizinhistorisches.museum,meeres.museum,meguro.tokyo.jp,mein-iserv.de,mein-vigor.de,meiwa.gunma.jp,meiwa.mie.jp,meland.no,meldal.no,melhus.no,meloy.no,meløy.no,memorial.museum,memset.net,meraker.no,merseine.nu,meråker.no,mesaverde.museum,messina.it,meteorapp.com,mex.com,mg.gov.br,mg.leg.br,mi.it,mi.th,mi.us,miasa.nagano.jp,miasta.pl,mibu.tochigi.jp,michigan.museum,microlight.aero,midatlantic.museum,midori.chiba.jp,midori.gunma.jp,midsund.no,midtre-gauldal.no,mie.jp,mielec.pl,mielno.pl,mifune.kumamoto.jp,mihama.aichi.jp,mihama.chiba.jp,mihama.fukui.jp,mihama.mie.jp,mihama.wakayama.jp,mihara.hiroshima.jp,mihara.kochi.jp,miharu.fukushima.jp,miho.ibaraki.jp,mikasa.hokkaido.jp,mikawa.yamagata.jp,miki.hyogo.jp,mil.ac,mil.ae,mil.al,mil.ar,mil.az,mil.ba,mil.bo,mil.br,mil.by,mil.cl,mil.cn,mil.co,mil.do,mil.ec,mil.eg,mil.ge,mil.gh,mil.gt,mil.hn,mil.id,mil.in,mil.iq,mil.jo,mil.kg,mil.km,mil.kr,mil.kz,mil.lv,mil.mg,mil.mv,mil.my,mil.mz,mil.ng,mil.ni,mil.no,mil.nz,mil.pe,mil.ph,mil.pl,mil.py,mil.qa,mil.ru,mil.rw,mil.sh,mil.st,mil.sy,mil.tj,mil.tm,mil.to,mil.tr,mil.tw,mil.tz,mil.uy,mil.vc,mil.ve,mil.za,mil.zm,mil.zw,milan.it,milano.it,military.museum,mill.museum,mima.tokushima.jp,mimata.miyazaki.jp,minakami.gunma.jp,minamata.kumamoto.jp,minami-alps.yamanashi.jp,minami.fukuoka.jp,minami.kyoto.jp,minami.tokushima.jp,minamiaiki.nagano.jp,minamiashigara.kanagawa.jp,minamiawaji.hyogo.jp,minamiboso.chiba.jp,minamidaito.okinawa.jp,minamiechizen.fukui.jp,minamifurano.hokkaido.jp,minamiise.mie.jp,minamiizu.shizuoka.jp,minamimaki.nagano.jp,minamiminowa.nagano.jp,minamioguni.kumamoto.jp,minamisanriku.miyagi.jp,minamitane.kagoshima.jp,minamiuonuma.niigata.jp,minamiyamashiro.kyoto.jp,minano.saitama.jp,minato.osaka.jp,minato.tokyo.jp,mincom.tn,mine.nu,miners.museum,mining.museum,miniserver.com,minnesota.museum,mino.gifu.jp,minobu.yamanashi.jp,minoh.osaka.jp,minokamo.gifu.jp,minowa.nagano.jp,misaki.okayama.jp,misaki.osaka.jp,misasa.tottori.jp,misato.akita.jp,misato.miyagi.jp,misato.saitama.jp,misato.shimane.jp,misato.wakayama.jp,misawa.aomori.jp,misconfused.org,mishima.fukushima.jp,mishima.shizuoka.jp,missile.museum,missoula.museum,misugi.mie.jp,mitaka.tokyo.jp,mitake.gifu.jp,mitane.akita.jp,mito.ibaraki.jp,mitou.yamaguchi.jp,mitoyo.kagawa.jp,mitsue.nara.jp,mitsuke.niigata.jp,miura.kanagawa.jp,miyada.nagano.jp,miyagi.jp,miyake.nara.jp,miyako.fukuoka.jp,miyako.iwate.jp,miyakonojo.miyazaki.jp,miyama.fukuoka.jp,miyama.mie.jp,miyashiro.saitama.jp,miyawaka.fukuoka.jp,miyazaki.jp,miyazaki.miyazaki.jp,miyazu.kyoto.jp,miyoshi.aichi.jp,miyoshi.hiroshima.jp,miyoshi.saitama.jp,miyoshi.tokushima.jp,miyota.nagano.jp,mizuho.tokyo.jp,mizumaki.fukuoka.jp,mizunami.gifu.jp,mizusawa.iwate.jp,mjondalen.no,mjøndalen.no,mk.eu.org,mk.ua,mlbfan.org,mm,mmafan.biz,mn.it,mn.us,mo-i-rana.no,mo.cn,mo.it,mo.us,moareke.no,mobara.chiba.jp,mobi.gp,mobi.ke,mobi.na,mobi.ng,mobi.tt,mobi.tz,mochizuki.nagano.jp,mod.gi,modalen.no,modelling.aero,modena.it,modern.museum,modum.no,moka.tochigi.jp,mol.it,molde.no,molise.it,moma.museum,mombetsu.hokkaido.jp,money.museum,monmouth.museum,monticello.museum,montreal.museum,monza-brianza.it,monza-e-della-brianza.it,monza.it,monzabrianza.it,monzaebrianza.it,monzaedellabrianza.it,moonscale.net,mordovia.ru,mordovia.su,morena.br,moriguchi.osaka.jp,morimachi.shizuoka.jp,morioka.iwate.jp,moriya.ibaraki.jp,moriyama.shiga.jp,moriyoshi.akita.jp,morotsuka.miyazaki.jp,moroyama.saitama.jp,moscow.museum,moseushi.hokkaido.jp,mosjoen.no,mosjøen.no,moskenes.no,moss.no,mosvik.no,motegi.tochigi.jp,motobu.okinawa.jp,motorcycle.museum,motosu.gifu.jp,motoyama.kochi.jp,movimiento.bo,mozilla-iot.org,moåreke.no,mp.br,mr.no,mragowo.pl,ms.gov.br,ms.it,ms.kr,ms.leg.br,ms.us,msk.ru,msk.su,mt.eu.org,mt.gov.br,mt.it,mt.leg.br,mt.us,muenchen.museum,muenster.museum,mugi.tokushima.jp,muika.niigata.jp,mukawa.hokkaido.jp,muko.kyoto.jp,mulhouse.museum,munakata.fukuoka.jp,muncie.museum,muni.il,muosat.no,muosát.no,mup.gov.pl,murakami.niigata.jp,murata.miyagi.jp,murayama.yamagata.jp,murmansk.su,muroran.hokkaido.jp,muroto.kochi.jp,mus.br,mus.mi.us,musashimurayama.tokyo.jp,musashino.tokyo.jp,museet.museum,museum.mv,museum.mw,museum.no,museum.om,museum.tt,museumcenter.museum,museumvereniging.museum,music.museum,musica.ar,musica.bo,mutsu.aomori.jp,mutsuzawa.chiba.jp,mw.gov.pl,mx.na,my-firewall.org,my-gateway.de,my-router.de,my-vigor.de,my-wan.de,my.eu.org,my.id,myactivedirectory.com,myasustor.com,mycd.eu,mydatto.com,mydatto.net,myddns.rocks,mydissent.net,mydobiss.com,mydrobo.com,myds.me,myeffect.net,myfirewall.org,myfritz.net,myftp.biz,myftp.org,myhome-server.de,myiphost.com,myjino.ru,mykolaiv.ua,mymailer.com.tw,mymediapc.net,myoko.niigata.jp,mypep.link,mypets.ws,myphotos.cc,mypi.co,mypsx.net,myqnapcloud.com,myravendb.com,mysecuritycamera.com,mysecuritycamera.net,mysecuritycamera.org,myshopblocks.com,mytis.ru,mytuleap.com,myvnc.com,mywire.org,málatvuopmi.no,mátta-várjjat.no,målselv.no,måsøy.no,māori.nz,n.bg,n.se,n4t.co,na.it,naamesjevuemie.no,nabari.mie.jp,nachikatsuura.wakayama.jp,nagahama.shiga.jp,nagai.yamagata.jp,nagano.jp,nagano.nagano.jp,naganohara.gunma.jp,nagaoka.niigata.jp,nagaokakyo.kyoto.jp,nagara.chiba.jp,nagareyama.chiba.jp,nagasaki.jp,nagasaki.nagasaki.jp,nagasu.kumamoto.jp,nagato.yamaguchi.jp,nagatoro.saitama.jp,nagawa.nagano.jp,nagi.okayama.jp,nagiso.nagano.jp,nago.okinawa.jp,nagoya.jp,naha.okinawa.jp,nahari.kochi.jp,naie.hokkaido.jp,naka.hiroshima.jp,naka.ibaraki.jp,nakadomari.aomori.jp,nakagawa.fukuoka.jp,nakagawa.hokkaido.jp,nakagawa.nagano.jp,nakagawa.tokushima.jp,nakagusuku.okinawa.jp,nakagyo.kyoto.jp,nakai.kanagawa.jp,nakama.fukuoka.jp,nakamichi.yamanashi.jp,nakamura.kochi.jp,nakaniikawa.toyama.jp,nakano.nagano.jp,nakano.tokyo.jp,nakanojo.gunma.jp,nakanoto.ishikawa.jp,nakasatsunai.hokkaido.jp,nakatane.kagoshima.jp,nakatombetsu.hokkaido.jp,nakatsugawa.gifu.jp,nakayama.yamagata.jp,nakijin.okinawa.jp,naklo.pl,nalchik.ru,nalchik.su,namdalseid.no,name.az,name.cy,name.eg,name.et,name.hr,name.jo,name.mk,name.mv,name.my,name.na,name.ng,name.pr,name.qa,name.tj,name.tr,name.tt,name.vn,namegata.ibaraki.jp,namegawa.saitama.jp,namerikawa.toyama.jp,namie.fukushima.jp,namikata.ehime.jp,namsos.no,namsskogan.no,nanae.hokkaido.jp,nanao.ishikawa.jp,nanbu.tottori.jp,nanbu.yamanashi.jp,nango.fukushima.jp,nanjo.okinawa.jp,nankoku.kochi.jp,nanmoku.gunma.jp,nannestad.no,nanporo.hokkaido.jp,nantan.kyoto.jp,nanto.toyama.jp,nanyo.yamagata.jp,naoshima.kagawa.jp,naples.it,napoli.it,nara.jp,nara.nara.jp,narashino.chiba.jp,narita.chiba.jp,naroy.no,narusawa.yamanashi.jp,naruto.tokushima.jp,narviika.no,narvik.no,nasu.tochigi.jp,nasushiobara.tochigi.jp,nat.tn,natal.br,national.museum,nationalfirearms.museum,nationalheritage.museum,nativeamerican.museum,natori.miyagi.jp,natural.bo,naturalhistory.museum,naturalhistorymuseum.museum,naturalsciences.museum,naturbruksgymn.se,nature.museum,naturhistorisches.museum,natuurwetenschappen.museum,naumburg.museum,naustdal.no,naval.museum,navigation.aero,navoi.su,navuotna.no,nayoro.hokkaido.jp,nb.ca,nc.tr,nc.us,nd.us,ne.jp,ne.ke,ne.kr,ne.pw,ne.tz,ne.ug,ne.us,neat-url.com,nebraska.museum,nedre-eiker.no,nemuro.hokkaido.jp,nerdpol.ovh,nerima.tokyo.jp,nes.akershus.no,nes.buskerud.no,nesna.no,nesodden.no,nesoddtangen.no,nesseby.no,nesset.no,net-freaks.com,net.ac,net.ae,net.af,net.ag,net.ai,net.al,net.ar,net.au,net.az,net.ba,net.bb,net.bh,net.bm,net.bn,net.bo,net.br,net.bs,net.bt,net.bz,net.ci,net.cm,net.cn,net.co,net.cu,net.cw,net.cy,net.dm,net.do,net.dz,net.ec,net.eg,net.et,net.eu.org,net.ge,net.gg,net.gl,net.gn,net.gp,net.gr,net.gt,net.gu,net.gy,net.hk,net.hn,net.ht,net.id,net.il,net.im,net.in,net.iq,net.ir,net.is,net.je,net.jo,net.kg,net.ki,net.kn,net.kw,net.ky,net.kz,net.la,net.lb,net.lc,net.lk,net.lr,net.ls,net.lv,net.ly,net.ma,net.me,net.mk,net.ml,net.mo,net.ms,net.mt,net.mu,net.mv,net.mw,net.mx,net.my,net.mz,net.nf,net.ng,net.ni,net.nr,net.nz,net.om,net.pa,net.pe,net.ph,net.pk,net.pl,net.pn,net.pr,net.ps,net.pt,net.py,net.qa,net.ru,net.rw,net.sa,net.sb,net.sc,net.sd,net.sg,net.sh,net.sl,net.so,net.st,net.sy,net.th,net.tj,net.tm,net.tn,net.to,net.tr,net.tt,net.tw,net.ua,net.uk,net.uy,net.uz,net.vc,net.ve,net.vi,net.vn,net.vu,net.ws,net.za,net.zm,netlify.com,neues.museum,newhampshire.museum,newjersey.museum,newmexico.museum,newport.museum,news.hu,newspaper.museum,newyork.museum,neyagawa.osaka.jp,nf.ca,nflfan.org,nfshost.com,ng.eu.org,ngo.lk,ngo.ph,ngo.za,ngrok.io,nh-serv.co.uk,nh.us,nhlfan.net,nhs.uk,nic.in,nic.tj,nichinan.miyazaki.jp,nichinan.tottori.jp,nid.io,niepce.museum,nieruchomosci.pl,niigata.jp,niigata.niigata.jp,niihama.ehime.jp,niikappu.hokkaido.jp,niimi.okayama.jp,niiza.saitama.jp,nikaho.akita.jp,niki.hokkaido.jp,nikko.tochigi.jp,nikolaev.ua,ninohe.iwate.jp,ninomiya.kanagawa.jp,nirasaki.yamanashi.jp,nis.za,nishi.fukuoka.jp,nishi.osaka.jp,nishiaizu.fukushima.jp,nishiarita.saga.jp,nishiawakura.okayama.jp,nishiazai.shiga.jp,nishigo.fukushima.jp,nishihara.kumamoto.jp,nishihara.okinawa.jp,nishiizu.shizuoka.jp,nishikata.tochigi.jp,nishikatsura.yamanashi.jp,nishikawa.yamagata.jp,nishimera.miyazaki.jp,nishinomiya.hyogo.jp,nishinoomote.kagoshima.jp,nishinoshima.shimane.jp,nishio.aichi.jp,nishiokoppe.hokkaido.jp,nishitosa.kochi.jp,nishiwaki.hyogo.jp,nissedal.no,nisshin.aichi.jp,niteroi.br,nittedal.no,niyodogawa.kochi.jp,nj.us,nl.ca,nl.eu.org,nl.no,nm.cn,nm.us,no-ip.biz,no-ip.ca,no-ip.co.uk,no-ip.info,no-ip.net,no-ip.org,no.com,no.eu.org,no.it,nobeoka.miyazaki.jp,noboribetsu.hokkaido.jp,noda.chiba.jp,noda.iwate.jp,nodum.co,nodum.io,nogata.fukuoka.jp,nogi.tochigi.jp,noheji.aomori.jp,noho.st,nohost.me,noip.me,noip.us,nom.ad,nom.ae,nom.af,nom.ag,nom.ai,nom.al,nom.br,nom.cl,nom.co,nom.es,nom.fr,nom.gd,nom.ge,nom.gl,nom.gt,nom.hn,nom.im,nom.ke,nom.km,nom.li,nom.mg,nom.mk,nom.nc,nom.ni,nom.nu,nom.pa,nom.pe,nom.pl,nom.pw,nom.qa,nom.re,nom.ro,nom.rs,nom.si,nom.st,nom.tj,nom.tm,nom.ug,nom.uy,nom.vc,nom.vg,nom.za,nombre.bo,nome.pt,nomi.ishikawa.jp,nonoichi.ishikawa.jp,nord-aurdal.no,nord-fron.no,nord-odal.no,norddal.no,nordkapp.no,nordre-land.no,nordreisa.no,nore-og-uvdal.no,norfolk.museum,north-kazakhstan.su,north.museum,nose.osaka.jp,nosegawa.nara.jp,noshiro.akita.jp,not.br,notaires.fr,notaires.km,noticias.bo,noto.ishikawa.jp,notodden.no,notogawa.shiga.jp,notteroy.no,nov.ru,nov.su,novara.it,now-dns.net,now-dns.org,now-dns.top,now.sh,nowaruda.pl,nozawaonsen.nagano.jp,np,nrw.museum,ns.ca,nsn.us,nsupdate.info,nsw.au,nsw.edu.au,nt.au,nt.ca,nt.edu.au,nt.no,nt.ro,ntdll.top,ntr.br,nu.ca,nu.it,nuernberg.museum,numata.gunma.jp,numata.hokkaido.jp,numazu.shizuoka.jp,nuoro.it,nuremberg.museum,nv.us,nx.cn,ny.us,nyc.mn,nyc.museum,nym.by,nym.bz,nym.gr,nym.gy,nym.ie,nym.kz,nym.la,nym.lc,nym.li,nym.lt,nym.lu,nym.me,nym.mn,nym.mx,nym.nz,nym.pe,nym.pt,nym.ro,nym.sk,nym.su,nym.sx,nym.tw,nyny.museum,nysa.pl,nyuzen.toyama.jp,nz.eu.org,návuotna.no,nååmesjevuemie.no,nærøy.no,nøtterøy.no,o.bg,o.se,oamishirasato.chiba.jp,oarai.ibaraki.jp,obama.fukui.jp,obama.nagasaki.jp,obanazawa.yamagata.jp,obihiro.hokkaido.jp,obira.hokkaido.jp,obninsk.su,obu.aichi.jp,obuse.nagano.jp,oceanographic.museum,oceanographique.museum,ochi.kochi.jp,od.ua,odate.akita.jp,odawara.kanagawa.jp,odda.no,odesa.ua,odessa.ua,odo.br,oe.yamagata.jp,of.by,of.no,off.ai,office-on-the.net,official.academy,ofunato.iwate.jp,og.ao,og.it,oga.akita.jp,ogaki.gifu.jp,ogano.saitama.jp,ogasawara.tokyo.jp,ogata.akita.jp,ogawa.ibaraki.jp,ogawa.nagano.jp,ogawa.saitama.jp,ogawara.miyagi.jp,ogi.saga.jp,ogimi.okinawa.jp,ogliastra.it,ogori.fukuoka.jp,ogose.saitama.jp,oguchi.aichi.jp,oguni.kumamoto.jp,oguni.yamagata.jp,oh.us,oharu.aichi.jp,ohda.shimane.jp,ohi.fukui.jp,ohira.miyagi.jp,ohira.tochigi.jp,ohkura.yamagata.jp,ohtawara.tochigi.jp,oi.kanagawa.jp,oirase.aomori.jp,oirm.gov.pl,oishida.yamagata.jp,oiso.kanagawa.jp,oita.jp,oita.oita.jp,oizumi.gunma.jp,oji.nara.jp,ojiya.niigata.jp,ok.us,okagaki.fukuoka.jp,okawa.fukuoka.jp,okawa.kochi.jp,okaya.nagano.jp,okayama.jp,okayama.okayama.jp,okazaki.aichi.jp,okegawa.saitama.jp,oketo.hokkaido.jp,oki.fukuoka.jp,okinawa.jp,okinawa.okinawa.jp,okinoshima.shimane.jp,okoppe.hokkaido.jp,oksnes.no,okuizumo.shimane.jp,okuma.fukushima.jp,okutama.tokyo.jp,ol.no,olawa.pl,olbia-tempio.it,olbiatempio.it,olecko.pl,olkusz.pl,olsztyn.pl,omachi.nagano.jp,omachi.saga.jp,omaezaki.shizuoka.jp,omaha.museum,omasvuotna.no,ome.tokyo.jp,omi.nagano.jp,omi.niigata.jp,omigawa.chiba.jp,omihachiman.shiga.jp,omitama.ibaraki.jp,omiya.saitama.jp,omotego.fukushima.jp,omura.nagasaki.jp,omuta.fukuoka.jp,on-aptible.com,on-the-web.tv,on-web.fr,on.ca,onagawa.miyagi.jp,ong.br,onga.fukuoka.jp,onjuku.chiba.jp,online.museum,online.th,onna.okinawa.jp,ono.fukui.jp,ono.fukushima.jp,ono.hyogo.jp,onojo.fukuoka.jp,onomichi.hiroshima.jp,ontario.museum,onthewifi.com,ooguy.com,ookuwa.nagano.jp,ooshika.nagano.jp,openair.museum,opencraft.hosting,operaunite.com,opoczno.pl,opole.pl,oppdal.no,oppegard.no,oppegård.no,or.at,or.bi,or.ci,or.cr,or.id,or.it,or.jp,or.ke,or.kr,or.mu,or.na,or.pw,or.th,or.tz,or.ug,or.us,ora.gunma.jp,oregon.museum,oregontrail.museum,org.ac,org.ae,org.af,org.ag,org.ai,org.al,org.ar,org.au,org.az,org.ba,org.bb,org.bh,org.bi,org.bm,org.bn,org.bo,org.br,org.bs,org.bt,org.bw,org.bz,org.ci,org.cn,org.co,org.cu,org.cw,org.cy,org.dm,org.do,org.dz,org.ec,org.ee,org.eg,org.es,org.et,org.ge,org.gg,org.gh,org.gi,org.gl,org.gn,org.gp,org.gr,org.gt,org.gu,org.gy,org.hk,org.hn,org.ht,org.hu,org.il,org.im,org.in,org.iq,org.ir,org.is,org.je,org.jo,org.kg,org.ki,org.km,org.kn,org.kp,org.kw,org.ky,org.kz,org.la,org.lb,org.lc,org.lk,org.lr,org.ls,org.lv,org.ly,org.ma,org.me,org.mg,org.mk,org.ml,org.mn,org.mo,org.ms,org.mt,org.mu,org.mv,org.mw,org.mx,org.my,org.mz,org.na,org.ng,org.ni,org.nr,org.nz,org.om,org.pa,org.pe,org.pf,org.ph,org.pk,org.pl,org.pn,org.pr,org.ps,org.pt,org.py,org.qa,org.ro,org.rs,org.ru,org.sa,org.sb,org.sc,org.sd,org.se,org.sg,org.sh,org.sl,org.sn,org.so,org.st,org.sv,org.sy,org.sz,org.tj,org.tm,org.tn,org.to,org.tr,org.tt,org.tw,org.ua,org.ug,org.uk,org.uy,org.uz,org.vc,org.ve,org.vi,org.vn,org.vu,org.ws,org.za,org.zm,org.zw,oristano.it,orkanger.no,orkdal.no,orland.no,orskog.no,orsta.no,os.hedmark.no,os.hordaland.no,osaka.jp,osakasayama.osaka.jp,osaki.miyagi.jp,osakikamijima.hiroshima.jp,osasco.br,osen.no,oseto.nagasaki.jp,oshima.tokyo.jp,oshima.yamaguchi.jp,oshino.yamanashi.jp,oshu.iwate.jp,oslo.no,osoyro.no,osteroy.no,osterøy.no,ostre-toten.no,ostroda.pl,ostroleka.pl,ostrowiec.pl,ostrowwlkp.pl,osøyro.no,ot.it,ota.gunma.jp,ota.tokyo.jp,otago.museum,otake.hiroshima.jp,otaki.chiba.jp,otaki.nagano.jp,otaki.saitama.jp,otama.fukushima.jp,otap.co,otari.nagano.jp,otaru.hokkaido.jp,other.nf,oto.fukuoka.jp,otobe.hokkaido.jp,otofuke.hokkaido.jp,otoineppu.hokkaido.jp,otoyo.kochi.jp,otsu.shiga.jp,otsuchi.iwate.jp,otsuki.kochi.jp,otsuki.yamanashi.jp,ouchi.saga.jp,ouda.nara.jp,oum.gov.pl,oumu.hokkaido.jp,outsystemscloud.com,overhalla.no,ovre-eiker.no,owani.aomori.jp,owariasahi.aichi.jp,own.pm,ownip.net,ownprovider.com,ox.rs,oxford.museum,oy.lc,oyabe.toyama.jp,oyama.tochigi.jp,oyamazaki.kyoto.jp,oyer.no,oygarden.no,oyodo.nara.jp,oystre-slidre.no,oz.au,ozora.hokkaido.jp,ozu.ehime.jp,ozu.kumamoto.jp,p.bg,p.se,pa.gov.br,pa.gov.pl,pa.it,pa.leg.br,pa.us,pacific.museum,paderborn.museum,padova.it,padua.it,pagefrontapp.com,pagespeedmobilizer.com,palace.museum,paleo.museum,palermo.it,palmas.br,palmsprings.museum,panama.museum,pantheonsite.io,parachuting.aero,paragliding.aero,paris.eu.org,paris.museum,parliament.cy,parliament.nz,parma.it,paroch.k12.ma.us,parti.se,pasadena.museum,passenger-association.aero,patria.bo,pavia.it,pb.ao,pb.gov.br,pb.leg.br,pc.it,pc.pl,pcloud.host,pd.it,pe.ca,pe.gov.br,pe.it,pe.kr,pe.leg.br,penza.su,per.la,per.nf,per.sg,perso.ht,perso.sn,perso.tn,perugia.it,pesaro-urbino.it,pesarourbino.it,pescara.it,pg,pg.it,pgafan.net,pgfog.com,pharmacien.fr,pharmaciens.km,pharmacy.museum,philadelphia.museum,philadelphiaarea.museum,philately.museum,phoenix.museum,photography.museum,pi.gov.br,pi.it,pi.leg.br,piacenza.it,piedmont.it,piemonte.it,pila.pl,pilot.aero,pilots.museum,pimienta.org,pinb.gov.pl,pippu.hokkaido.jp,pisa.it,pistoia.it,pisz.pl,pittsburgh.museum,piw.gov.pl,pixolino.com,pl.eu.org,pl.ua,planetarium.museum,plantation.museum,plants.museum,platform.sh,platformsh.site,plaza.museum,plc.co.im,plc.ly,plc.uk,plo.ps,plurinacional.bo,pmn.it,pn.it,po.gov.pl,po.it,poa.br,podhale.pl,podlasie.pl,podzone.net,podzone.org,point2this.com,pointto.us,poivron.org,pokrovsk.su,pol.dz,pol.ht,pol.tr,police.uk,politica.bo,polkowice.pl,poltava.ua,pomorskie.pl,pomorze.pl,poniatowa.pl,ponpes.id,pordenone.it,porsanger.no,porsangu.no,porsgrunn.no,porsáŋgu.no,port.fr,portal.museum,portland.museum,portlligat.museum,posts-and-telecommunications.museum,potager.org,potenza.it,powiat.pl,poznan.pl,pp.az,pp.ru,pp.se,pp.ua,ppg.br,pr.gov.br,pr.it,pr.leg.br,pr.us,prato.it,prd.fr,prd.km,prd.mg,preservation.museum,presidio.museum,press.aero,press.cy,press.ma,press.museum,press.se,presse.ci,presse.fr,presse.km,presse.ml,pri.ee,principe.st,priv.at,priv.hu,priv.me,priv.no,priv.pl,privatizehealthinsurance.net,pro.az,pro.br,pro.cy,pro.ec,pro.ht,pro.mv,pro.na,pro.om,pro.pr,pro.tt,pro.vn,prochowice.pl,production.aero,prof.pr,profesional.bo,project.museum,protonet.io,pruszkow.pl,przeworsk.pl,psc.br,psi.br,psp.gov.pl,psse.gov.pl,pt.eu.org,pt.it,ptplus.fit,pu.it,pub.sa,publ.pt,public.museum,publishproxy.com,pubol.museum,pueblo.bo,pug.it,puglia.it,pulawy.pl,pup.gov.pl,pv.it,pvh.br,pvt.ge,pvt.k12.ma.us,pyatigorsk.ru,pz.it,q-a.eu.org,q.bg,qa2.com,qc.ca,qc.com,qh.cn,qld.au,qld.edu.au,qld.gov.au,qsl.br,quebec.museum,quicksytes.com,quipelements.com,r.bg,r.cdn77.net,r.se,ra.it,rackmaze.com,rackmaze.net,rade.no,radio.br,radom.pl,radoy.no,radøy.no,ragusa.it,rahkkeravju.no,raholt.no,railroad.museum,railway.museum,raisa.no,rakkestad.no,ralingen.no,rana.no,randaberg.no,rankoshi.hokkaido.jp,ranzan.saitama.jp,ras.ru,rauma.no,ravendb.community,ravendb.me,ravendb.run,ravenna.it,rawa-maz.pl,rc.it,re.it,re.kr,read-books.org,readmyblog.org,readthedocs.io,realestate.pl,realm.cz,rebun.hokkaido.jp,rec.br,rec.co,rec.nf,rec.ro,rec.ve,recht.pro,recife.br,recreation.aero,red.sv,redirectme.net,reg.dk,reggio-calabria.it,reggio-emilia.it,reggiocalabria.it,reggioemilia.it,reklam.hu,rel.ht,rel.pl,remotewd.com,rendalen.no,rennebu.no,rennesoy.no,rennesøy.no,rep.kp,repbody.aero,res.aero,res.in,research.aero,research.museum,resindevice.io,resistance.museum,revista.bo,rg.it,rhcloud.com,ri.it,ri.us,ribeirao.br,rieti.it,rifu.miyagi.jp,riik.ee,rikubetsu.hokkaido.jp,rikuzentakata.iwate.jp,rimini.it,rindal.no,ringebu.no,ringerike.no,ringsaker.no,rio.br,riobranco.br,riodejaneiro.museum,riopreto.br,rishiri.hokkaido.jp,rishirifuji.hokkaido.jp,risor.no,rissa.no,risør.no,ritto.shiga.jp,rivne.ua,rj.gov.br,rj.leg.br,rl.no,rm.it,rn.gov.br,rn.it,rn.leg.br,rnrt.tn,rns.tn,rnu.tn,ro.eu.org,ro.gov.br,ro.im,ro.it,ro.leg.br,roan.no,rochester.museum,rockart.museum,rodoy.no,rokunohe.aomori.jp,rollag.no,roma.it,roma.museum,rome.it,romsa.no,romskog.no,roros.no,rost.no,rotorcraft.aero,router.management,rovigo.it,rovno.ua,royken.no,royrvik.no,rr.gov.br,rr.leg.br,rs.gov.br,rs.leg.br,rsc.cdn77.org,ru.com,ru.eu.org,ru.net,run.app,ruovat.no,russia.museum,rv.ua,rybnik.pl,rygge.no,ryokami.saitama.jp,ryugasaki.ibaraki.jp,ryuoh.shiga.jp,rzeszow.pl,rzgw.gov.pl,ráhkkerávju.no,ráisa.no,råde.no,råholt.no,rælingen.no,rødøy.no,rømskog.no,røros.no,røst.no,røyken.no,røyrvik.no,s.bg,s.se,s3-ap-northeast-1.amazonaws.com,s3-ap-northeast-2.amazonaws.com,s3-ap-south-1.amazonaws.com,s3-ap-southeast-1.amazonaws.com,s3-ap-southeast-2.amazonaws.com,s3-ca-central-1.amazonaws.com,s3-eu-central-1.amazonaws.com,s3-eu-west-1.amazonaws.com,s3-eu-west-2.amazonaws.com,s3-eu-west-3.amazonaws.com,s3-external-1.amazonaws.com,s3-fips-us-gov-west-1.amazonaws.com,s3-sa-east-1.amazonaws.com,s3-us-east-2.amazonaws.com,s3-us-gov-west-1.amazonaws.com,s3-us-west-1.amazonaws.com,s3-us-west-2.amazonaws.com,s3-website-ap-northeast-1.amazonaws.com,s3-website-ap-southeast-1.amazonaws.com,s3-website-ap-southeast-2.amazonaws.com,s3-website-eu-west-1.amazonaws.com,s3-website-sa-east-1.amazonaws.com,s3-website-us-east-1.amazonaws.com,s3-website-us-west-1.amazonaws.com,s3-website-us-west-2.amazonaws.com,s3-website.ap-northeast-2.amazonaws.com,s3-website.ap-south-1.amazonaws.com,s3-website.ca-central-1.amazonaws.com,s3-website.eu-central-1.amazonaws.com,s3-website.eu-west-2.amazonaws.com,s3-website.eu-west-3.amazonaws.com,s3-website.us-east-2.amazonaws.com,s3.amazonaws.com,s3.ap-northeast-2.amazonaws.com,s3.ap-south-1.amazonaws.com,s3.ca-central-1.amazonaws.com,s3.cn-north-1.amazonaws.com.cn,s3.dualstack.ap-northeast-1.amazonaws.com,s3.dualstack.ap-northeast-2.amazonaws.com,s3.dualstack.ap-south-1.amazonaws.com,s3.dualstack.ap-southeast-1.amazonaws.com,s3.dualstack.ap-southeast-2.amazonaws.com,s3.dualstack.ca-central-1.amazonaws.com,s3.dualstack.eu-central-1.amazonaws.com,s3.dualstack.eu-west-1.amazonaws.com,s3.dualstack.eu-west-2.amazonaws.com,s3.dualstack.eu-west-3.amazonaws.com,s3.dualstack.sa-east-1.amazonaws.com,s3.dualstack.us-east-1.amazonaws.com,s3.dualstack.us-east-2.amazonaws.com,s3.eu-central-1.amazonaws.com,s3.eu-west-2.amazonaws.com,s3.eu-west-3.amazonaws.com,s3.us-east-2.amazonaws.com,s5y.io,sa-east-1.elasticbeanstalk.com,sa.au,sa.com,sa.cr,sa.edu.au,sa.gov.au,sa.gov.pl,sa.it,sabae.fukui.jp,sado.niigata.jp,safety.aero,saga.jp,saga.saga.jp,sagae.yamagata.jp,sagamihara.kanagawa.jp,saigawa.fukuoka.jp,saijo.ehime.jp,saikai.nagasaki.jp,saiki.oita.jp,saintlouis.museum,saitama.jp,saitama.saitama.jp,saito.miyazaki.jp,saka.hiroshima.jp,sakado.saitama.jp,sakae.chiba.jp,sakae.nagano.jp,sakahogi.gifu.jp,sakai.fukui.jp,sakai.ibaraki.jp,sakai.osaka.jp,sakaiminato.tottori.jp,sakaki.nagano.jp,sakata.yamagata.jp,sakawa.kochi.jp,sakegawa.yamagata.jp,saku.nagano.jp,sakuho.nagano.jp,sakura.chiba.jp,sakura.tochigi.jp,sakuragawa.ibaraki.jp,sakurai.nara.jp,sakyo.kyoto.jp,salangen.no,salat.no,salem.museum,salerno.it,saltdal.no,salud.bo,salvador.br,salvadordali.museum,salzburg.museum,samegawa.fukushima.jp,samnanger.no,sampa.br,samukawa.kanagawa.jp,sanagochi.tokushima.jp,sanda.hyogo.jp,sandcats.io,sande.more-og-romsdal.no,sande.møre-og-romsdal.no,sande.vestfold.no,sandefjord.no,sandiego.museum,sandnes.no,sandnessjoen.no,sandnessjøen.no,sandoy.no,sandøy.no,sanfrancisco.museum,sango.nara.jp,sanjo.niigata.jp,sannan.hyogo.jp,sannohe.aomori.jp,sano.tochigi.jp,sanok.pl,santabarbara.museum,santacruz.museum,santafe.museum,santamaria.br,santoandre.br,sanuki.kagawa.jp,saobernardo.br,saogonca.br,saotome.st,sapporo.jp,sar.it,sardegna.it,sardinia.it,saroma.hokkaido.jp,sarpsborg.no,sarufutsu.hokkaido.jp,sasaguri.fukuoka.jp,sasayama.hyogo.jp,sasebo.nagasaki.jp,saskatchewan.museum,sassari.it,satosho.okayama.jp,satsumasendai.kagoshima.jp,satte.saitama.jp,satx.museum,sauda.no,sauherad.no,savannahga.museum,saves-the-whales.com,savona.it,sayama.osaka.jp,sayama.saitama.jp,sayo.hyogo.jp,sb.ua,sc.cn,sc.gov.br,sc.ke,sc.kr,sc.leg.br,sc.ls,sc.tz,sc.ug,sc.us,scapp.io,sch.ae,sch.id,sch.ir,sch.jo,sch.lk,sch.ly,sch.ng,sch.qa,sch.sa,sch.uk,sch.zm,schlesisches.museum,schoenbrunn.museum,schokokeks.net,schokoladen.museum,school.museum,school.na,school.nz,school.za,schweiz.museum,sci.eg,science-fiction.museum,science.museum,scienceandhistory.museum,scienceandindustry.museum,sciencecenter.museum,sciencecenters.museum,sciencehistory.museum,sciences.museum,sciencesnaturelles.museum,scientist.aero,scotland.museum,scrapper-site.net,scrapping.cc,scrysec.com,sd.cn,sd.us,sdn.gov.pl,se.eu.org,se.gov.br,se.leg.br,se.net,seaport.museum,sebastopol.ua,sec.ps,securitytactics.com,seihi.nagasaki.jp,seika.kyoto.jp,seiro.niigata.jp,seirou.niigata.jp,seiyo.ehime.jp,sejny.pl,seki.gifu.jp,sekigahara.gifu.jp,sekikawa.niigata.jp,sel.no,selbu.no,selfip.biz,selfip.com,selfip.info,selfip.net,selfip.org,selje.no,seljord.no,sells-for-less.com,sells-for-u.com,sells-it.net,sellsyourhome.org,semboku.akita.jp,semine.miyagi.jp,sendai.jp,sennan.osaka.jp,sensiosite.cloud,seoul.kr,sera.hiroshima.jp,seranishi.hiroshima.jp,servebbs.com,servebbs.net,servebbs.org,servebeer.com,serveblog.net,servecounterstrike.com,serveexchange.com,serveftp.com,serveftp.net,serveftp.org,servegame.com,servegame.org,servehalflife.com,servehttp.com,servehumour.com,serveirc.com,serveminecraft.net,servemp3.com,servep2p.com,servepics.com,servequake.com,servesarcasm.com,service.gov.uk,services.aero,setagaya.tokyo.jp,seto.aichi.jp,setouchi.okayama.jp,settlement.museum,settlers.museum,settsu.osaka.jp,sevastopol.ua,sex.hu,sex.pl,sf.no,sh.cn,shacknet.nu,shakotan.hokkaido.jp,shari.hokkaido.jp,shell.museum,sherbrooke.museum,shibata.miyagi.jp,shibata.niigata.jp,shibecha.hokkaido.jp,shibetsu.hokkaido.jp,shibukawa.gunma.jp,shibuya.tokyo.jp,shichikashuku.miyagi.jp,shichinohe.aomori.jp,shiftedit.io,shiga.jp,shiiba.miyazaki.jp,shijonawate.osaka.jp,shika.ishikawa.jp,shikabe.hokkaido.jp,shikama.miyagi.jp,shikaoi.hokkaido.jp,shikatsu.aichi.jp,shiki.saitama.jp,shikokuchuo.ehime.jp,shima.mie.jp,shimabara.nagasaki.jp,shimada.shizuoka.jp,shimamaki.hokkaido.jp,shimamoto.osaka.jp,shimane.jp,shimane.shimane.jp,shimizu.hokkaido.jp,shimizu.shizuoka.jp,shimoda.shizuoka.jp,shimodate.ibaraki.jp,shimofusa.chiba.jp,shimogo.fukushima.jp,shimoichi.nara.jp,shimoji.okinawa.jp,shimokawa.hokkaido.jp,shimokitayama.nara.jp,shimonita.gunma.jp,shimonoseki.yamaguchi.jp,shimosuwa.nagano.jp,shimotsuke.tochigi.jp,shimotsuma.ibaraki.jp,shinagawa.tokyo.jp,shinanomachi.nagano.jp,shingo.aomori.jp,shingu.fukuoka.jp,shingu.hyogo.jp,shingu.wakayama.jp,shinichi.hiroshima.jp,shinjo.nara.jp,shinjo.okayama.jp,shinjo.yamagata.jp,shinjuku.tokyo.jp,shinkamigoto.nagasaki.jp,shinonsen.hyogo.jp,shinshinotsu.hokkaido.jp,shinshiro.aichi.jp,shinto.gunma.jp,shintoku.hokkaido.jp,shintomi.miyazaki.jp,shinyoshitomi.fukuoka.jp,shiogama.miyagi.jp,shiojiri.nagano.jp,shioya.tochigi.jp,shirahama.wakayama.jp,shirakawa.fukushima.jp,shirakawa.gifu.jp,shirako.chiba.jp,shiranuka.hokkaido.jp,shiraoi.hokkaido.jp,shiraoka.saitama.jp,shirataka.yamagata.jp,shiriuchi.hokkaido.jp,shiroi.chiba.jp,shiroishi.miyagi.jp,shiroishi.saga.jp,shirosato.ibaraki.jp,shishikui.tokushima.jp,shiso.hyogo.jp,shisui.chiba.jp,shitara.aichi.jp,shiwa.iwate.jp,shizukuishi.iwate.jp,shizuoka.jp,shizuoka.shizuoka.jp,shobara.hiroshima.jp,shonai.fukuoka.jp,shonai.yamagata.jp,shoo.okayama.jp,shop.ht,shop.hu,shop.pl,shop.ro,shop.th,show.aero,showa.fukushima.jp,showa.gunma.jp,showa.yamanashi.jp,shunan.yamaguchi.jp,si.eu.org,si.it,sibenik.museum,sic.it,sicilia.it,sicily.it,siellak.no,siena.it,sigdal.no,siljan.no,silk.museum,simple-url.com,sinaapp.com,siracusa.it,sirdal.no,siteleaf.net,sites.static.land,sjc.br,sk.ca,sk.eu.org,skanit.no,skanland.no,skaun.no,skedsmo.no,skedsmokorset.no,ski.museum,ski.no,skien.no,skierva.no,skiervá.no,skiptvet.no,skjak.no,skjervoy.no,skjervøy.no,skjåk.no,sklep.pl,sko.gov.pl,skoczow.pl,skodje.no,skole.museum,skydiving.aero,skánit.no,skånland.no,slask.pl,slattum.no,sld.do,sld.pa,slg.br,slupsk.pl,slz.br,sm.ua,smola.no,smøla.no,sn.cn,snaase.no,snasa.no,snillfjord.no,snoasa.no,snåase.no,snåsa.no,so.gov.pl,so.it,sobetsu.hokkaido.jp,soc.lk,sochi.su,society.museum,sodegaura.chiba.jp,soeda.fukuoka.jp,software.aero,sogndal.no,sogne.no,soja.okayama.jp,soka.saitama.jp,sokndal.no,sola.no,sologne.museum,solund.no,soma.fukushima.jp,somna.no,sondre-land.no,sondrio.it,songdalen.no,soni.nara.jp,soo.kagoshima.jp,sopot.pl,sor-aurdal.no,sor-fron.no,sor-odal.no,sor-varanger.no,sorfold.no,sorocaba.br,sorreisa.no,sortland.no,sorum.no,sos.pl,sosa.chiba.jp,sosnowiec.pl,soundandvision.museum,soundcast.me,southcarolina.museum,southwest.museum,sowa.ibaraki.jp,sp.gov.br,sp.it,sp.leg.br,space-to-rent.com,space.museum,spacekit.io,spb.ru,spb.su,spdns.de,spdns.eu,spdns.org,spectrum.myjino.ru,spjelkavik.no,sport.hu,spy.museum,spydeberg.no,square.museum,square7.ch,square7.de,square7.net,sr.gov.pl,sr.it,srv.br,ss.it,ssl.origin.cdn77-secure.org,st.no,stadt.museum,stage.nodeart.io,stalbans.museum,stalowa-wola.pl,stange.no,starachowice.pl,stargard.pl,starnberg.museum,starostwo.gov.pl,stat.no,state.museum,stateofdelaware.museum,stathelle.no,static-access.net,static.land,statics.cloud,station.museum,stavanger.no,stavern.no,steam.museum,steiermark.museum,steigen.no,steinkjer.no,stjohn.museum,stjordal.no,stjordalshalsen.no,stjørdal.no,stjørdalshalsen.no,stockholm.museum,stokke.no,stolos.io,stor-elvdal.no,stord.no,stordal.no,store.bb,store.dk,store.nf,store.ro,store.st,store.ve,storfjord.no,storj.farm,stpetersburg.museum,strand.no,stranda.no,stryn.no,student.aero,stuff-4-sale.org,stuff-4-sale.us,stufftoread.com,stuttgart.museum,sue.fukuoka.jp,suedtirol.it,suginami.tokyo.jp,sugito.saitama.jp,suifu.ibaraki.jp,suisse.museum,suita.osaka.jp,sukagawa.fukushima.jp,sukumo.kochi.jp,sula.no,suldal.no,suli.hu,sumida.tokyo.jp,sumita.iwate.jp,sumoto.hyogo.jp,sumoto.kumamoto.jp,sumy.ua,sunagawa.hokkaido.jp,sund.no,sunndal.no,surgeonshall.museum,surnadal.no,surrey.museum,susaki.kochi.jp,susono.shizuoka.jp,suwa.nagano.jp,suwalki.pl,suzaka.nagano.jp,suzu.ishikawa.jp,suzuka.mie.jp,sv.it,svalbard.no,sveio.no,svelvik.no,svizzera.museum,svn-repos.de,sweden.museum,sweetpepper.org,swidnica.pl,swidnik.pl,swiebodzin.pl,swinoujscie.pl,sx.cn,sydney.museum,sykkylven.no,syno-ds.de,synology-diskstation.de,synology-ds.de,synology.me,sytes.net,szczecin.pl,szczytno.pl,szex.hu,szkola.pl,sálat.no,sálát.no,søgne.no,sømna.no,søndre-land.no,sør-aurdal.no,sør-fron.no,sør-odal.no,sør-varanger.no,sørfold.no,sørreisa.no,sørum.no,südtirol.it,t.bg,t.se,t3l3p0rt.net,ta.it,taa.it,tabayama.yamanashi.jp,tabuse.yamaguchi.jp,tachiarai.fukuoka.jp,tachikawa.tokyo.jp,tadaoka.osaka.jp,tado.mie.jp,tadotsu.kagawa.jp,tagajo.miyagi.jp,tagami.niigata.jp,tagawa.fukuoka.jp,tahara.aichi.jp,taifun-dns.de,taiji.wakayama.jp,taiki.hokkaido.jp,taiki.mie.jp,tainai.niigata.jp,taira.toyama.jp,taishi.hyogo.jp,taishi.osaka.jp,taishin.fukushima.jp,taito.tokyo.jp,taiwa.miyagi.jp,tajimi.gifu.jp,tajiri.osaka.jp,taka.hyogo.jp,takagi.nagano.jp,takahagi.ibaraki.jp,takahama.aichi.jp,takahama.fukui.jp,takaharu.miyazaki.jp,takahashi.okayama.jp,takahata.yamagata.jp,takaishi.osaka.jp,takamatsu.kagawa.jp,takamori.kumamoto.jp,takamori.nagano.jp,takanabe.miyazaki.jp,takanezawa.tochigi.jp,takaoka.toyama.jp,takarazuka.hyogo.jp,takasago.hyogo.jp,takasaki.gunma.jp,takashima.shiga.jp,takasu.hokkaido.jp,takata.fukuoka.jp,takatori.nara.jp,takatsuki.osaka.jp,takatsuki.shiga.jp,takayama.gifu.jp,takayama.gunma.jp,takayama.nagano.jp,takazaki.miyazaki.jp,takehara.hiroshima.jp,taketa.oita.jp,taketomi.okinawa.jp,taki.mie.jp,takikawa.hokkaido.jp,takino.hyogo.jp,takinoue.hokkaido.jp,takko.aomori.jp,tako.chiba.jp,taku.saga.jp,tama.tokyo.jp,tamakawa.fukushima.jp,tamaki.mie.jp,tamamura.gunma.jp,tamano.okayama.jp,tamatsukuri.ibaraki.jp,tamayu.shimane.jp,tamba.hyogo.jp,tana.no,tanabe.kyoto.jp,tanabe.wakayama.jp,tanagura.fukushima.jp,tananger.no,tank.museum,tanohata.iwate.jp,tara.saga.jp,tarama.okinawa.jp,taranto.it,targi.pl,tarnobrzeg.pl,tarui.gifu.jp,tarumizu.kagoshima.jp,tas.au,tas.edu.au,tas.gov.au,tashkent.su,tatebayashi.gunma.jp,tateshina.nagano.jp,tateyama.chiba.jp,tateyama.toyama.jp,tatsuno.hyogo.jp,tatsuno.nagano.jp,tawaramoto.nara.jp,taxi.br,tcm.museum,tcp4.me,te.it,te.ua,teaches-yoga.com,tec.mi.us,tec.ve,technology.museum,tecnologia.bo,tel.tr,tele.amune.org,telebit.app,telebit.io,telebit.xyz,telekommunikation.museum,television.museum,temp-dns.com,tempio-olbia.it,tempioolbia.it,tendo.yamagata.jp,tenei.fukushima.jp,tenkawa.nara.jp,tenri.nara.jp,teo.br,teramo.it,termez.su,terni.it,ternopil.ua,teshikaga.hokkaido.jp,test-iserv.de,test.ru,test.tj,texas.museum,textile.museum,tgory.pl,the.br,theater.museum,theworkpc.com,thruhere.net,time.museum,time.no,timekeeping.museum,tingvoll.no,tinn.no,tj.cn,tjeldsund.no,tjome.no,tjøme.no,tksat.bo,tm.cy,tm.fr,tm.hu,tm.km,tm.mc,tm.mg,tm.no,tm.pl,tm.ro,tm.se,tm.za,tmp.br,tn.it,tn.us,to.gov.br,to.it,to.leg.br,toba.mie.jp,tobe.ehime.jp,tobetsu.hokkaido.jp,tobishima.aichi.jp,tochigi.jp,tochigi.tochigi.jp,tochio.niigata.jp,toda.saitama.jp,toei.aichi.jp,toga.toyama.jp,togakushi.nagano.jp,togane.chiba.jp,togitsu.nagasaki.jp,togliatti.su,togo.aichi.jp,togura.nagano.jp,tohma.hokkaido.jp,tohnosho.chiba.jp,toho.fukuoka.jp,tokai.aichi.jp,tokai.ibaraki.jp,tokamachi.niigata.jp,tokashiki.okinawa.jp,toki.gifu.jp,tokigawa.saitama.jp,tokke.no,tokoname.aichi.jp,tokorozawa.saitama.jp,tokushima.jp,tokushima.tokushima.jp,tokuyama.yamaguchi.jp,tokyo.jp,tolga.no,tomakomai.hokkaido.jp,tomari.hokkaido.jp,tome.miyagi.jp,tomi.nagano.jp,tomigusuku.okinawa.jp,tomika.gifu.jp,tomioka.gunma.jp,tomisato.chiba.jp,tomiya.miyagi.jp,tomobe.ibaraki.jp,tonaki.okinawa.jp,tonami.toyama.jp,tondabayashi.osaka.jp,tone.ibaraki.jp,tono.iwate.jp,tonosho.kagawa.jp,tonsberg.no,toon.ehime.jp,topology.museum,torahime.shiga.jp,toride.ibaraki.jp,torino.it,torino.museum,torsken.no,tos.it,tosa.kochi.jp,tosashimizu.kochi.jp,toscana.it,toshima.tokyo.jp,tosu.saga.jp,tottori.jp,tottori.tottori.jp,touch.museum,tourism.pl,tourism.tn,towada.aomori.jp,town.museum,townnews-staging.com,toya.hokkaido.jp,toyako.hokkaido.jp,toyama.jp,toyama.toyama.jp,toyo.kochi.jp,toyoake.aichi.jp,toyohashi.aichi.jp,toyokawa.aichi.jp,toyonaka.osaka.jp,toyone.aichi.jp,toyono.osaka.jp,toyooka.hyogo.jp,toyosato.shiga.jp,toyota.aichi.jp,toyota.yamaguchi.jp,toyotomi.hokkaido.jp,toyotsu.fukuoka.jp,toyoura.hokkaido.jp,tozawa.yamagata.jp,tozsde.hu,tp.it,tr.eu.org,tr.it,tr.no,tra.kp,trader.aero,trading.aero,traeumtgerade.de,trafficplex.cloud,trainer.aero,trana.no,tranby.no,trani-andria-barletta.it,trani-barletta-andria.it,traniandriabarletta.it,tranibarlettaandria.it,tranoy.no,transport.museum,transporte.bo,transurl.be,transurl.eu,transurl.nl,tranøy.no,trapani.it,travel.pl,travel.tt,trd.br,tree.museum,trentin-sud-tirol.it,trentin-sudtirol.it,trentin-sued-tirol.it,trentin-suedtirol.it,trentin-süd-tirol.it,trentin-südtirol.it,trentino-a-adige.it,trentino-aadige.it,trentino-alto-adige.it,trentino-altoadige.it,trentino-s-tirol.it,trentino-stirol.it,trentino-sud-tirol.it,trentino-sudtirol.it,trentino-sued-tirol.it,trentino-suedtirol.it,trentino-süd-tirol.it,trentino-südtirol.it,trentino.it,trentinoa-adige.it,trentinoaadige.it,trentinoalto-adige.it,trentinoaltoadige.it,trentinos-tirol.it,trentinostirol.it,trentinosud-tirol.it,trentinosudtirol.it,trentinosued-tirol.it,trentinosuedtirol.it,trentinosüd-tirol.it,trentinosüdtirol.it,trentinsud-tirol.it,trentinsudtirol.it,trentinsued-tirol.it,trentinsuedtirol.it,trentinsüd-tirol.it,trentinsüdtirol.it,trento.it,treviso.it,trieste.it,triton.zone,troandin.no,trogstad.no,troitsk.su,trolley.museum,tromsa.no,tromso.no,tromsø.no,trondheim.no,trust.museum,trustee.museum,trysil.no,træna.no,trøgstad.no,ts.it,tselinograd.su,tsu.mie.jp,tsubame.niigata.jp,tsubata.ishikawa.jp,tsubetsu.hokkaido.jp,tsuchiura.ibaraki.jp,tsuga.tochigi.jp,tsugaru.aomori.jp,tsuiki.fukuoka.jp,tsukigata.hokkaido.jp,tsukiyono.gunma.jp,tsukuba.ibaraki.jp,tsukui.kanagawa.jp,tsukumi.oita.jp,tsumagoi.gunma.jp,tsunan.niigata.jp,tsuno.kochi.jp,tsuno.miyazaki.jp,tsuru.yamanashi.jp,tsuruga.fukui.jp,tsurugashima.saitama.jp,tsurugi.ishikawa.jp,tsuruoka.yamagata.jp,tsuruta.aomori.jp,tsushima.aichi.jp,tsushima.nagasaki.jp,tsuwano.shimane.jp,tsuyama.okayama.jp,tt.im,tula.su,tunk.org,tur.ar,tur.br,turek.pl,turen.tn,turin.it,turystyka.pl,tuscany.it,tuva.su,tuxfamily.org,tv.bb,tv.bo,tv.br,tv.im,tv.it,tv.na,tv.sd,tv.tr,tv.tz,tvedestrand.no,tw.cn,twmail.cc,twmail.net,twmail.org,tx.us,tychy.pl,tydal.no,tynset.no,tysfjord.no,tysnes.no,tysvar.no,tysvær.no,tønsberg.no,u.bg,u.se,u2-local.xnbay.com,u2.xnbay.com,ube.yamaguchi.jp,uber.space,uberspace.de,uchihara.ibaraki.jp,uchiko.ehime.jp,uchinada.ishikawa.jp,uchinomi.kagawa.jp,ud.it,uda.nara.jp,udi.br,udine.it,udono.mie.jp,ueda.nagano.jp,ueno.gunma.jp,uenohara.yamanashi.jp,ufcfan.org,ug.gov.pl,ugim.gov.pl,uhren.museum,uji.kyoto.jp,ujiie.tochigi.jp,ujitawara.kyoto.jp,uk.com,uk.eu.org,uk.net,uki.kumamoto.jp,ukiha.fukuoka.jp,uklugs.org,ullensaker.no,ullensvang.no,ulm.museum,ulsan.kr,ulvik.no,um.gov.pl,umaji.kochi.jp,umb.it,umbria.it,umi.fukuoka.jp,umig.gov.pl,unazuki.toyama.jp,undersea.museum,union.aero,univ.sn,university.museum,unjarga.no,unjárga.no,unnan.shimane.jp,unusualperson.com,unzen.nagasaki.jp,uonuma.niigata.jp,uozu.toyama.jp,upow.gov.pl,uppo.gov.pl,urakawa.hokkaido.jp,urasoe.okinawa.jp,urausu.hokkaido.jp,urawa.saitama.jp,urayasu.chiba.jp,urbino-pesaro.it,urbinopesaro.it,ureshino.mie.jp,uri.arpa,url.tw,urn.arpa,uruma.okinawa.jp,uryu.hokkaido.jp,us-1.evennode.com,us-2.evennode.com,us-3.evennode.com,us-4.evennode.com,us-east-1.amazonaws.com,us-east-1.elasticbeanstalk.com,us-east-2.elasticbeanstalk.com,us-gov-west-1.elasticbeanstalk.com,us-west-1.elasticbeanstalk.com,us-west-2.elasticbeanstalk.com,us.com,us.eu.org,us.gov.pl,us.na,us.org,usa.museum,usa.oita.jp,usantiques.museum,usarts.museum,uscountryestate.museum,usculture.museum,usdecorativearts.museum,user.party.eus,usgarden.museum,ushiku.ibaraki.jp,ushistory.museum,ushuaia.museum,uslivinghistory.museum,usr.cloud.muni.cz,ustka.pl,usui.fukuoka.jp,usuki.oita.jp,ut.us,utah.museum,utashinai.hokkaido.jp,utazas.hu,utazu.kagawa.jp,uto.kumamoto.jp,utsira.no,utsunomiya.tochigi.jp,utwente.io,uvic.museum,uw.gov.pl,uwajima.ehime.jp,uy.com,uz.ua,uzhgorod.ua,uzs.gov.pl,v-info.info,v.bg,va.it,va.no,va.us,vaapste.no,vadso.no,vadsø.no,vaga.no,vagan.no,vagsoy.no,vaksdal.no,val-d-aosta.it,val-daosta.it,vald-aosta.it,valdaosta.it,valer.hedmark.no,valer.ostfold.no,valle-aosta.it,valle-d-aosta.it,valle-daosta.it,valle.no,valleaosta.it,valled-aosta.it,valledaosta.it,vallee-aoste.it,vallee-d-aoste.it,valleeaoste.it,valleedaoste.it,valley.museum,vallée-aoste.it,vallée-d-aoste.it,valléeaoste.it,valléedaoste.it,vang.no,vantaa.museum,vanylven.no,vao.it,vapor.cloud,vaporcloud.io,vardo.no,vardø.no,varese.it,varggat.no,varoy.no,vb.it,vc.it,vda.it,ve.it,vefsn.no,vega.no,vegarshei.no,vegårshei.no,ven.it,veneto.it,venezia.it,venice.it,vennesla.no,verbania.it,vercelli.it,verdal.no,verona.it,verran.no,versailles.museum,vestby.no,vestnes.no,vestre-slidre.no,vestre-toten.no,vestvagoy.no,vestvågøy.no,vet.br,veterinaire.fr,veterinaire.km,vevelstad.no,vf.no,vgs.no,vi.it,vi.us,vibo-valentia.it,vibovalentia.it,vic.au,vic.edu.au,vic.gov.au,vicenza.it,video.hu,vik.no,viking.museum,vikna.no,village.museum,vindafjord.no,vinnica.ua,vinnytsia.ua,vipsinaapp.com,virginia.museum,virtual-user.de,virtual.museum,virtualuser.de,virtueeldomein.nl,virtuel.museum,viterbo.it,vix.br,vlaanderen.museum,vladikavkaz.ru,vladikavkaz.su,vladimir.ru,vladimir.su,vlog.br,vm.bytemark.co.uk,vn.ua,voagat.no,volda.no,volkenkunde.museum,vologda.su,volyn.ua,voss.no,vossevangen.no,vpndns.net,vpnplus.to,vps.myjino.ru,vr.it,vs.it,vt.it,vt.us,vv.it,várggát.no,vågan.no,vågsøy.no,vågå.no,våler.hedmark.no,våler.østfold.no,værøy.no,w.bg,w.se,wa.au,wa.edu.au,wa.gov.au,wa.us,wada.nagano.jp,wajiki.tokushima.jp,wajima.ishikawa.jp,wakasa.fukui.jp,wakasa.tottori.jp,wakayama.jp,wakayama.wakayama.jp,wake.okayama.jp,wakkanai.hokkaido.jp,wakuya.miyagi.jp,walbrzych.pl,wales.museum,wallonie.museum,wanouchi.gifu.jp,war.museum,warabi.saitama.jp,warmia.pl,warszawa.pl,washingtondc.museum,washtenaw.mi.us,wassamu.hokkaido.jp,watarai.mie.jp,watari.miyagi.jp,watch-and-clock.museum,watchandclock.museum,waw.pl,wazuka.kyoto.jp,we.bs,web.bo,web.co,web.do,web.gu,web.id,web.lk,web.nf,web.ni,web.pk,web.tj,web.tr,web.ve,web.za,webhop.biz,webhop.info,webhop.me,webhop.net,webhop.org,webhosting.be,webredirect.org,webspace.rocks,wedeploy.io,wedeploy.me,wedeploy.sh,wegrow.pl,wellbeingzone.co.uk,wellbeingzone.eu,western.museum,westfalen.museum,whaling.museum,wi.us,wielun.pl,wif.gov.pl,wiih.gov.pl,wiki.bo,wiki.br,wildlife.museum,williamsburg.museum,winb.gov.pl,windmill.museum,wios.gov.pl,witd.gov.pl,withgoogle.com,withyoutube.com,wiw.gov.pl,wlocl.pl,wloclawek.pl,wmflabs.org,wodzislaw.pl,wolomin.pl,workinggroup.aero,workisboring.com,works.aero,workshop.museum,worse-than.tv,wpcomstaging.com,wpdevcloud.com,writesthisblog.com,wroc.pl,wroclaw.pl,ws.na,wsa.gov.pl,wskr.gov.pl,wuoz.gov.pl,wv.us,www.ro,wy.us,wzmiuw.gov.pl,x.bg,x.se,x443.pw,xen.prgmr.com,xenapponazure.com,xj.cn,xnbay.com,xs4all.space,xz.cn,y.bg,y.se,yabu.hyogo.jp,yabuki.fukushima.jp,yachimata.chiba.jp,yachiyo.chiba.jp,yachiyo.ibaraki.jp,yaese.okinawa.jp,yahaba.iwate.jp,yahiko.niigata.jp,yaita.tochigi.jp,yaizu.shizuoka.jp,yakage.okayama.jp,yakumo.hokkaido.jp,yakumo.shimane.jp,yalta.ua,yamada.fukuoka.jp,yamada.iwate.jp,yamada.toyama.jp,yamaga.kumamoto.jp,yamagata.gifu.jp,yamagata.ibaraki.jp,yamagata.jp,yamagata.nagano.jp,yamagata.yamagata.jp,yamaguchi.jp,yamakita.kanagawa.jp,yamamoto.miyagi.jp,yamanakako.yamanashi.jp,yamanashi.jp,yamanashi.yamanashi.jp,yamanobe.yamagata.jp,yamanouchi.nagano.jp,yamashina.kyoto.jp,yamato.fukushima.jp,yamato.kanagawa.jp,yamato.kumamoto.jp,yamatokoriyama.nara.jp,yamatotakada.nara.jp,yamatsuri.fukushima.jp,yamazoe.nara.jp,yame.fukuoka.jp,yanagawa.fukuoka.jp,yanaizu.fukushima.jp,yao.osaka.jp,yaotsu.gifu.jp,yasaka.nagano.jp,yashio.saitama.jp,yashiro.hyogo.jp,yasu.shiga.jp,yasuda.kochi.jp,yasugi.shimane.jp,yasuoka.nagano.jp,yatomi.aichi.jp,yatsuka.shimane.jp,yatsushiro.kumamoto.jp,yawara.ibaraki.jp,yawata.kyoto.jp,yawatahama.ehime.jp,yazu.tottori.jp,ybo.faith,ybo.party,ybo.review,ybo.science,ybo.trade,ye,yk.ca,yn.cn,yoichi.hokkaido.jp,yoita.niigata.jp,yoka.hyogo.jp,yokaichiba.chiba.jp,yokawa.hyogo.jp,yokkaichi.mie.jp,yokohama.jp,yokoshibahikari.chiba.jp,yokosuka.kanagawa.jp,yokote.akita.jp,yokoze.saitama.jp,yolasite.com,yombo.me,yomitan.okinawa.jp,yonabaru.okinawa.jp,yonago.tottori.jp,yonaguni.okinawa.jp,yonezawa.yamagata.jp,yono.saitama.jp,yorii.saitama.jp,york.museum,yorkshire.museum,yoro.gifu.jp,yosemite.museum,yoshida.saitama.jp,yoshida.shizuoka.jp,yoshikawa.saitama.jp,yoshimi.saitama.jp,yoshino.nara.jp,yoshinogari.saga.jp,yoshioka.gunma.jp,yotsukaido.chiba.jp,youth.museum,yuasa.wakayama.jp,yufu.oita.jp,yugawa.fukushima.jp,yugawara.kanagawa.jp,yuki.ibaraki.jp,yukuhashi.fukuoka.jp,yura.wakayama.jp,yurihonjo.akita.jp,yusuhara.kochi.jp,yusui.kagoshima.jp,yuu.yamaguchi.jp,yuza.yamagata.jp,yuzawa.niigata.jp,z.bg,z.se,za.bz,za.com,za.net,za.org,zachpomor.pl,zagan.pl,zakopane.pl,zama.kanagawa.jp,zamami.okinawa.jp,zao.miyagi.jp,zaporizhzhe.ua,zaporizhzhia.ua,zapto.org,zapto.xyz,zarow.pl,zentsuji.kagawa.jp,zgora.pl,zgorzelec.pl,zhitomir.ua,zhytomyr.ua,zj.cn,zlg.br,zone.id,zoological.museum,zoology.museum,zp.gov.pl,zp.ua,zt.ua,zushi.kanagawa.jp,ákŋoluokta.no,álaheadju.no,áltá.no,åfjord.no,åkrehamn.no,ål.no,ålesund.no,ålgård.no,åmli.no,åmot.no,årdal.no,ås.no,åseral.no,åsnes.no,øksnes.no,ørland.no,ørskog.no,ørsta.no,østre-toten.no,øvre-eiker.no,øyer.no,øygarden.no,øystre-slidre.no,čáhcesuolo.no,ак.срб,иком.museum,обр.срб,од.срб,орг.срб,пр.срб,упр.срб,ירושלים.museum,ايران.ir,ایران.ir,ทหาร.ไทย,ธุรกิจ.ไทย,รัฐบาล.ไทย,ศึกษา.ไทย,องค์กร.ไทย,เน็ต.ไทย,三重.jp,个人.hk,京都.jp,佐賀.jp,個人.hk,個人.香港,公司.cn,公司.hk,公司.香港,兵庫.jp,北海道.jp,千葉.jp,和歌山.jp,商業.tw,埼玉.jp,大分.jp,大阪.jp,奈良.jp,宮城.jp,宮崎.jp,富山.jp,山口.jp,山形.jp,山梨.jp,岐阜.jp,岡山.jp,岩手.jp,島根.jp,広島.jp,徳島.jp,愛媛.jp,愛知.jp,政府.hk,政府.香港,敎育.hk,教育.hk,教育.香港,新潟.jp,東京.jp,栃木.jp,沖縄.jp,滋賀.jp,熊本.jp,石川.jp,神奈川.jp,福井.jp,福岡.jp,福島.jp,秋田.jp,箇人.hk,組織.hk,組織.tw,組織.香港,組织.hk,網絡.cn,網絡.hk,網絡.香港,網络.hk,網路.tw,组織.hk,组织.hk,网絡.hk,网络.cn,网络.hk,群馬.jp,茨城.jp,長崎.jp,長野.jp,青森.jp,静岡.jp,香川.jp,高知.jp,鳥取.jp,鹿児島.jp');\n\n\n//# sourceURL=webpack:///./src/tld-data.js?");
/***/ }),
/***/ "./src/tld.js":
/*!********************!*\
!*** ./src/tld.js ***!
\********************/
/*! exports provided: getTld, isTld */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getTld\", function() { return getTld; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isTld\", function() { return isTld; });\n/* harmony import */ var _tld_data_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tld-data.js */ \"./src/tld-data.js\");\n\n\n/**\n * @type {Set<string>}\n */\nlet tldSet\n\n\n/**\n * @param {string} domain \n */\nfunction getTld(domain) {\n if (isTld(domain)) {\n return domain\n }\n let pos = 0\n for (;;) {\n pos = domain.indexOf('.', pos + 1)\n if (pos === -1) {\n break\n }\n const str = domain.substr(pos + 1)\n if (isTld(str)) {\n return str\n }\n }\n return null\n}\n\n\n/**\n * @param {string} str \n */\nfunction isIPv4(str) {\n return /^(?:\\d+\\.){0,3}\\d+$/.test(str)\n}\n\n\n/**\n * @param {string} domain \n */\nfunction isTld(domain) {\n if (isIPv4(domain)) {\n return true\n }\n if (!tldSet) {\n tldSet = new Set(_tld_data_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"].split(','))\n }\n return tldSet.has(domain)\n}\n\n//# sourceURL=webpack:///./src/tld.js?");
/***/ }),
/***/ "./src/urlx.js":
/*!*********************!*\
!*** ./src/urlx.js ***!
\*********************/
/*! exports provided: packUrl, isHttpProto, newUrl, encUrlObj, encUrlStr, decUrlObj, decUrlStr */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"packUrl\", function() { return packUrl; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isHttpProto\", function() { return isHttpProto; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"newUrl\", function() { return newUrl; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"encUrlObj\", function() { return encUrlObj; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"encUrlStr\", function() { return encUrlStr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"decUrlObj\", function() { return decUrlObj; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"decUrlStr\", function() { return decUrlStr; });\n// import {\n// strSub,\n// urlGetHref,\n// } from './safe-func'\n\n\nconst PREFIX = location.origin + '/-----'\nconst PREFIX_LEN = PREFIX.length\n\n// test\nfunction packUrl(args, type) {\n const query = new URLSearchParams(args) + ''\n\n return `https://proxybest.xyz/${type}?${query}`\n}\n\n\n/**\n * @param {string} path \n */\nfunction isHttpProto(path) {\n return /^https?:/.test(path)\n}\n\n\nfunction isInternalUrl(url) {\n return !isHttpProto(url) || url.startsWith(PREFIX)\n}\n\n\n/**\n * @param {string} url \n * @param {string} baseUrl \n */\nfunction newUrl(url, baseUrl) {\n try {\n return new URL(url, baseUrl)\n } catch (err) {\n }\n}\n\n\n/**\n * @param {URL | Location} urlObj \n */\nfunction encUrlObj(urlObj) {\n const fullUrl = urlObj.href\n if (isInternalUrl(fullUrl)) {\n return fullUrl\n }\n return PREFIX + fullUrl\n}\n\n\n/**\n * @param {string} url \n * @param {string | URL} baseUrl \n * @example\n * https://www.google.com/path/to?args#frag\n * ->\n * https://example.com/-----https://www.google.com/path/to?args#frag\n */\nfunction encUrlStr(url, baseUrl) {\n const urlObj = newUrl(url, baseUrl)\n if (!urlObj) {\n return url\n }\n return encUrlObj(urlObj)\n}\n\n\n/**\n * @param {URL | Location} urlObj \n */\nfunction decUrlObj(urlObj) {\n const fullUrl = urlObj.href\n if (!fullUrl.startsWith(PREFIX)) {\n return fullUrl\n }\n return fullUrl.substr(PREFIX_LEN)\n}\n\n\n/**\n * @param {string} url \n * @param {string | URL} baseUrl \n * @example\n * https://example.com/-----https://www.google.com/path/to?args#frag\n * ->\n * https://www.google.com/path/to?args#frag\n */\nfunction decUrlStr(url, baseUrl) {\n const urlObj = newUrl(url, baseUrl)\n if (!urlObj) {\n return url\n }\n return decUrlObj(urlObj)\n}\n\n//# sourceURL=webpack:///./src/urlx.js?");
/***/ }),
/***/ "./src/util.js":
/*!*********************!*\
!*** ./src/util.js ***!
\*********************/
/*! exports provided: strToBytes, bytesToStr, isUtf8 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"strToBytes\", function() { return strToBytes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"bytesToStr\", function() { return bytesToStr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isUtf8\", function() { return isUtf8; });\nconst ENC = new TextEncoder()\n\n/**\n * @param {string} str \n */\nfunction strToBytes(str) {\n return ENC.encode(str)\n}\n\n/**\n * @param {BufferSource} bytes \n * @param {string} charset \n */\nfunction bytesToStr(bytes, charset = 'utf-8') {\n return new TextDecoder(charset).decode(bytes)\n}\n\n/**\n * @param {string} label \n */\nfunction isUtf8(label) {\n return /^utf-?8$/i.test(label)\n}\n\n\n//# sourceURL=webpack:///./src/util.js?");
/***/ }),
/***/ "./src/worker.js":
/*!***********************!*\
!*** ./src/worker.js ***!
\***********************/
/*! no static exports found */
/***/ (function(module, exports) {
eval("\n\n//# sourceURL=webpack:///./src/worker.js?");
/***/ })
/******/ });