├── .gitignore ├── doc ├── options.png ├── TODO └── migration ├── images ├── help.gif ├── off.png ├── on.png ├── on16.png ├── on48.png ├── callout.gif ├── checked.gif ├── GitHub-Mark-32px.png └── chrome_web_store.png ├── migration.html ├── _locales ├── en │ └── messages.json ├── ja │ └── messages.json ├── zh_CN │ └── messages.json └── ru │ └── messages.json ├── example.pac ├── javascripts ├── migration.js ├── options-ui.js ├── jquery.base64.js ├── popup.js └── options.js ├── stylesheets ├── popup.css ├── options.css └── chrome-bootstrap.css ├── manifest.json ├── CHANGELOG ├── README.md ├── popup.html ├── background.js ├── options.html ├── COPYING └── data └── cn.zone /.gitignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | -------------------------------------------------------------------------------- /doc/options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/henices/Chrome-proxy-helper/HEAD/doc/options.png -------------------------------------------------------------------------------- /images/help.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/henices/Chrome-proxy-helper/HEAD/images/help.gif -------------------------------------------------------------------------------- /images/off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/henices/Chrome-proxy-helper/HEAD/images/off.png -------------------------------------------------------------------------------- /images/on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/henices/Chrome-proxy-helper/HEAD/images/on.png -------------------------------------------------------------------------------- /images/on16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/henices/Chrome-proxy-helper/HEAD/images/on16.png -------------------------------------------------------------------------------- /images/on48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/henices/Chrome-proxy-helper/HEAD/images/on48.png -------------------------------------------------------------------------------- /images/callout.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/henices/Chrome-proxy-helper/HEAD/images/callout.gif -------------------------------------------------------------------------------- /images/checked.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/henices/Chrome-proxy-helper/HEAD/images/checked.gif -------------------------------------------------------------------------------- /images/GitHub-Mark-32px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/henices/Chrome-proxy-helper/HEAD/images/GitHub-Mark-32px.png -------------------------------------------------------------------------------- /images/chrome_web_store.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/henices/Chrome-proxy-helper/HEAD/images/chrome_web_store.png -------------------------------------------------------------------------------- /migration.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /doc/TODO: -------------------------------------------------------------------------------- 1 | - [ ] QuickAdd to bypasslist 2 | - [ ] Keyboard shortcut 3 | - [X] go to options page 4 | - [ ] Support xxxlist 5 | - [ ] Better china internal bypass list 6 | - [ ] Support internal bypass list edit 7 | - [X] Better UI 8 | - [X] Update information 9 | -------------------------------------------------------------------------------- /_locales/en/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appName": { 3 | "message": "Proxy Helper" 4 | }, 5 | "appDesc": { 6 | "message": "Set proxy for Google Chrome browser" 7 | }, 8 | "title": { 9 | "message": "Proxy Helper" 10 | }, 11 | "proxy_helper_options" : { 12 | "message": "Proxy Helper Options" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /example.pac: -------------------------------------------------------------------------------- 1 | 2 | const domains = { 3 | "google.com": 1, 4 | "x.com": 1 5 | }; 6 | 7 | const proxy = "SOCKS5 127.0.0.1:9999"; // 'PROXY' or 'SOCKS5' or 'HTTPS' 8 | 9 | const direct = 'DIRECT;'; 10 | 11 | 12 | function FindProxyForURL(url, host) { 13 | const suffixes = host.match(/[^\.]+\.[^\.]+$/g) || []; 14 | 15 | // Check each suffix against the domains object 16 | for (const suffix of suffixes) { 17 | if (Object.prototype.hasOwnProperty.call(domains, suffix)) { 18 | return proxy; 19 | } 20 | } 21 | 22 | return direct; 23 | } 24 | -------------------------------------------------------------------------------- /javascripts/migration.js: -------------------------------------------------------------------------------- 1 | (async () => { 2 | console.log("%s data migration. localStorage =", 3 | new Date(Date.now()).toISOString(), 4 | JSON.parse(JSON.stringify(localStorage))); 5 | 6 | let resp; 7 | if (localStorage.proxySetting != undefined) { 8 | auth = JSON.parse(localStorage.proxySetting).auth; 9 | if (auth.user != '' || auth.pass != '') { 10 | resp = chrome.runtime.sendMessage({ action: 'authUpdate', data: auth }); 11 | } 12 | } 13 | await resp; 14 | 15 | chrome.runtime.sendMessage({ action: 'migrationDone' }); 16 | })(); 17 | -------------------------------------------------------------------------------- /stylesheets/popup.css: -------------------------------------------------------------------------------- 1 | body { width: 140px; font-family: Helvetica, 'Source Han Sans CN', 'PingFang SC', 'Chrome Droid Sans', 'Droid Sans Fallback', 'Lucida Grande', 'Microsoft YaHei', Arial, sans-serif; font-size: 13px; color: #333; font-weight: 500; padding: 2px; margin: 0; overflow: hidden; } 2 | .menu { line-height: 26px; white-space: nowrap; background-repeat: no-repeat no-repeat; background-position: 6px 5px; background: transparent; display: block; } 3 | .menu .text {margin-left: .5em;} 4 | ul { list-style: none; text-align:center; margin: 0px; padding: 0px; } 5 | li { cursor: pointer; margin: 0px; padding: 0px; clear: both; overflow: hidden; text-align: center; border: 1px solid white; } 6 | ul li:hover {border-radius: 3px 3px;border: solid 1px #c5cdd3;} 7 | .separator { display: none; width: 100%; border-top: 1px solid #ddd; } 8 | .selected { color: #15C; font-weight: bolder; background-image: url(/images/checked.gif); background-repeat: no-repeat; background-position: 0.2em; } 9 | 10 | -------------------------------------------------------------------------------- /javascripts/options-ui.js: -------------------------------------------------------------------------------- 1 | $(function() { 2 | $('.menu a').click(function(ev) { 3 | ev.preventDefault(); 4 | var selected = 'selected'; 5 | 6 | $('.mainview > *').removeClass(selected); 7 | $('.menu li').removeClass(selected); 8 | setTimeout(function() { 9 | $('.mainview > *:not(.selected)').css('display', 'none'); 10 | }, 100); 11 | 12 | $(ev.currentTarget).parent().addClass(selected); 13 | var currentView = $($(ev.currentTarget).attr('href')); 14 | currentView.css('display', 'block'); 15 | setTimeout(function() { 16 | currentView.addClass(selected); 17 | }, 0); 18 | 19 | setTimeout(function() { 20 | $('body')[0].scrollTop = 0; 21 | }, 200); 22 | }); 23 | 24 | $('.mainview > *:not(.selected)').css('display', 'none'); 25 | }); 26 | 27 | 28 | document.addEventListener('DOMContentLoaded', 29 | function () { 30 | $('[data-i18n-content]').each(function() { 31 | var message = chrome.i18n.getMessage( 32 | this.getAttribute('data-i18n-content')); 33 | if (message) 34 | $(this).html(message); 35 | }); 36 | }); 37 | -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "manifest_version": 3, 4 | "default_locale": "en", 5 | "description": "__MSG_appDesc__", 6 | "name": "__MSG_appName__", 7 | "icons": { 8 | "128": "images/on.png", 9 | "48": "images/on48.png", 10 | "16": "images/on16.png" 11 | }, 12 | "permissions": [ 13 | "proxy", 14 | "tabs", 15 | "storage", 16 | "webRequest", 17 | "webRequestAuthProvider", 18 | "offscreen" 19 | ], 20 | "host_permissions": [ 21 | "*://*/*" 22 | ], 23 | "background": { 24 | "service_worker": "background.js" 25 | }, 26 | "commands": { 27 | "open-option": { 28 | "suggested_key": { 29 | "default": "Alt+O"}, 30 | "description": "Open option page" 31 | } 32 | }, 33 | "options_page": "options.html", 34 | "action": { 35 | "default_icon": "images/off.png", 36 | "default_title": "__MSG_title__", 37 | "default_popup": "popup.html" 38 | }, 39 | "update_url" : "http://clients2.google.com/service/update2/crx", 40 | "minimum_chrome_version":"88.0.0" 41 | } 42 | 43 | -------------------------------------------------------------------------------- /CHANGELOG: -------------------------------------------------------------------------------- 1 | ChangeLog 2 | =================================================== 3 | 4 | 2022-1-5 (1.4.1) 5 | 1. Updated Russian translation 6 | 7 | 2021-12-09 (1.3.9) 8 | 1. fix popup.html 9 | 10 | 2021-12-07 (1.3.8) 11 | 1. fix whitelist 12 | 13 | 2021-11-30 (1.3.7) 14 | 1. UI improvement 15 | 16 | 2021-11-27 (1.3.6) 17 | 1. add pac url support 18 | 19 | 2021-07-27 20 | 1. use pac data instead of pac url 21 | 2. update jquery to 3.6.0 22 | 3. update Russian translation 23 | 24 | 2020-12-1 (1.3.3) 25 | 1. bug fixed 26 | 2. improve UI 27 | 28 | 2020-11-23 (1.3.0) 29 | 1. support quic proxy 30 | 2. delete file:// scheme in pac mode (chrome delete file:// support in extension) 31 | 3. bugs fixed 32 | 33 | 2017-12-14 (1.2.7) 34 | 1. Change font size bigger 35 | 2. Fix some html error 36 | 3. code refactor 37 | 38 | 2014-8-12 (1.2.6) 39 | 1. Rewrite UI 40 | 41 | 2014-06-30 (1.2.5) 42 | 1. Add Alt-o keyboard shortcut to go to option page 43 | 44 | 2014-03-10 (1.2.4) 45 | 1. Support extension settings synchronize 46 | 2. Update UI 47 | 48 | 2014-02-26 (1.2.3) 49 | 1. Update internal china bypass list automatically 50 | 2. Update UI (better UI for Mac OSX users) 51 | 52 | 2013-12-18 (1.2.2) 53 | 1. Add proxy auto_detect mode support (WPAD) 54 | 2. Import old proxy settings automatically 55 | 3. Bug fixed 56 | 4. Update UI 57 | 58 | 2013-7-25 (1.2) 59 | 1. Add proxy authentication support 60 | 2. Reload proxy settings automaticlly after save 61 | 3. Add default china bypass list 62 | 4. Completely rewritten UI 63 | 5. Add Chinese language support 64 | 65 | 2012-12-7 (1.1.4) 66 | 1. Support direct mode, connect never use a proxy. 67 | 2. Update UI and bugs fixed. 68 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | By default, Chrome use the system proxy setting (IE proxy settings on Windows platform ), 3 | but sometime we want to set proxy *ONLY* for chrome, not the whole system. Chrome proxy 4 | helper extension use Chrome native proxy API to set proxy, support socks5, socks4, http 5 | and https protocol and pac script, Fast And Simple. 6 | 7 | # Features 8 | * support socks4, socks5, http, https, and quic proxy settings 9 | * support pac proxy settings 10 | * support bypass list 11 | * support online/offline pac script 12 | * support customer proxy rules 13 | * support proxy authentication 14 | * support extension settings synchronize 15 | 16 | # Install 17 | * Install the latest stable version on chrome web store by click [here](https://chrome.google.com/webstore/detail/proxy-helper/mnloefcpaepkpmhaoipjkpikbnkmbnic). 18 | * Install the unstable version by cloning the [Git](https://github.com/henices/Chrome-proxy-helper.git) repository: 19 | 20 | ``` 21 | git clone https://github.com/henices/Chrome-proxy-helper.git 22 | ``` 23 | 24 | # FAQ 25 | 26 | * [FAQ](https://github.com/henices/Chrome-proxy-helper/wiki/FAQ) 27 | 28 | ## How to use pac script in this extension 29 | 30 | Here is an example PAC script: [example.pac](https://raw.githubusercontent.com/henices/Chrome-proxy-helper/refs/heads/master/example.pac) 31 | 32 | 1. options page -> PAC -> PAC script, select the example.pac 33 | 2. popup page -> PAC Script 34 | 35 | # LICENSE 36 | This program is free software: you can redistribute it and/or modify 37 | it under the terms of the GNU General Public License as published by 38 | the Free Software Foundation, either version 2 of the License, or 39 | (at your option) any later version. 40 | 41 | This program is distributed in the hope that it will be useful, 42 | but WITHOUT ANY WARRANTY; without even the implied warranty of 43 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 44 | GNU General Public License for more details. 45 | 46 | You should have received a copy of the GNU General Public License 47 | along with this program. If not, see 48 | 49 | -------------------------------------------------------------------------------- /popup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /stylesheets/options.css: -------------------------------------------------------------------------------- 1 | .chrome-bootstrap {font-size:14px;} 2 | 3 | .mainview { margin-left: 15px } 4 | 5 | input.editor-text { width: 100%; height: 100%; border: 0; margin: 0; background: transparent; outline: 0; padding: 0; text-align: center; min-height: 1.5em !important } 6 | select.editor-yesno { width: 100%; margin: 0; vertical-align: middle } 7 | input.editor-checkbox { position: inherit; margin: 4px 3px 3px 3px !important } 8 | .field_label { /*text-align: right;*/ display: inline-block; margin-right: .5em; } 9 | .field_input { margin-left: 10px } 10 | span.clear { clear: left; display: block } 11 | section div { margin-bottom: 5px } 12 | 13 | .row_active { background-color: white !important } 14 | .row_inactive { background-color: #e5e5e5 !important } 15 | .cell_active { color: Black !important } 16 | .cell_inactive { color: #d0d0d0 !important } 17 | .cell_inactive img { -webkit-filter: grayscale(100%); filter: grayscale(100%) } 18 | .note_text { font-weight: bold } 19 | 20 | table.simpletable { margin-top: 7px; margin-bottom: 7px; font-size: 11px; color: #333; border-width: 1px; border-color: #666; border-collapse: collapse } 21 | table.simpletable th {border-width: 1px; padding: 5px; border-style: solid; border-color: #666; background-color: #f0f0f0 } 22 | table.simpletable td {border-width: 1px;padding: 3px 7px 2px 7px;border-style: solid;border-color: #666;background-color: #fff;text-align: center} 23 | table.simpletable th {cursor: pointer} 24 | table.simpletable td:first-child {white-space: nowrap} 25 | table.simpletable td:last-child {text-align: left} 26 | 27 | #opensrc_table td:last-child {text-align: center} 28 | 29 | a.tooltip {outline:none;} 30 | a.tooltip strong {line-height:30px;} 31 | a.tooltip:hover {text-decoration:none;} 32 | a.tooltip span { z-index:10;display:none; padding:14px 20px; margin-top:-30px; margin-left:28px; width:400px; line-height:16px; } 33 | a.tooltip:hover span{ display:inline; position:absolute; color:#111; border:1px solid #DCA; background:#fffAF0;} 34 | a.tooltip span { border-radius:4px; -moz-border-radius: 4px; -webkit-border-radius: 4px; -moz-box-shadow: 5px 5px 8px #CCC; -webkit-box-shadow: 5px 5px 8px #CCC; box-shadow: 5px 5px 8px #CCC; } 35 | .callout {z-index:20;position:absolute;top:30px;border:0;left:-12px;} 36 | 37 | .section * {vertical-align:middle;} 38 | .section img {margin-right:.2em;} 39 | .chrome-bootstrap a {text-decoration:none;font-size:110%;} 40 | .chrome-bootstrap a:hover {text-decoration:underline;} 41 | .socks {display:block;margin-top:.6em;margin-left:1em; border-style: none;} 42 | .ip_label {display:inline-block;width:120px; margin-right:.2em;} 43 | .port_label {display:inline-block;width:60px; margin-left:.5em;} 44 | -------------------------------------------------------------------------------- /_locales/ja/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appName": { 3 | "message" : "プロキシーヘルパー" 4 | }, 5 | "appDesc": { 6 | "message" : "Google Chromeのプロキシーサーバーを設定します" 7 | }, 8 | "title" : { 9 | "message" : "プロキシーヘルパー" 10 | }, 11 | "advanced_settings" : { 12 | "message" : "詳細設定" 13 | }, 14 | "pac_script" : { 15 | "message" : "PACスクリプト:" 16 | }, 17 | "http_proxy" : { 18 | "message" : "HTTPプロキシー:" 19 | }, 20 | "https_proxy" : { 21 | "message" : "HTTPSプロキシー:" 22 | }, 23 | "quic_proxy" : { 24 | "message" : "QUICプロキシー:" 25 | }, 26 | "socks_proxy" : { 27 | "message" : "SOCKSプロキシー:" 28 | }, 29 | "system_proxy" : { 30 | "message" : "システムプロキシー" 31 | }, 32 | "direct_proxy" : { 33 | "message" : "プロキシーなし" 34 | }, 35 | "port" : { 36 | "message" : "ポート:" 37 | }, 38 | "proxy_rules" : { 39 | "message" : "プロキシールール: " 40 | }, 41 | "use_predefine_list" : { 42 | "message" : "既定のプロキシーを経由しない接続先リストを利用する" 43 | }, 44 | "config_bypasslist" : { 45 | "message" : "プロキシーを経由しない接続先リスト" 46 | }, 47 | "domain_in_bypasslist" : { 48 | "message" : "プロキシーを経由しないホスト名のリスト" 49 | }, 50 | "user" : { 51 | "message" : "ユーザー:" 52 | }, 53 | "pass" : { 54 | "message" : "パスワード:" 55 | }, 56 | "authentication" : { 57 | "message" : "認証情報" 58 | }, 59 | "authConfig" : { 60 | "message" : "認証" 61 | }, 62 | "pac_data" : { 63 | "message" : "PACファイル" 64 | }, 65 | "pac_data_set" : { 66 | "message" : "PACスクリプト" 67 | }, 68 | "pac_url_set" : { 69 | "message" : "PAC URL" 70 | }, 71 | "socks_proxy_set" : { 72 | "message" : "SOCKSプロキシー" 73 | }, 74 | "http_proxy_set" : { 75 | "message" : "HTTPプロキシー" 76 | }, 77 | "https_proxy_set" : { 78 | "message" : "HTTPSプロキシー" 79 | }, 80 | "quic_proxy_set" : { 81 | "message" : "QUICプロキシー" 82 | }, 83 | "auto_detect_set" : { 84 | "message" : "自動検出" 85 | }, 86 | "General": { 87 | "message" : "全般" 88 | }, 89 | "Rules" : { 90 | "message" : "ルール" 91 | }, 92 | "Help" : { 93 | "message" : "ヘルプ" 94 | }, 95 | "About" : { 96 | "message" : "プロキシーヘルパーについて" 97 | }, 98 | "Options" : { 99 | "message" : "オプション" 100 | }, 101 | "proxy_servers" : { 102 | "message" : "プロキシーサーバー" 103 | }, 104 | "rules_mode": { 105 | "message": "ルールのモード" 106 | }, 107 | "Whitelist": { 108 | "message": "ホワイトリスト" 109 | } 110 | } 111 | -------------------------------------------------------------------------------- /_locales/zh_CN/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appName": { 3 | "message" : "代理助手" 4 | }, 5 | "appDesc": { 6 | "message" : "为Google Chrome 浏览器设置代理" 7 | }, 8 | "title" : { 9 | "message" : "代理助手" 10 | }, 11 | "proxy_helper_options" : { 12 | "message" : "代理助手选项" 13 | }, 14 | "proxy_information" : { 15 | "message" : "浏览器代理设置" 16 | }, 17 | "config_auto": { 18 | "message" : "自动设置代理" 19 | }, 20 | "config_manual": { 21 | "message" : "手动设置代理" 22 | }, 23 | "show_adv" : { 24 | "message" : "显示高级设置" 25 | }, 26 | "advanced_settings" : { 27 | "message" : "高级设置" 28 | }, 29 | "download" : { 30 | "message" : "下载" 31 | }, 32 | "pac_url": { 33 | "message" : "在线PAC网址" 34 | }, 35 | "online_pac_script" : { 36 | "message" : "使用在线PAC脚本" 37 | }, 38 | "save" : { 39 | "message" : "保存" 40 | }, 41 | "edit" : { 42 | "message" : "编辑" 43 | }, 44 | "cancel" : { 45 | "message" : "取消" 46 | }, 47 | "proxy": { 48 | "message" : "代理" 49 | }, 50 | "pac_script" : { 51 | "message" : "PAC 脚本" 52 | }, 53 | "http_proxy" : { 54 | "message" : "HTTP 代理:" 55 | }, 56 | "https_proxy" : { 57 | "message" : "HTTPS代理:" 58 | }, 59 | "quic_proxy" : { 60 | "message" : "QUIC代理:" 61 | }, 62 | "socks_proxy" : { 63 | "message" : "SOCKS代理:" 64 | }, 65 | "system_proxy" : { 66 | "message" : "系统代理" 67 | }, 68 | "direct_proxy" : { 69 | "message" : "直接连接" 70 | }, 71 | "port" : { 72 | "message" : "端口:" 73 | }, 74 | "pac_path" : { 75 | "message" : "PAC文件路径:" 76 | }, 77 | "edit_pac_data" : { 78 | "message" : "编辑PAC脚本" 79 | }, 80 | "bypass_list" : { 81 | "message" : "BYPASS列表" 82 | }, 83 | "proxy_rules" : { 84 | "message" : "PROXY模式: " 85 | }, 86 | "return" : { 87 | "message" : "返回" 88 | }, 89 | "use_predefine_list" : { 90 | "message" : "使用内置白名单" 91 | }, 92 | "config_bypasslist" : { 93 | "message" : "设置代理白名单" 94 | }, 95 | "domain_in_bypasslist" : { 96 | "message" : "在白名单里的域名将不使用代理" 97 | }, 98 | "user" : { 99 | "message" : "用户:" 100 | }, 101 | "pass" : { 102 | "message" : "密码:" 103 | }, 104 | "authentication" : { 105 | "message" : "认证设置" 106 | }, 107 | "authConfig" : { 108 | "message" : "认证" 109 | }, 110 | "pac_data" : { 111 | "message" : "Pac 脚本" 112 | }, 113 | "password_authentication": { 114 | "message" : "使用密码认证" 115 | }, 116 | "pac_data_set" : { 117 | "message" : "PAC Script" 118 | }, 119 | "pac_url_set" : { 120 | "message" : "PAC Url" 121 | }, 122 | "socks_proxy_set" : { 123 | "message" : "SOCKS代理" 124 | }, 125 | "http_proxy_set" : { 126 | "message" : "HTTP代理" 127 | }, 128 | "https_proxy_set" : { 129 | "message" : "HTTPS代理" 130 | }, 131 | "quic_proxy_set" : { 132 | "message" : "QUIC代理" 133 | }, 134 | "auto_detect_set" : { 135 | "message" : "自动检测" 136 | }, 137 | "General": { 138 | "message" : "常规" 139 | }, 140 | "Rules" : { 141 | "message" : "规则" 142 | }, 143 | "Help" : { 144 | "message" : "帮助" 145 | }, 146 | "About" : { 147 | "message" : "关于" 148 | }, 149 | "Options" : { 150 | "message" : "选项" 151 | }, 152 | "proxy_servers" : { 153 | "message" : "代理服务器" 154 | }, 155 | "config_proxylist": { 156 | "message": "设置代理黑名单" 157 | }, 158 | "domain_in_proxy": { 159 | "message": "在黑名单里的域名将使用代理" 160 | }, 161 | "rules_mode": { 162 | "message": "设置规则模式" 163 | }, 164 | "Whitelist": { 165 | "message": "白名单" 166 | }, 167 | "Blacklist": { 168 | "message": "黑名单" 169 | } 170 | } 171 | 172 | -------------------------------------------------------------------------------- /doc/migration: -------------------------------------------------------------------------------- 1 | Migration from Manifest v2 (MV2) to v3 (MV3) 2 | 3 | In MV2, the scripts included from options.html and popup.html and the 4 | background script all share the same persistent storage, 5 | window.localStorage, which is initialized when the JS pages are 6 | loaded. Changes to the localStorage object are persisted automatically. 7 | 8 | In MV3, the background script is migrated to service worker, and it 9 | does not share the localStorage with the other scripts. Instead, 10 | persistent data storage is managed separately by the chrome.storage 11 | API, which must be loaded and saved explicitly via the async API 12 | calls. Additionally, the service worker lifecycle is managed by the 13 | browser with the browser terminating the instance after some amount of 14 | inactivity, and re-creating when needed. 15 | 16 | 17 | Extension storage design 18 | 19 | In order to make the migration simple, for understanding and reviewing 20 | the changes, the persistent storage strategy is chosen for minimal 21 | changes from the existing design. 22 | 23 | In MV2, the extension's main logic and data storage is handled by 24 | options.html and popup.html, and the background script only deals with 25 | supplying the Proxy Authorization credentials when asked by the 26 | browser. In MV3, this is still the case, and so the service worker 27 | must be notified of changes to the credential information that is 28 | managed by the user via options.html. This credential information 29 | must be persisted, and used by the service worker when the browser 30 | needs to access a proxy that requires authorization. 31 | 32 | As a matter of fact, this information is all that is needed to be 33 | managed by the service worker with the chrome.storage API. However, 34 | since this information is part of the proxySetting object, the service 35 | worker will save the whole object. The only data that is relevant for 36 | actual usage, thus, is the 'auth' property. 37 | 38 | When the extension is first installed, the background.js in MV2 39 | creates a proxySetting object from its template and store in the 40 | shared localStorage. The options.js and popup.js use this initialized 41 | object for their operations. In MV3, the service worker still 42 | initializes this object from its template, but this object is not 43 | shared automatically with options.js and popup.js. Instead, it 44 | persists this template into chrome.storage. When options.js first 45 | runs, it retrieves this initial object from chrome.storage and loads 46 | it into the shared localStorage. This is the only time where the 47 | non-service workers JS scripts interacts with the chrome.storage API. 48 | This is another reason of persisting the whole proxySetting object into 49 | chrome.storage. 50 | 51 | 52 | Storage usage scenario 53 | 54 | When the extension is first installed: 55 | - both chrome.storage and localStorage are empty 56 | - service worker initializes, creates, and persists the default 57 | proxySetting into chrome.storage 58 | - options.js starts, retrieves the initial proxySetting from 59 | chrome.storage, and populates to localStorage 60 | - options.js and other JS scripts use localStorage as normal 61 | 62 | When the extension restarts (due to browser restarts) or reloads 63 | (extension update): 64 | - both chrome.storage and localStorage are populated. No special 65 | handling needed 66 | 67 | During normal operation: 68 | - options.js notifies the service worker of any changes to the 69 | proxy authorization credentials by message passing. Service worker 70 | persists this into chrome.storage 71 | - When asked by the browser, service worker provides the 72 | credentials to access the proxy in use 73 | - Service worker comes and goes, and credential information is 74 | lazy-loaded only when needed 75 | 76 | During update migration of installed MV2 extension to MV3: 77 | - localStorage is populated with valid data 78 | - chrome.storage is empty, and the service worker populates the 79 | template proxySetting into chrome.storage, but this does not have 80 | valid proxy authorization credentials 81 | - the onInstall handler sees a reason of "update", which means this 82 | is the MV2 to MV3 migration, and it kicks off the migration 83 | offscreen page 84 | - the offscreen page JS code checks localStorage to see if it has 85 | non-empty credentials, and sends a message to the service worker 86 | to update the credentials in chrome.storage 87 | -------------------------------------------------------------------------------- /_locales/ru/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "appName": { 3 | "message" : "Помощник прокси" 4 | }, 5 | "appDesc": { 6 | "message" : "Управление прокси в браузере Google Chrome" 7 | }, 8 | "title" : { 9 | "message" : "Помощник прокси" 10 | }, 11 | "proxy_helper_options" : { 12 | "message" : "Настройки «Помощника прокси»" 13 | }, 14 | "proxy_information" : { 15 | "message" : "Настройки прокси" 16 | }, 17 | "config_auto": { 18 | "message" : "Автоматическая настройка" 19 | }, 20 | "config_manual": { 21 | "message" : "Ручная настройка" 22 | }, 23 | "show_adv" : { 24 | "message" : "Показывать дополнительные настройки" 25 | }, 26 | "advanced_settings" : { 27 | "message" : "Дополнительные настройки" 28 | }, 29 | "download" : { 30 | "message" : "Загрузить" 31 | }, 32 | "pac_url": { 33 | "message" : "Адрес PAC" 34 | }, 35 | "online_pac_script" : { 36 | "message" : "Использовать PAC-скрипт из сети" 37 | }, 38 | "save" : { 39 | "message" : "Сохранить" 40 | }, 41 | "edit" : { 42 | "message" : "Изменить" 43 | }, 44 | "cancel" : { 45 | "message" : "Отмена" 46 | }, 47 | "proxy": { 48 | "message" : "Прокси" 49 | }, 50 | "pac_script" : { 51 | "message" : "PAC-скрипт" 52 | }, 53 | "http_proxy" : { 54 | "message" : "HTTP-прокси:" 55 | }, 56 | "https_proxy" : { 57 | "message" : "HTTPS-прокси:" 58 | }, 59 | "quic_proxy" : { 60 | "message" : "QUIC-прокси:" 61 | }, 62 | "socks_proxy" : { 63 | "message" : "SOCKS-прокси:" 64 | }, 65 | "system_proxy" : { 66 | "message" : "Системный" 67 | }, 68 | "direct_proxy" : { 69 | "message" : "Без прокси" 70 | }, 71 | "port" : { 72 | "message" : "Порт:" 73 | }, 74 | "pac_path" : { 75 | "message" : "PAC-файл:" 76 | }, 77 | "edit_pac_data" : { 78 | "message" : "Редактировать PAC-скрипт" 79 | }, 80 | "bypass_list" : { 81 | "message" : "Белый список" 82 | }, 83 | "proxy_rules" : { 84 | "message" : "Режим прокси:" 85 | }, 86 | "return" : { 87 | "message" : "Назад" 88 | }, 89 | "use_predefine_list" : { 90 | "message" : "Использовать встроенный белый список" 91 | }, 92 | "config_bypasslist" : { 93 | "message" : "Белый список прокси" 94 | }, 95 | "domain_in_bypasslist" : { 96 | "message" : "Имена в белом списке не будут использовать прокси" 97 | }, 98 | "user" : { 99 | "message" : "Пользователь:" 100 | }, 101 | "pass" : { 102 | "message" : "Пароль:" 103 | }, 104 | "authentication" : { 105 | "message" : "Настройки аутентификации" 106 | }, 107 | "authConfig" : { 108 | "message" : "Аутентификация" 109 | }, 110 | "pac_data" : { 111 | "message" : "PAC-скрипт" 112 | }, 113 | "password_authentication": { 114 | "message" : "Использовать пароль" 115 | }, 116 | "pac_data_set" : { 117 | "message" : "PAC-скрипт" 118 | }, 119 | "pac_url_set" : { 120 | "message" : "URL PAC-файла" 121 | }, 122 | "socks_proxy_set" : { 123 | "message" : "SOCKS-прокси" 124 | }, 125 | "http_proxy_set" : { 126 | "message" : "HTTP-прокси" 127 | }, 128 | "https_proxy_set" : { 129 | "message" : "HTTPS-прокси" 130 | }, 131 | "quic_proxy_set" : { 132 | "message" : "QUIC-прокси" 133 | }, 134 | "auto_detect_set" : { 135 | "message" : "Автоматически" 136 | }, 137 | "General": { 138 | "message" : "Основные" 139 | }, 140 | "Rules" : { 141 | "message" : "Правила" 142 | }, 143 | "Help" : { 144 | "message" : "Помощь" 145 | }, 146 | "About" : { 147 | "message" : "Информация" 148 | }, 149 | "Options" : { 150 | "message" : "Настройки" 151 | }, 152 | "proxy_servers" : { 153 | "message" : "Прокси" 154 | }, 155 | "config_proxylist": { 156 | "message": "Чёрный список для прокси" 157 | }, 158 | "domain_in_proxy": { 159 | "message": "Домены в чёрном списке будут использовать прокси" 160 | }, 161 | "rules_mode": { 162 | "message": "Настройка режима правил" 163 | }, 164 | "Whitelist": { 165 | "message": "Белый список" 166 | }, 167 | "Blacklist": { 168 | "message": "Чёрный список" 169 | } 170 | } 171 | 172 | -------------------------------------------------------------------------------- /javascripts/jquery.base64.js: -------------------------------------------------------------------------------- 1 | /** 2 | * jQuery BASE64 functions 3 | * 4 | * 5 | * Encodes the given data with base64. 6 | * String $.base64Encode ( String str ) 7 | *
8 | * Decodes a base64 encoded data. 9 | * String $.base64Decode ( String str ) 10 | *
11 | * 12 | * Encodes and Decodes the given data in base64. 13 | * This encoding is designed to make binary data survive transport through transport layers that are not 8-bit clean, such as mail bodies. 14 | * Base64-encoded data takes about 33% more space than the original data. 15 | * This javascript code is used to encode / decode data using base64 (this encoding is designed to make binary data survive transport through transport layers that are not 8-bit clean). Script is fully compatible with UTF-8 encoding. You can use base64 encoded data as simple encryption mechanism. 16 | * If you plan using UTF-8 encoding in your project don't forget to set the page encoding to UTF-8 (Content-Type meta tag). 17 | * This function orginally get from the WebToolkit and rewrite for using as the jQuery plugin. 18 | * 19 | * Example 20 | * Code 21 | * 22 | * $.base64Encode("I'm Persian."); 23 | * 24 | * Result 25 | * 26 | * "SSdtIFBlcnNpYW4u" 27 | * 28 | * Code 29 | * 30 | * $.base64Decode("SSdtIFBlcnNpYW4u"); 31 | * 32 | * Result 33 | * 34 | * "I'm Persian." 35 | * 36 | * 37 | * @alias Muhammad Hussein Fattahizadeh < muhammad [AT] semnanweb [DOT] com > 38 | * @link http://www.semnanweb.com/jquery-plugin/base64.html 39 | * @see http://www.webtoolkit.info/ 40 | * @license http://www.gnu.org/licenses/gpl.html [GNU General Public License] 41 | * @param {jQuery} {base64Encode:function(input)) 42 | * @param {jQuery} {base64Decode:function(input)) 43 | * @return string 44 | */ 45 | 46 | (function ($) { 47 | 48 | var keyString = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; 49 | 50 | var utf8Encode = function (string) { 51 | string = string.replace(/\x0d\x0a/g, "\x0a"); 52 | var output = ""; 53 | for (var n = 0; n < string.length; n++) { 54 | var c = string.charCodeAt(n); 55 | if (c < 128) { 56 | output += String.fromCharCode(c); 57 | } else if ((c > 127) && (c < 2048)) { 58 | output += String.fromCharCode((c >> 6) | 192); 59 | output += String.fromCharCode((c & 63) | 128); 60 | } else { 61 | output += String.fromCharCode((c >> 12) | 224); 62 | output += String.fromCharCode(((c >> 6) & 63) | 128); 63 | output += String.fromCharCode((c & 63) | 128); 64 | } 65 | } 66 | return output; 67 | }; 68 | 69 | var utf8Decode = function (input) { 70 | var string = ""; 71 | var i = 0; 72 | var c = c1 = c2 = 0; 73 | while (i < input.length) { 74 | c = input.charCodeAt(i); 75 | if (c < 128) { 76 | string += String.fromCharCode(c); 77 | i++; 78 | } else if ((c > 191) && (c < 224)) { 79 | c2 = input.charCodeAt(i + 1); 80 | string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); 81 | i += 2; 82 | } else { 83 | c2 = input.charCodeAt(i + 1); 84 | c3 = input.charCodeAt(i + 2); 85 | string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); 86 | i += 3; 87 | } 88 | } 89 | return string; 90 | }; 91 | 92 | $.extend({ 93 | base64Encode:function (input) { 94 | var output = ""; 95 | var chr1, chr2, chr3, enc1, enc2, enc3, enc4; 96 | var i = 0; 97 | input = utf8Encode(input); 98 | while (i < input.length) { 99 | chr1 = input.charCodeAt(i++); 100 | chr2 = input.charCodeAt(i++); 101 | chr3 = input.charCodeAt(i++); 102 | enc1 = chr1 >> 2; 103 | enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); 104 | enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); 105 | enc4 = chr3 & 63; 106 | if (isNaN(chr2)) { 107 | enc3 = enc4 = 64; 108 | } else if (isNaN(chr3)) { 109 | enc4 = 64; 110 | } 111 | output = output + keyString.charAt(enc1) + keyString.charAt(enc2) + keyString.charAt(enc3) + keyString.charAt(enc4); 112 | } 113 | return output; 114 | }, 115 | base64Decode:function (input) { 116 | var output = ""; 117 | var chr1, chr2, chr3; 118 | var enc1, enc2, enc3, enc4; 119 | var i = 0; 120 | input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); 121 | while (i < input.length) { 122 | enc1 = keyString.indexOf(input.charAt(i++)); 123 | enc2 = keyString.indexOf(input.charAt(i++)); 124 | enc3 = keyString.indexOf(input.charAt(i++)); 125 | enc4 = keyString.indexOf(input.charAt(i++)); 126 | chr1 = (enc1 << 2) | (enc2 >> 4); 127 | chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); 128 | chr3 = ((enc3 & 3) << 6) | enc4; 129 | output = output + String.fromCharCode(chr1); 130 | if (enc3 != 64) { 131 | output = output + String.fromCharCode(chr2); 132 | } 133 | if (enc4 != 64) { 134 | output = output + String.fromCharCode(chr3); 135 | } 136 | } 137 | output = utf8Decode(output); 138 | return output; 139 | } 140 | }); 141 | return 0; 142 | })(jQuery); -------------------------------------------------------------------------------- /background.js: -------------------------------------------------------------------------------- 1 | var localStorage = {}; 2 | 3 | function setProxyIcon() { 4 | 5 | var icon = { 6 | path: "images/off.png", 7 | } 8 | 9 | chrome.proxy.settings.get( 10 | {'incognito': false}, 11 | function(config) { 12 | if (config["value"]["mode"] == "system") { 13 | chrome.action.setIcon(icon); 14 | } else if (config["value"]["mode"] == "direct") { 15 | chrome.action.setIcon(icon); 16 | } else { 17 | icon["path"] = "images/on.png"; 18 | chrome.action.setIcon(icon); 19 | } 20 | } 21 | ); 22 | } 23 | 24 | function gotoPage(url) { 25 | 26 | var fulurl = chrome.runtime.getURL(url); 27 | chrome.tabs.query({ url: fulurl }, function(tabs) { 28 | if (tabs.length) { 29 | chrome.tabs.update(tabs[0].id, { selected: true }); 30 | chrome.windows.update(tabs[0].windowId, { focused: true }); 31 | return; 32 | } 33 | chrome.tabs.create({url: url, active: true}); 34 | }); 35 | } 36 | 37 | async function callbackFn(details, cb) { 38 | console.log("%s onAuthRequiredCB", new Date(Date.now()).toISOString()); 39 | 40 | if (localStorage.proxySetting == undefined) 41 | await getLocalStorage(); 42 | 43 | var proxySetting = JSON.parse(localStorage.proxySetting); 44 | 45 | if (proxySetting){ 46 | var auth = proxySetting['auth']; 47 | var username = auth['user']; 48 | var password = auth['pass']; 49 | } 50 | 51 | if (proxySetting['auth']['user'] == '' && 52 | proxySetting['auth']['pass'] == '') 53 | cb({}); 54 | 55 | cb({ authCredentials: {username: username, password: password} }); 56 | } 57 | 58 | chrome.webRequest.onAuthRequired.addListener( 59 | callbackFn, 60 | {urls: [""]}, 61 | ['asyncBlocking'] ); 62 | 63 | chrome.runtime.onMessage.addListener((msg, sender, res) => { 64 | if (msg.action != "authUpdate") 65 | return; 66 | 67 | (async () => { 68 | console.log("%s receive authUpdate", new Date(Date.now()).toISOString()); 69 | if (localStorage.proxySetting == undefined) 70 | await getLocalStorage(); 71 | 72 | var proxySetting = JSON.parse(localStorage.proxySetting); 73 | proxySetting['auth'] = msg.data; 74 | localStorage.proxySetting = JSON.stringify(proxySetting); 75 | await chrome.storage.local.set(localStorage); 76 | 77 | console.log("%s sending authUpdate response", new Date(Date.now()).toISOString()); 78 | res('done'); 79 | })(); 80 | 81 | return true; 82 | }); 83 | 84 | var proxySetting = { 85 | 'pac_script_url' : {'http': '', 'https': '', 'file' : ''}, 86 | 'pac_type' : 'file://', 87 | 'http_host' : '', 88 | 'http_port' : '', 89 | 'https_host' : '', 90 | 'https_port' : '', 91 | 'socks_host' : '', 92 | 'socks_port' : '', 93 | 'socks_type' : 'socks5', 94 | 'bypasslist' : ',192.168.0.0/16,172.16.0.0/12,169.254.0.0/16,10.0.0.0/8', 95 | 'proxy_rule' : 'singleProxy', 96 | 'internal' : '', 97 | 'auth' : {'enable': '', 'user': '', 'pass': ''}, 98 | 'rules_mode' : 'Whitelist' 99 | } 100 | 101 | var chinaList = ['*.cn'] 102 | 103 | localStorage.chinaList = JSON.stringify(chinaList); 104 | 105 | function getBypass() { 106 | var req = new XMLHttpRequest(); 107 | var url = "https://raw.github.com/henices/Chrome-proxy-helper/master/data/cn.bypasslist"; 108 | req.open('GET', url, true); 109 | req.onreadystatechange = processResponse; 110 | req.send(null); 111 | 112 | function processResponse() { 113 | if (req.readyState == 4 && 114 | req.status == 200) { 115 | localStorage.chinaList = JSON.stringify(req.responseText.split(',')); 116 | } else 117 | localStorage.chinaList = JSON.stringify(chinaList); 118 | } 119 | } 120 | 121 | chrome.runtime.onInstalled.addListener(async details => { 122 | var store = await getLocalStorage(); 123 | if (store.proxySetting == undefined) { 124 | localStorage.proxySetting = JSON.stringify(proxySetting); 125 | await chrome.storage.local.set(localStorage); 126 | 127 | if (details.reason == "update") { 128 | chrome.runtime.onMessage.addListener((msg, sender, res) => { 129 | if (msg.action != "migrationDone") 130 | return; 131 | 132 | console.log("%s data migration done", new Date(Date.now()).toISOString()); 133 | chrome.offscreen.closeDocument(); 134 | }); 135 | 136 | console.log("%s starting data migration", new Date(Date.now()).toISOString()); 137 | chrome.offscreen.createDocument({ 138 | url: 'migration.html', 139 | reasons: ['LOCAL_STORAGE'], 140 | justification: 'Migrate storage data for MV2 to MV3', 141 | }); 142 | } 143 | } 144 | if(details.reason == "install") { 145 | gotoPage('options.html'); 146 | } 147 | /* 148 | else if(details.reason == "update") { 149 | gotoPage('CHANGELOG'); 150 | } 151 | */ 152 | }); 153 | 154 | function getLocalStorage() { 155 | console.trace("%s getLocalStorage", new Date(Date.now()).toISOString()); 156 | return chrome.storage.local.get(null).then(result => { 157 | console.log("%s getLocalStorage: result = %O", new Date(Date.now()).toISOString(), result); 158 | if (result.proxySetting != undefined) { 159 | Object.assign(localStorage, result); 160 | } 161 | return result; 162 | }); 163 | } 164 | 165 | 166 | chrome.commands.onCommand.addListener(function(command) { 167 | if (command == 'open-option') 168 | gotoPage('options.html'); 169 | }); 170 | 171 | // sync extension settings from google cloud 172 | //chrome.storage.sync.get('proxySetting', function(val) { 173 | // if (typeof val.proxySetting !== "undefined") 174 | // localStorage.proxySetting = val.proxySetting; 175 | //}); 176 | 177 | chrome.proxy.onProxyError.addListener(function(details) { 178 | console.log("fatal: ", details.fatal); 179 | console.log("error: ", details.error); 180 | console.log("details: ", details.details) 181 | }); 182 | 183 | console.log("%s service worker initialized", new Date(Date.now()).toISOString()); 184 | setProxyIcon(); 185 | 186 | // sync bypass list from github.com 187 | //getBypass(); 188 | //setInterval(function() { getBypass(); }, interval); 189 | //var interval = 1000 * 60 * 60; 190 | 191 | 192 | -------------------------------------------------------------------------------- /options.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Options 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 38 |
39 |
40 |

41 |
42 |

Proxy servers

43 |
44 |
45 | HTTP PROXY: 46 | 47 | PORT: 48 | 49 |
50 |
51 | HTTPS PROXY: 52 | 53 | PORT: 54 | 55 |
56 |
57 | SOCKS PROXY: 58 | 59 | PORT: 60 | 61 |
62 |
63 | 64 | SOCKS4 65 | 66 | SOCKS5 67 |
68 |
69 | QUIC PROXY: 70 | 71 | PORT: 72 | 73 |
74 |
75 |

Advanced settings

76 |
77 |
78 | Proxy mode: 79 | 86 |
87 |
88 |
89 |
90 |
91 |

92 |
93 | 102 |
103 |

Bypass List

104 |

Domains in bypass list will Never use a proxy

105 | 118 |

Use internal proxy bypass list

119 |
120 | 121 | China List 122 |
123 |
124 | 133 |
134 |
135 |
136 |

137 |
138 |

Authentication

139 |
140 | 151 |
152 | Password: 153 | 154 |
155 |
156 |
157 |
158 |
159 |

160 |
161 |

Pac URL

162 |
163 | 164 |
182 |

Pac Script

183 |
184 |
185 | 186 |
187 |
188 | 189 |
190 |
191 |
192 |
193 |
194 |

About

195 |
196 |

Chrome Web Store

197 |
198 | 199 | Proxy Helper 200 |
201 |

Open Source Licenses

202 |
203 |
204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 |
LibraryLicense
jQueryLICENSE.txt
chrome-bootstrapMIT
224 |
225 |
226 |
227 |
228 | 229 |
230 |
231 | 232 | 233 | -------------------------------------------------------------------------------- /javascripts/popup.js: -------------------------------------------------------------------------------- 1 | // Chrome Proxy helper 2 | // popup.js 3 | // https://raw.github.com/henices/Chrome-proxy-helper/master/javascripts/popup.js 4 | 5 | /** 6 | * @fileoverview 7 | * 8 | * @author: zhouzhenster@gmail.com 9 | */ 10 | 11 | var proxySetting = JSON.parse(localStorage.proxySetting); 12 | var proxyRule = proxySetting['proxy_rule']; 13 | var bypasslist = proxySetting['bypasslist']; 14 | var socksHost = proxySetting['socks_host']; 15 | var socksPort = proxySetting['socks_port']; 16 | var socksType = proxySetting['socks_type']; 17 | var httpHost = proxySetting['http_host']; 18 | var httpPort = proxySetting['http_port']; 19 | var httpsHost = proxySetting['https_host']; 20 | var httpsPort = proxySetting['https_port']; 21 | var pacData = proxySetting['pac_data']; 22 | var pacUrlType = proxySetting['pac_type'].split(':')[0]; 23 | var pacScriptUrl = proxySetting['pac_script_url']; 24 | var quicHost = proxySetting['quic_host']; 25 | var quicPort = proxySetting['quic_port']; 26 | var chinaList = JSON.parse(localStorage.chinaList); 27 | 28 | if (proxySetting['internal'] == 'china') { 29 | bypasslist = chinaList.concat(bypasslist.split(',')); 30 | } else 31 | bypasslist = bypasslist ? bypasslist.split(',') : ['']; 32 | 33 | 34 | /** 35 | * set help message for popup page 36 | * 37 | */ 38 | function add_li_title() { 39 | var _http, _https, _socks, _pac, _quic; 40 | 41 | if (httpHost && httpPort) { 42 | _http = 'http://' + httpHost + ':' + httpPort; 43 | $('#http-proxy').attr('title', _http); 44 | } 45 | 46 | if (pacData) { 47 | $('#pac-data-proxy').attr('title', "pac data"); 48 | } 49 | 50 | if (pacUrlType) { 51 | if (pacScriptUrl[pacUrlType]) { 52 | _pac = proxySetting['pac_type'] + pacScriptUrl[pacUrlType] 53 | $('#pac-url-proxy').attr('title', _pac); 54 | } 55 | } 56 | 57 | if (httpsHost && httpsPort) { 58 | _https = 'https://' + httpsHost + ':' + httpsPort; 59 | $('#https-proxy').attr('title', _https); 60 | } 61 | 62 | if (socksHost && socksPort) { 63 | _socks = socksType + '://' + socksHost + ':' + socksPort; 64 | $('#socks5-proxy').attr('title', _socks); 65 | } 66 | 67 | if (quicHost && quicPort) { 68 | _quic = 'quic://' + quicHost + ':' + quicPort; 69 | } 70 | 71 | } 72 | 73 | /** 74 | * set popup page item blue color 75 | * 76 | */ 77 | function color_proxy_item() { 78 | var mode, rules, proxyRule, scheme; 79 | 80 | chrome.proxy.settings.get({'incognito': false}, 81 | function(config) { 82 | //console.log(JSON.stringify(config)); 83 | mode = config['value']['mode']; 84 | rules = config['value']['rules']; 85 | 86 | if (rules) { 87 | if (rules.hasOwnProperty('singleProxy')) { 88 | proxyRule = 'singleProxy'; 89 | } else if (rules.hasOwnProperty('proxyForHttp')) { 90 | proxyRule = 'proxyForHttp'; 91 | } else if (rules.hasOwnProperty('proxyForHttps')) { 92 | proxyRule = 'proxyForHttps' 93 | } else if (rules.hasOwnProperty('proxyForFtp')) { 94 | proxyRule = 'proxyForFtp'; 95 | } else if (rules.hasOwnProperty('fallbackProxy')) { 96 | proxyRule = 'fallbackProxy'; 97 | } 98 | 99 | } 100 | 101 | if (mode == 'system') { 102 | $('#sys-proxy').addClass('selected'); 103 | } else if (mode == 'direct') { 104 | $('#direct-proxy').addClass('selected'); 105 | } else if (mode == 'pac_script') { 106 | if (localStorage.proxyInfo == 'pac_url') 107 | $('#pac-url-proxy').addClass('selected'); 108 | else 109 | $('#pac-data-proxy').addClass('selected'); 110 | } else if (mode == 'auto_detect') { 111 | $('#auto-detect').addClass('selected'); 112 | }else { 113 | scheme = rules[proxyRule]['scheme']; 114 | 115 | if (scheme == 'http') { 116 | $('#http-proxy').addClass('selected'); 117 | } else if (scheme == 'https') { 118 | $('#https-proxy').addClass('selected'); 119 | } else if (scheme == 'socks5') { 120 | $('#socks5-proxy').addClass('selected'); 121 | } else if (scheme == 'socks4') { 122 | $('#socks5-proxy').addClass('selected'); 123 | } else if (scheme == 'quic') { 124 | $('#quic-proxy').addClass('selected'); 125 | } 126 | } 127 | }); 128 | } 129 | 130 | /** 131 | * set the icon on or off 132 | * 133 | */ 134 | function iconSet(str) { 135 | 136 | var icon = { 137 | path: 'images/on.png', 138 | } 139 | if (str == 'off') { 140 | icon['path'] = 'images/off.png'; 141 | } 142 | chrome.action.setIcon(icon); 143 | } 144 | 145 | function proxySelected(str) { 146 | var id = '#' + str; 147 | $('li').removeClass('selected'); 148 | $(id).addClass('selected'); 149 | } 150 | 151 | /** 152 | * set pac script proxy 153 | * 154 | */ 155 | function pacDatatProxy() { 156 | 157 | var config = { 158 | mode: 'pac_script', 159 | pacScript: { 160 | }, 161 | }; 162 | 163 | config['pacScript']['data'] = pacData; 164 | localStorage.proxyInfo = 'pac_data'; 165 | 166 | chrome.proxy.settings.set( 167 | {value: config, scope: 'regular'}, 168 | function() {}); 169 | 170 | iconSet('on'); 171 | proxySelected('pac-data-proxy'); 172 | } 173 | 174 | /** 175 | * set pac url proxy 176 | * 177 | */ 178 | function pacUrlProxy() { 179 | 180 | var config = { 181 | mode: 'pac_script', 182 | pacScript: { 183 | }, 184 | }; 185 | 186 | config['pacScript']['url'] = proxySetting['pac_type'] + pacScriptUrl[pacUrlType]; 187 | localStorage.proxyInfo = 'pac_url'; 188 | 189 | chrome.proxy.settings.set( 190 | {value: config, scope: 'regular'}, 191 | function() {}); 192 | 193 | iconSet('on'); 194 | proxySelected('pac-url-proxy'); 195 | } 196 | 197 | /** 198 | * set socks proxy (socks4 or socks5) 199 | * 200 | */ 201 | function socks5Proxy() { 202 | 203 | var config = { 204 | mode: 'fixed_servers', 205 | rules: { 206 | bypassList:bypasslist 207 | } 208 | }; 209 | 210 | if (!socksHost) return; 211 | 212 | config['rules'][proxyRule] = { 213 | scheme: socksType, 214 | host: socksHost, 215 | port: parseInt(socksPort) 216 | }; 217 | 218 | chrome.proxy.settings.set( 219 | {value: config, scope: 'regular'}, 220 | function() {}); 221 | 222 | iconSet('on'); 223 | proxySelected('socks5-proxy'); 224 | 225 | if (socksType == 'socks5') 226 | localStorage.proxyInfo = 'socks5'; 227 | else 228 | localStorage.proxyInfo = 'socks4'; 229 | } 230 | 231 | /** 232 | * set http proxy 233 | * 234 | */ 235 | function httpProxy() { 236 | 237 | var config = { 238 | mode: 'fixed_servers', 239 | rules: { 240 | bypassList: bypasslist 241 | }, 242 | }; 243 | 244 | if (!httpHost) return; 245 | 246 | if (proxyRule == 'fallbackProxy') 247 | proxyRule = 'singleProxy'; 248 | 249 | config['rules'][proxyRule] = { 250 | scheme: 'http', 251 | host: httpHost, 252 | port: parseInt(httpPort) 253 | }; 254 | 255 | chrome.proxy.settings.set( 256 | {value: config, scope: 'regular'}, 257 | function() {}); 258 | 259 | iconSet('on'); 260 | proxySelected('http-proxy'); 261 | localStorage.proxyInfo = 'http'; 262 | } 263 | 264 | /** 265 | * set https proxy 266 | * 267 | */ 268 | function httpsProxy() { 269 | 270 | var config = { 271 | mode: 'fixed_servers', 272 | rules: { 273 | bypassList:bypasslist 274 | } 275 | }; 276 | 277 | if (!httpsHost) return; 278 | 279 | config['rules'][proxyRule] = { 280 | scheme: 'https', 281 | host: httpsHost, 282 | port: parseInt(httpsPort) 283 | }; 284 | 285 | chrome.proxy.settings.set( 286 | {value: config, scope: 'regular'}, 287 | function() {}); 288 | 289 | iconSet('on'); 290 | proxySelected('https-proxy'); 291 | localStorage.proxyInfo = 'https'; 292 | } 293 | 294 | function quicProxy() { 295 | 296 | var config = { 297 | mode: 'fixed_servers', 298 | rules: { 299 | bypassList:bypasslist 300 | } 301 | }; 302 | 303 | if (!quicHost) return; 304 | 305 | config['rules'][proxyRule] = { 306 | scheme: 'quic', 307 | host: quicHost, 308 | port: parseInt(quicPort) 309 | }; 310 | 311 | chrome.proxy.settings.set( 312 | {value: config, scope: 'regular'}, 313 | function() {}); 314 | 315 | iconSet('on'); 316 | proxySelected('quic-proxy'); 317 | localStorage.proxyInfo = 'quic'; 318 | } 319 | 320 | /** 321 | * set direct proxy 322 | * 323 | */ 324 | function directProxy() { 325 | 326 | var config = { 327 | mode: 'direct', 328 | }; 329 | 330 | chrome.proxy.settings.set( 331 | {value: config, scope: 'regular'}, 332 | function() {}); 333 | 334 | iconSet('off'); 335 | proxySelected('direct-proxy'); 336 | localStorage.proxyInfo = 'direct'; 337 | } 338 | 339 | /** 340 | * set system proxy 341 | * 342 | */ 343 | function sysProxy() { 344 | 345 | var config = { 346 | mode: 'system', 347 | }; 348 | 349 | chrome.proxy.settings.set( 350 | {value: config, scope: 'regular'}, 351 | function() {}); 352 | 353 | iconSet('off'); 354 | proxySelected('sys-proxy') 355 | localStorage.proxyInfo = 'system'; 356 | } 357 | 358 | /** 359 | * set auto detect proxy 360 | * 361 | */ 362 | function autoProxy() { 363 | 364 | var config = { 365 | mode: 'auto_detect', 366 | }; 367 | 368 | chrome.proxy.settings.set( 369 | {value: config, scope: 'regular'}, 370 | function() {}); 371 | 372 | iconSet('on'); 373 | proxySelected('auto-detect') 374 | localStorage.proxyInfo = 'auto_detect'; 375 | } 376 | 377 | 378 | chrome.proxy.onProxyError.addListener(function(details) { 379 | console.log(details.error); 380 | }); 381 | 382 | 383 | document.addEventListener('DOMContentLoaded', function () { 384 | document.querySelector('#pac-data-proxy').addEventListener('click', pacDatatProxy); 385 | document.querySelector('#pac-url-proxy').addEventListener('click', pacUrlProxy); 386 | document.querySelector('#socks5-proxy').addEventListener('click', socks5Proxy); 387 | document.querySelector('#http-proxy').addEventListener('click', httpProxy); 388 | document.querySelector('#https-proxy').addEventListener('click', httpsProxy); 389 | document.querySelector('#quic-proxy').addEventListener('click', quicProxy); 390 | document.querySelector('#sys-proxy').addEventListener('click', sysProxy); 391 | document.querySelector('#direct-proxy').addEventListener('click', directProxy); 392 | document.querySelector('#auto-detect').addEventListener('click', autoProxy); 393 | 394 | $('[data-i18n-content]').each(function() { 395 | var message = chrome.i18n.getMessage(this.getAttribute('data-i18n-content')); 396 | if (message) 397 | $(this).html(message); 398 | }); 399 | 400 | if (!httpHost) { 401 | $('#http-proxy').hide(); 402 | } 403 | 404 | if (!socksHost) { 405 | $('#socks5-proxy').hide(); 406 | } 407 | 408 | if (!httpsHost) { 409 | $('#https-proxy').hide(); 410 | } 411 | 412 | if (!pacData) { 413 | $('#pac-data-proxy').hide(); 414 | } 415 | 416 | if (!pacScriptUrl[pacUrlType]) { 417 | $('#pac-url-proxy').hide(); 418 | } 419 | 420 | if (!quicHost) { 421 | $('#quic-proxy').hide(); 422 | } 423 | 424 | }); 425 | 426 | $(document).ready(function() { 427 | color_proxy_item(); 428 | add_li_title(); 429 | }); 430 | -------------------------------------------------------------------------------- /javascripts/options.js: -------------------------------------------------------------------------------- 1 | // Chrome Proxy helper 2 | // by zhouzhenster@gmail.com 3 | // https://raw.github.com/henices/Chrome-proxy-helper/master/javascripts/options.js 4 | 5 | 6 | function loadProxyData() { 7 | 8 | $(document).ready(function() { 9 | 10 | var proxySetting = JSON.parse(localStorage.proxySetting); 11 | 12 | $('#socks-host').val(proxySetting['socks_host'] || ""); 13 | $('#socks-port').val(proxySetting['socks_port'] || ""); 14 | $('#quic-host').val(proxySetting['quic_host'] || ""); 15 | $('#quic-port').val(proxySetting['quic_port'] || ""); 16 | $('#http-host').val(proxySetting['http_host'] || ""); 17 | $('#http-port').val(proxySetting['http_port'] || ""); 18 | $('#https-host').val(proxySetting['https_host'] || ""); 19 | $('#https-port').val(proxySetting['https_port'] || ""); 20 | $('#pac-type').val(proxySetting['pac_type'] || "file://"); 21 | $('#pac-data').val(proxySetting['pac_data'] || "") 22 | $('#bypasslist').val(proxySetting['bypasslist'] || ""); 23 | $('#rules-mode').val(proxySetting['rules_mode'] || "Whitelist"); 24 | $('#proxy-rule').val(proxySetting['proxy_rule'] || "singleProxy"); 25 | $('#username').val(proxySetting['auth']['user'] || ""); 26 | $('#password').val(proxySetting['auth']['pass'] || ""); 27 | 28 | try { 29 | var type = proxySetting['pac_type'].split(':')[0]; 30 | $('#pac-script-url').val(proxySetting['pac_script_url'][type] || ""); 31 | } catch (err) { 32 | } 33 | 34 | if (proxySetting['socks_type'] == 'socks5') { 35 | $('#socks5').attr('checked', true); 36 | $('#socks4').attr('checked', false); 37 | } 38 | 39 | if (proxySetting['socks_type'] == 'socks4') { 40 | $('#socks4').attr('checked', true); 41 | $('#socks5').attr('checked', false); 42 | } 43 | 44 | if (proxySetting['internal'] == 'china') { 45 | $('#china-list').attr('checked', true); 46 | } 47 | 48 | if (proxySetting['rules_mode'] == 'Whitelist') { 49 | $('#bypasslist').prop('disabled', false); 50 | $('#proxylist').prop('disabled', true); 51 | $('#china-list').prop('disabled', false); 52 | $('#blacklist').hide(); 53 | $('#whitelist').show(); 54 | } else { 55 | $('#bypasslist').prop('disabled', true); 56 | $('#proxylist').prop('disabled', false); 57 | $('#china-list').prop('disabled', true); 58 | $('#blacklist').show(); 59 | $('#whitelist').hide(); 60 | } 61 | }); 62 | 63 | } 64 | 65 | 66 | /** 67 | * load old proxy info 68 | */ 69 | function loadOldInfo() { 70 | var mode, url, rules, proxyRule; 71 | var type, host, port; 72 | var ret, pacType, pacScriptUrl; 73 | 74 | chrome.proxy.settings.get({'incognito': false}, 75 | function(config) { 76 | 77 | mode = config["value"]["mode"]; 78 | rules = config['value']['rules']; 79 | 80 | if (rules) { 81 | if (rules.hasOwnProperty('singleProxy')) { 82 | proxyRule = 'singleProxy'; 83 | } else if (rules.hasOwnProperty('proxyForHttp')) { 84 | proxyRule = 'proxyForHttp'; 85 | } else if (rules.hasOwnProperty('proxyForHttps')) { 86 | proxyRule = 'proxyForHttps' 87 | } else if (rules.hasOwnProperty('proxyForFtp')) { 88 | proxyRule = 'proxyForFtp'; 89 | } else if (rules.hasOwnProperty('fallbackProxy')) { 90 | proxyRule = 'fallbackProxy'; 91 | } 92 | 93 | $('#proxy-rule').val(proxyRule); 94 | } 95 | 96 | if (mode == "direct" || 97 | mode == "system" || 98 | mode == "auto_detect" ) { 99 | 100 | return; 101 | 102 | } else if (mode == "pac_script") { 103 | 104 | // may be need to deal with pac data 105 | url = config.value.pacScript.url; 106 | if (url) { 107 | ret = url.split('://'); 108 | pacType = ret[0]; 109 | pacScriptUrl = ret[1]; 110 | 111 | $('#pac-type').val(pacType + '://'); 112 | 113 | // fix pacScriptUrl on Windows platform 114 | if (pacType == 'file') { 115 | if (pacScriptUrl.substring(0, 1) != '/') 116 | pacScriptUrl = '/' + pacScriptUrl; 117 | } 118 | 119 | $('#pac-script-url').val(pacScriptUrl); 120 | } else { 121 | 122 | data = config.value.pacScript.data; 123 | $('#pac-data').val(data) 124 | } 125 | 126 | } else if (mode == "fixed_servers") { 127 | 128 | // we are in manual mode 129 | type = rules[proxyRule]['scheme']; 130 | host = rules[proxyRule]['host']; 131 | port = rules[proxyRule]['port']; 132 | bypassList = rules.bypassList; 133 | 134 | if (type == 'http') { 135 | $('#http-host').val(host); 136 | $('#http-port').val(port); 137 | } else if (type == 'https') { 138 | $('#https-host').val(host); 139 | $('#https-port').val(port); 140 | } else if (type == 'quic') { 141 | $('#quic-host').val(host); 142 | $('#quic-port').val(port); 143 | } else { 144 | if (type == 'socks5') { 145 | $('#socks5').attr('checked', true); 146 | $('#socks4').attr('checked', false); 147 | } else if (type == 'socks4') { 148 | $('#socks5').attr('checked', false); 149 | $('#socks4').attr('checked', true); 150 | } 151 | 152 | $('#socks-host').val(host); 153 | $('#socks-port').val(port); 154 | } 155 | 156 | if (bypassList) 157 | $('#bypasslist').val(bypassList.join(',')); 158 | } 159 | }); 160 | 161 | localStorage.firstime = 1; 162 | } 163 | 164 | /** 165 | * get chrome browser proxy settings 166 | * and display on the options page 167 | * 168 | */ 169 | function getProxyInfo() { 170 | 171 | var proxyInfo; 172 | var proxySetting = JSON.parse(localStorage.proxySetting); 173 | var mode, rules, proxyRule; 174 | 175 | chrome.proxy.settings.get({'incognito': false}, 176 | function(config) { 177 | mode = config['value']['mode']; 178 | rules = config['value']['rules']; 179 | 180 | if (rules) { 181 | if (rules.hasOwnProperty('singleProxy')) { 182 | proxyRule = 'singleProxy'; 183 | } else if (rules.hasOwnProperty('proxyForHttp')) { 184 | proxyRule = 'proxyForHttp'; 185 | } else if (rules.hasOwnProperty('proxyForHttps')) { 186 | proxyRule = 'proxyForHttps' 187 | } else if (rules.hasOwnProperty('proxyForFtp')) { 188 | proxyRule = 'proxyForFtp'; 189 | } else if (rules.hasOwnProperty('fallbackProxy')) { 190 | proxyRule = 'fallbackProxy'; 191 | } 192 | 193 | } 194 | 195 | if (mode == 'direct' || 196 | mode == 'system' || 197 | mode == 'auto_detect' ) { 198 | proxyInfo = mode; 199 | } else if (mode == "pac_script") { 200 | var url = config['value']['pacScript']['url']; 201 | if (url) 202 | proxyInfo = 'pac_url'; 203 | else 204 | proxyInfo = 'pac_data'; 205 | } else if (mode == 'fixed_servers') 206 | proxyInfo = rules[proxyRule]['scheme']; 207 | 208 | localStorage.proxyInfo = proxyInfo; 209 | }); 210 | } 211 | 212 | /** 213 | * get uniq array 214 | * 215 | */ 216 | function uniqueArray(arr) { 217 | var hash = {}, result = []; 218 | for (var i = 0, l = arr.length; i < l; ++i) { 219 | if (!hash.hasOwnProperty(arr[i])) { 220 | hash[arr[i]] = true; 221 | result.push(arr[i]); 222 | } 223 | } 224 | return result; 225 | } 226 | 227 | /** 228 | * @brief use proxy info to set proxy 229 | * 230 | */ 231 | function reloadProxy() { 232 | 233 | var type, auto, arrayString; 234 | var proxy = {type: '', host: '', port: ''}; 235 | var config = { 236 | mode: '', 237 | pacScript: {}, 238 | rules: {} 239 | }; 240 | 241 | var proxySetting = JSON.parse(localStorage.proxySetting); 242 | //console.log('proxySetting: ', proxySetting); 243 | var info = localStorage.proxyInfo; 244 | 245 | if (typeof info === 'undefined' || 246 | info == 'direct' || info == 'system' ) { 247 | return; 248 | } 249 | 250 | if (info == 'pac_url') { 251 | var pacType = proxySetting['pac_type']; 252 | var proto = pacType.split(':')[0]; 253 | 254 | config.mode = 'pac_script'; 255 | config["pacScript"]["url"] = pacType + 256 | proxySetting['pac_script_url'][proto]; 257 | //console.log(pacType + proxySetting['pac_script_url'][proto]); 258 | 259 | } else if (info == 'pac_data') { 260 | config.mode = 'pac_script'; 261 | config["pacScript"]["data"] = proxySetting['pac_data'] 262 | 263 | } else { 264 | 265 | switch(info) { 266 | 267 | case 'http': 268 | proxy.type = 'http'; 269 | proxy.host = proxySetting['http_host']; 270 | proxy.port = parseInt(proxySetting['http_port']); 271 | break; 272 | 273 | case 'https': 274 | proxy.type = 'https'; 275 | proxy.host = proxySetting['https_host']; 276 | proxy.port = parseInt(proxySetting['https_port']); 277 | break; 278 | 279 | case 'socks4': 280 | proxy.type = 'socks4'; 281 | proxy.host = proxySetting['socks_host']; 282 | proxy.port = parseInt(proxySetting['socks_port']); 283 | break; 284 | 285 | case 'socks5': 286 | proxy.type = 'socks5'; 287 | proxy.host = proxySetting['socks_host']; 288 | proxy.port = parseInt(proxySetting['socks_port']); 289 | break; 290 | 291 | case 'quic': 292 | proxy.type = 'quic'; 293 | proxy.host = proxySetting['quic_host']; 294 | proxy.port = parseInt(proxySetting['quic_port']); 295 | break; 296 | } 297 | 298 | var rule = proxySetting['proxy_rule']; 299 | if (proxy.type == 'http' && rule == 'fallbackProxy') 300 | rule = 'singleProxy'; 301 | var chinaList = JSON.parse(localStorage.chinaList); 302 | var bypasslist = proxySetting['bypasslist']; 303 | 304 | if (proxySetting['internal'] == 'china') { 305 | bypasslist = chinaList.concat(bypasslist.split(',')); 306 | } else { 307 | bypasslist = bypasslist ? bypasslist.split(',') : ['']; 308 | } 309 | 310 | config.mode = "fixed_servers"; 311 | config.rules.bypassList = uniqueArray(bypasslist); 312 | config["rules"][rule] = { 313 | scheme: proxy.type, 314 | host: proxy.host, 315 | port: parseInt(proxy.port) 316 | }; 317 | } 318 | 319 | //console.log(JSON.stringify(config)); 320 | chrome.proxy.settings.set({ 321 | value: config, 322 | scope: 'regular'}, function() {}) 323 | 324 | } 325 | 326 | /** 327 | * set system proxy 328 | * 329 | */ 330 | function sysProxy() { 331 | 332 | var config = { 333 | mode: "system", 334 | }; 335 | var icon = { 336 | path: "images/off.png", 337 | } 338 | 339 | chrome.proxy.settings.set( 340 | {value: config, scope: 'regular'}, 341 | function() {}); 342 | 343 | chrome.action.setIcon(icon); 344 | } 345 | 346 | /** 347 | * button id save click handler 348 | * 349 | */ 350 | function save() { 351 | 352 | var proxySetting = JSON.parse(localStorage.proxySetting); 353 | proxySetting['http_host'] = $('#http-host').val() || ""; 354 | proxySetting['http_port'] = $('#http-port').val() || ""; 355 | proxySetting['https_host'] = $('#https-host').val() || ""; 356 | proxySetting['https_port'] = $('#https-port').val() || ""; 357 | proxySetting['quic_host'] = $('#quic-host').val() || ""; 358 | proxySetting['quic_port'] = $('#quic-port').val() || ""; 359 | proxySetting['socks_host'] = $('#socks-host').val() || ""; 360 | proxySetting['socks_port'] = $('#socks-port').val() || ""; 361 | proxySetting['pac_type'] = $('#pac-type').val() || ""; 362 | proxySetting['pac_data'] = $('#pac-data').val() || ""; 363 | proxySetting['bypasslist'] = $('#bypasslist').val() || ""; 364 | proxySetting['proxy_rule'] = $('#proxy-rule').val() || ""; 365 | //proxySetting['rules_mode'] = $('#rules-mode').val() || ""; 366 | 367 | var authInfo = {}; 368 | authInfo.user = proxySetting['auth']['user']; 369 | authInfo.pass = proxySetting['auth']['pass']; 370 | proxySetting['auth']['user'] = $('#username').val() || ""; 371 | proxySetting['auth']['pass'] = $('#password').val() || ""; 372 | 373 | if ($('#socks5').is(':checked')) 374 | proxySetting['socks_type'] = 'socks5'; 375 | 376 | if ($('#socks4').is(':checked')) 377 | proxySetting['socks_type'] = 'socks4'; 378 | 379 | if ($('#use-pass').is(':checked')) 380 | proxySetting['auth']['enable'] = 'y'; 381 | else 382 | proxySetting['auth']['enable'] = ''; 383 | 384 | if ($('#china-list').is(':checked')) { 385 | proxySetting['internal'] = "china"; 386 | } 387 | else { 388 | proxySetting['internal'] = ""; 389 | } 390 | 391 | try { 392 | var pacType = $('#pac-type').val().split(':')[0]; 393 | var pacScriptUrl = $('#pac-script-url').val() || ''; 394 | 395 | // fix pacScriptUrl on windows platform 396 | if (pacType == 'file' && pacScriptUrl) { 397 | if (pacScriptUrl.substring(0, 1) != '/') 398 | pacScriptUrl = '/' + pacScriptUrl; 399 | } 400 | 401 | proxySetting['pac_script_url'][pacType] = pacScriptUrl; 402 | } catch (err) { 403 | } 404 | 405 | var settings = JSON.stringify(proxySetting); 406 | //console.log(settings); 407 | 408 | localStorage.proxySetting = settings; 409 | reloadProxy(); 410 | loadProxyData(); 411 | 412 | if (authInfo['user'] != proxySetting['auth']['user'] || 413 | authInfo['pass'] != proxySetting['auth']['pass']) { 414 | chrome.runtime.sendMessage({ action: 'authUpdate', data: proxySetting['auth'] }); 415 | } 416 | 417 | // sync settings to google cloud 418 | //chrome.storage.sync.set({'proxySetting' : settings}, function() {}); 419 | } 420 | 421 | 422 | /** 423 | * set proxy for get pac data 424 | * 425 | */ 426 | function setPacProxy() { 427 | 428 | var proxy = {type:'', host:'', port:''}; 429 | 430 | pacProxyHost = $('#pac-proxy-host').val().split(':'); 431 | pacViaProxy = $('#pac-via-proxy').val().split(':'); 432 | 433 | proxy.type = pacViaProxy[0]; 434 | proxy.host = pacProxyHost[0]; 435 | proxy.port = parseInt(pacProxyHost[1]); 436 | 437 | var config = { 438 | mode: "fixed_servers", 439 | rules: { 440 | singleProxy: { 441 | scheme: proxy.type, 442 | host: proxy.host, 443 | port: proxy.port 444 | } 445 | } 446 | }; 447 | 448 | chrome.proxy.settings.set( 449 | {value: config, scope: 'regular'}, function() {}); 450 | 451 | } 452 | 453 | /** 454 | * get pac script data from url 455 | */ 456 | function getPac() { 457 | 458 | var req = new XMLHttpRequest(); 459 | var url = $('#pac-url').val(); 460 | var result = ""; 461 | 462 | // async request 463 | req.open("GET", url, true); 464 | req.onreadystatechange = processResponse; 465 | req.send(null); 466 | 467 | function processPacData(ret) { 468 | var regx_dbase64 = /decode64\("(.*)"\)/i; 469 | var regx_find = /FindProxyForURL/i; 470 | var pacData = ""; 471 | 472 | // autoproxy2pac 473 | if (ret.indexOf('decode64') != -1) { 474 | match = regx_dbase64.test(ret); 475 | if (match) { 476 | var decodePacData = $.base64Decode(RegExp.$1); 477 | if (regx_find.test(decodePacData)) 478 | pacData = decodePacData; 479 | } 480 | } 481 | // plain text 482 | else { 483 | if (regx_find.test(ret)) 484 | pacData = ret; 485 | } 486 | 487 | return pacData; 488 | } 489 | 490 | function processResponse() { 491 | 492 | if (req.readyState == 4) { 493 | if (req.status == 200) { 494 | result = req.responseText; 495 | } 496 | } 497 | 498 | return result; 499 | } 500 | } 501 | 502 | document.addEventListener('DOMContentLoaded', function () { 503 | 504 | $('#btn-save').click(function() { save(); }); 505 | 506 | $('#btn-cancel').click(function() { location.reload(); }); 507 | 508 | /* 509 | $('#socks4').change(function() { 510 | $('#socks5').attr('checked', false); 511 | }); 512 | 513 | $('#socks5').change(function() { 514 | $('#socks4').attr('checked', false); 515 | }); 516 | */ 517 | 518 | $('#diagnosis').click(function() { 519 | chrome.tabs.create({url: 'chrome://net-internals/#proxy'}); 520 | }); 521 | 522 | $('input').change(function() { save(); }); 523 | 524 | $('textarea').change(function() { save(); }); 525 | 526 | $('#proxy-rule').change(function() { save(); }); 527 | 528 | $('#rules-mode').change(function() { save(); }); 529 | 530 | $('#chinalist').change(function() { save(); }); 531 | 532 | var proxySetting = JSON.parse(localStorage.proxySetting); 533 | $('#pac-type').change(function() { 534 | var type = $('#pac-type').val().split(':')[0]; 535 | //console.log(type); 536 | $('#pac-script-url').val(proxySetting['pac_script_url'][type]); 537 | save(); 538 | }); 539 | 540 | $('#pac-script-url').change(function() { 541 | save(); 542 | }); 543 | 544 | document.getElementById('pac-file').addEventListener('change', readSingleFile, false); 545 | }); 546 | 547 | function readSingleFile(e) { 548 | var file = e.target.files[0]; 549 | if (!file) { 550 | return; 551 | } 552 | var reader = new FileReader(); 553 | reader.onload = function(e) { 554 | var contents = e.target.result; 555 | $('#pac-data').val(contents); 556 | save(); 557 | }; 558 | reader.readAsText(file); 559 | } 560 | 561 | if (!localStorage.firstime) { 562 | loadOldInfo(); 563 | 564 | var clone = obj => JSON.parse(JSON.stringify(obj)); 565 | chrome.storage.local.get(null).then((result) => { 566 | localStorage.chinaList = result.chinaList; 567 | localStorage.proxySetting = result.proxySetting; 568 | console.log("Setting localStorage from service worker storage"); 569 | console.log("%s localStorage:", new Date(Date.now()).toISOString(), clone(localStorage)); 570 | 571 | getProxyInfo(); 572 | }); 573 | } else { 574 | loadProxyData(); 575 | getProxyInfo(); 576 | } 577 | -------------------------------------------------------------------------------- /COPYING: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 2, June 1991 3 | 4 | Copyright (C) 1989, 1991 Free Software Foundation, Inc. 5 | 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 6 | Everyone is permitted to copy and distribute verbatim copies 7 | of this license document, but changing it is not allowed. 8 | 9 | Preamble 10 | 11 | The licenses for most software are designed to take away your 12 | freedom to share and change it. By contrast, the GNU General Public 13 | License is intended to guarantee your freedom to share and change free 14 | software--to make sure the software is free for all its users. This 15 | General Public License applies to most of the Free Software 16 | Foundation's software and to any other program whose authors commit to 17 | using it. (Some other Free Software Foundation software is covered by 18 | the GNU Library General Public License instead.) You can apply it to 19 | your programs, too. 20 | 21 | When we speak of free software, we are referring to freedom, not 22 | price. Our General Public Licenses are designed to make sure that you 23 | have the freedom to distribute copies of free software (and charge for 24 | this service if you wish), that you receive source code or can get it 25 | if you want it, that you can change the software or use pieces of it 26 | in new free programs; and that you know you can do these things. 27 | 28 | To protect your rights, we need to make restrictions that forbid 29 | anyone to deny you these rights or to ask you to surrender the rights. 30 | These restrictions translate to certain responsibilities for you if you 31 | distribute copies of the software, or if you modify it. 32 | 33 | For example, if you distribute copies of such a program, whether 34 | gratis or for a fee, you must give the recipients all the rights that 35 | you have. You must make sure that they, too, receive or can get the 36 | source code. And you must show them these terms so they know their 37 | rights. 38 | 39 | We protect your rights with two steps: (1) copyright the software, and 40 | (2) offer you this license which gives you legal permission to copy, 41 | distribute and/or modify the software. 42 | 43 | Also, for each author's protection and ours, we want to make certain 44 | that everyone understands that there is no warranty for this free 45 | software. If the software is modified by someone else and passed on, we 46 | want its recipients to know that what they have is not the original, so 47 | that any problems introduced by others will not reflect on the original 48 | authors' reputations. 49 | 50 | Finally, any free program is threatened constantly by software 51 | patents. We wish to avoid the danger that redistributors of a free 52 | program will individually obtain patent licenses, in effect making the 53 | program proprietary. To prevent this, we have made it clear that any 54 | patent must be licensed for everyone's free use or not licensed at all. 55 | 56 | The precise terms and conditions for copying, distribution and 57 | modification follow. 58 | 59 | GNU GENERAL PUBLIC LICENSE 60 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 61 | 62 | 0. This License applies to any program or other work which contains 63 | a notice placed by the copyright holder saying it may be distributed 64 | under the terms of this General Public License. The "Program", below, 65 | refers to any such program or work, and a "work based on the Program" 66 | means either the Program or any derivative work under copyright law: 67 | that is to say, a work containing the Program or a portion of it, 68 | either verbatim or with modifications and/or translated into another 69 | language. (Hereinafter, translation is included without limitation in 70 | the term "modification".) Each licensee is addressed as "you". 71 | 72 | Activities other than copying, distribution and modification are not 73 | covered by this License; they are outside its scope. The act of 74 | running the Program is not restricted, and the output from the Program 75 | is covered only if its contents constitute a work based on the 76 | Program (independent of having been made by running the Program). 77 | Whether that is true depends on what the Program does. 78 | 79 | 1. You may copy and distribute verbatim copies of the Program's 80 | source code as you receive it, in any medium, provided that you 81 | conspicuously and appropriately publish on each copy an appropriate 82 | copyright notice and disclaimer of warranty; keep intact all the 83 | notices that refer to this License and to the absence of any warranty; 84 | and give any other recipients of the Program a copy of this License 85 | along with the Program. 86 | 87 | You may charge a fee for the physical act of transferring a copy, and 88 | you may at your option offer warranty protection in exchange for a fee. 89 | 90 | 2. You may modify your copy or copies of the Program or any portion 91 | of it, thus forming a work based on the Program, and copy and 92 | distribute such modifications or work under the terms of Section 1 93 | above, provided that you also meet all of these conditions: 94 | 95 | a) You must cause the modified files to carry prominent notices 96 | stating that you changed the files and the date of any change. 97 | 98 | b) You must cause any work that you distribute or publish, that in 99 | whole or in part contains or is derived from the Program or any 100 | part thereof, to be licensed as a whole at no charge to all third 101 | parties under the terms of this License. 102 | 103 | c) If the modified program normally reads commands interactively 104 | when run, you must cause it, when started running for such 105 | interactive use in the most ordinary way, to print or display an 106 | announcement including an appropriate copyright notice and a 107 | notice that there is no warranty (or else, saying that you provide 108 | a warranty) and that users may redistribute the program under 109 | these conditions, and telling the user how to view a copy of this 110 | License. (Exception: if the Program itself is interactive but 111 | does not normally print such an announcement, your work based on 112 | the Program is not required to print an announcement.) 113 | 114 | These requirements apply to the modified work as a whole. If 115 | identifiable sections of that work are not derived from the Program, 116 | and can be reasonably considered independent and separate works in 117 | themselves, then this License, and its terms, do not apply to those 118 | sections when you distribute them as separate works. But when you 119 | distribute the same sections as part of a whole which is a work based 120 | on the Program, the distribution of the whole must be on the terms of 121 | this License, whose permissions for other licensees extend to the 122 | entire whole, and thus to each and every part regardless of who wrote it. 123 | 124 | Thus, it is not the intent of this section to claim rights or contest 125 | your rights to work written entirely by you; rather, the intent is to 126 | exercise the right to control the distribution of derivative or 127 | collective works based on the Program. 128 | 129 | In addition, mere aggregation of another work not based on the Program 130 | with the Program (or with a work based on the Program) on a volume of 131 | a storage or distribution medium does not bring the other work under 132 | the scope of this License. 133 | 134 | 3. You may copy and distribute the Program (or a work based on it, 135 | under Section 2) in object code or executable form under the terms of 136 | Sections 1 and 2 above provided that you also do one of the following: 137 | 138 | a) Accompany it with the complete corresponding machine-readable 139 | source code, which must be distributed under the terms of Sections 140 | 1 and 2 above on a medium customarily used for software interchange; or, 141 | 142 | b) Accompany it with a written offer, valid for at least three 143 | years, to give any third party, for a charge no more than your 144 | cost of physically performing source distribution, a complete 145 | machine-readable copy of the corresponding source code, to be 146 | distributed under the terms of Sections 1 and 2 above on a medium 147 | customarily used for software interchange; or, 148 | 149 | c) Accompany it with the information you received as to the offer 150 | to distribute corresponding source code. (This alternative is 151 | allowed only for noncommercial distribution and only if you 152 | received the program in object code or executable form with such 153 | an offer, in accord with Subsection b above.) 154 | 155 | The source code for a work means the preferred form of the work for 156 | making modifications to it. For an executable work, complete source 157 | code means all the source code for all modules it contains, plus any 158 | associated interface definition files, plus the scripts used to 159 | control compilation and installation of the executable. However, as a 160 | special exception, the source code distributed need not include 161 | anything that is normally distributed (in either source or binary 162 | form) with the major components (compiler, kernel, and so on) of the 163 | operating system on which the executable runs, unless that component 164 | itself accompanies the executable. 165 | 166 | If distribution of executable or object code is made by offering 167 | access to copy from a designated place, then offering equivalent 168 | access to copy the source code from the same place counts as 169 | distribution of the source code, even though third parties are not 170 | compelled to copy the source along with the object code. 171 | 172 | 4. You may not copy, modify, sublicense, or distribute the Program 173 | except as expressly provided under this License. Any attempt 174 | otherwise to copy, modify, sublicense or distribute the Program is 175 | void, and will automatically terminate your rights under this License. 176 | However, parties who have received copies, or rights, from you under 177 | this License will not have their licenses terminated so long as such 178 | parties remain in full compliance. 179 | 180 | 5. You are not required to accept this License, since you have not 181 | signed it. However, nothing else grants you permission to modify or 182 | distribute the Program or its derivative works. These actions are 183 | prohibited by law if you do not accept this License. Therefore, by 184 | modifying or distributing the Program (or any work based on the 185 | Program), you indicate your acceptance of this License to do so, and 186 | all its terms and conditions for copying, distributing or modifying 187 | the Program or works based on it. 188 | 189 | 6. Each time you redistribute the Program (or any work based on the 190 | Program), the recipient automatically receives a license from the 191 | original licensor to copy, distribute or modify the Program subject to 192 | these terms and conditions. You may not impose any further 193 | restrictions on the recipients' exercise of the rights granted herein. 194 | You are not responsible for enforcing compliance by third parties to 195 | this License. 196 | 197 | 7. If, as a consequence of a court judgment or allegation of patent 198 | infringement or for any other reason (not limited to patent issues), 199 | conditions are imposed on you (whether by court order, agreement or 200 | otherwise) that contradict the conditions of this License, they do not 201 | excuse you from the conditions of this License. If you cannot 202 | distribute so as to satisfy simultaneously your obligations under this 203 | License and any other pertinent obligations, then as a consequence you 204 | may not distribute the Program at all. For example, if a patent 205 | license would not permit royalty-free redistribution of the Program by 206 | all those who receive copies directly or indirectly through you, then 207 | the only way you could satisfy both it and this License would be to 208 | refrain entirely from distribution of the Program. 209 | 210 | If any portion of this section is held invalid or unenforceable under 211 | any particular circumstance, the balance of the section is intended to 212 | apply and the section as a whole is intended to apply in other 213 | circumstances. 214 | 215 | It is not the purpose of this section to induce you to infringe any 216 | patents or other property right claims or to contest validity of any 217 | such claims; this section has the sole purpose of protecting the 218 | integrity of the free software distribution system, which is 219 | implemented by public license practices. Many people have made 220 | generous contributions to the wide range of software distributed 221 | through that system in reliance on consistent application of that 222 | system; it is up to the author/donor to decide if he or she is willing 223 | to distribute software through any other system and a licensee cannot 224 | impose that choice. 225 | 226 | This section is intended to make thoroughly clear what is believed to 227 | be a consequence of the rest of this License. 228 | 229 | 8. If the distribution and/or use of the Program is restricted in 230 | certain countries either by patents or by copyrighted interfaces, the 231 | original copyright holder who places the Program under this License 232 | may add an explicit geographical distribution limitation excluding 233 | those countries, so that distribution is permitted only in or among 234 | countries not thus excluded. In such case, this License incorporates 235 | the limitation as if written in the body of this License. 236 | 237 | 9. The Free Software Foundation may publish revised and/or new versions 238 | of the General Public License from time to time. Such new versions will 239 | be similar in spirit to the present version, but may differ in detail to 240 | address new problems or concerns. 241 | 242 | Each version is given a distinguishing version number. If the Program 243 | specifies a version number of this License which applies to it and "any 244 | later version", you have the option of following the terms and conditions 245 | either of that version or of any later version published by the Free 246 | Software Foundation. If the Program does not specify a version number of 247 | this License, you may choose any version ever published by the Free Software 248 | Foundation. 249 | 250 | 10. If you wish to incorporate parts of the Program into other free 251 | programs whose distribution conditions are different, write to the author 252 | to ask for permission. For software which is copyrighted by the Free 253 | Software Foundation, write to the Free Software Foundation; we sometimes 254 | make exceptions for this. Our decision will be guided by the two goals 255 | of preserving the free status of all derivatives of our free software and 256 | of promoting the sharing and reuse of software generally. 257 | 258 | NO WARRANTY 259 | 260 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 261 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 262 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 263 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 264 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 265 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS 266 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 267 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 268 | REPAIR OR CORRECTION. 269 | 270 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 271 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 272 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 273 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 274 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 275 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 276 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 277 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 278 | POSSIBILITY OF SUCH DAMAGES. 279 | 280 | END OF TERMS AND CONDITIONS 281 | 282 | How to Apply These Terms to Your New Programs 283 | 284 | If you develop a new program, and you want it to be of the greatest 285 | possible use to the public, the best way to achieve this is to make it 286 | free software which everyone can redistribute and change under these terms. 287 | 288 | To do so, attach the following notices to the program. It is safest 289 | to attach them to the start of each source file to most effectively 290 | convey the exclusion of warranty; and each file should have at least 291 | the "copyright" line and a pointer to where the full notice is found. 292 | 293 | 294 | Copyright (C) 295 | 296 | This program is free software; you can redistribute it and/or modify 297 | it under the terms of the GNU General Public License as published by 298 | the Free Software Foundation; either version 2 of the License, or 299 | (at your option) any later version. 300 | 301 | This program is distributed in the hope that it will be useful, 302 | but WITHOUT ANY WARRANTY; without even the implied warranty of 303 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 304 | GNU General Public License for more details. 305 | 306 | You should have received a copy of the GNU General Public License 307 | along with this program; if not, write to the Free Software 308 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 309 | 310 | 311 | Also add information on how to contact you by electronic and paper mail. 312 | 313 | If the program is interactive, make it output a short notice like this 314 | when it starts in an interactive mode: 315 | 316 | Gnomovision version 69, Copyright (C) year name of author 317 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 318 | This is free software, and you are welcome to redistribute it 319 | under certain conditions; type `show c' for details. 320 | 321 | The hypothetical commands `show w' and `show c' should show the appropriate 322 | parts of the General Public License. Of course, the commands you use may 323 | be called something other than `show w' and `show c'; they could even be 324 | mouse-clicks or menu items--whatever suits your program. 325 | 326 | You should also get your employer (if you work as a programmer) or your 327 | school, if any, to sign a "copyright disclaimer" for the program, if 328 | necessary. Here is a sample; alter the names: 329 | 330 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program 331 | `Gnomovision' (which makes passes at compilers) written by James Hacker. 332 | 333 | , 1 April 1989 334 | Ty Coon, President of Vice 335 | 336 | This General Public License does not permit incorporating your program into 337 | proprietary programs. If your program is a subroutine library, you may 338 | consider it more useful to permit linking proprietary applications with the 339 | library. If this is what you want to do, use the GNU Library General 340 | Public License instead of this License. 341 | -------------------------------------------------------------------------------- /stylesheets/chrome-bootstrap.css: -------------------------------------------------------------------------------- 1 | .chrome-bootstrap { 2 | font-family: 'Noto Sans UI', 'Segoe UI', 'Chrome Droid Sans', 'Droid Sans Fallback', 'Lucida Grande', 'Tahoma', sans-serif; 3 | font-size: 12px; 4 | color: #303942; 5 | cursor: default; 6 | margin: 0; 7 | /* Headings 8 | ============================================== */ 9 | 10 | /* Layout 11 | ============================================== */ 12 | 13 | /* Header 14 | ============================================== */ 15 | 16 | /* View sections 17 | ============================================== */ 18 | 19 | /* Control bar 20 | ============================================== */ 21 | 22 | /* Pagination 23 | ============================================== */ 24 | 25 | /* Alert 26 | ============================================== */ 27 | 28 | /* Tags 29 | ============================================== */ 30 | 31 | /* Main menu 32 | ============================================== */ 33 | 34 | /* Icons 35 | ============================================== */ 36 | 37 | /* Highlightable list 38 | ============================================== */ 39 | 40 | /* Input styling 41 | ============================================== */ 42 | 43 | /* Focused --------------------------------- */ 44 | 45 | /* Disabled --------------------------------- */ 46 | 47 | /* Hovering --------------------------------- */ 48 | 49 | /* Active --------------------------------- */ 50 | 51 | /* Modal 52 | ============================================== */ 53 | 54 | } 55 | .chrome-bootstrap a { 56 | border: none; 57 | color: #15C; 58 | cursor: pointer; 59 | text-decoration: underline; 60 | font-weight: normal; 61 | } 62 | .chrome-bootstrap a:hover, 63 | .chrome-bootstrap a:focus { 64 | outline: none; 65 | } 66 | .chrome-bootstrap ul, 67 | .chrome-bootstrap ol { 68 | padding: 0; 69 | } 70 | .chrome-bootstrap li { 71 | list-style-type: none; 72 | } 73 | .chrome-bootstrap dl, 74 | .chrome-bootstrap dt, 75 | .chrome-bootstrap dd { 76 | margin: 0; 77 | } 78 | .chrome-bootstrap button { 79 | cursor: pointer; 80 | } 81 | .chrome-bootstrap h1, 82 | .chrome-bootstrap h2, 83 | .chrome-bootstrap h3, 84 | .chrome-bootstrap h4 { 85 | -webkit-user-select: none; 86 | font-weight: normal; 87 | line-height: 1; 88 | } 89 | .chrome-bootstrap h1 small, 90 | .chrome-bootstrap h2 small, 91 | .chrome-bootstrap h3 small, 92 | .chrome-bootstrap h4 small { 93 | font-size: 15px; 94 | margin: 0 10px; 95 | color: #53637D; 96 | } 97 | .chrome-bootstrap h1 { 98 | -webkit-margin-after: 1em; 99 | -webkit-margin-before: 21px; 100 | -webkit-margin-start: 23px; 101 | height: 18px; 102 | font-size: 18px; 103 | } 104 | .chrome-bootstrap h1 a { 105 | color: #5C6166; 106 | text-decoration: none; 107 | } 108 | .chrome-bootstrap h3 { 109 | color: black; 110 | font-size: 1.2em; 111 | margin-bottom: 0.8em; 112 | } 113 | .chrome-bootstrap h4 { 114 | font-size: 1em; 115 | margin-bottom: 5px; 116 | } 117 | .chrome-bootstrap .frame .navigation { 118 | height: 100%; 119 | -webkit-margin-start: 0; 120 | position: fixed; 121 | -webkit-margin-end: 15px; 122 | width: 155px; 123 | z-index: 3; 124 | } 125 | .chrome-bootstrap .frame .view, 126 | .chrome-bootstrap .frame .content { 127 | width: 738px; 128 | overflow-x: hidden; 129 | } 130 | .chrome-bootstrap .frame .content { 131 | padding-top: 55px; 132 | } 133 | .chrome-bootstrap .frame .content p { 134 | text-align: justify; 135 | } 136 | .chrome-bootstrap .frame .with_controls .content { 137 | padding-top: 104px; 138 | } 139 | .chrome-bootstrap .frame .view { 140 | -webkit-margin-start: 155px; 141 | } 142 | .chrome-bootstrap .frame .view a { 143 | font: inherit; 144 | } 145 | .chrome-bootstrap .frame .mainview > * { 146 | -webkit-margin-start: -20px; 147 | -webkit-transition: margin 100ms, opacity 100ms; 148 | opacity: 0; 149 | z-index: 0; 150 | position: absolute; 151 | top: 0; 152 | display: block; 153 | } 154 | .chrome-bootstrap .frame .mainview > .selected { 155 | -webkit-margin-start: 0; 156 | -webkit-transition: margin 200ms, opacity 200ms; 157 | -webkit-transition-delay: 100ms; 158 | z-index: 1; 159 | opacity: 1; 160 | } 161 | .chrome-bootstrap header { 162 | position: fixed; 163 | background-image: -webkit-linear-gradient(#ffffff, #ffffff 40%, rgba(255, 255, 255, 0.92)); 164 | width: 738px; 165 | z-index: 2; 166 | } 167 | .chrome-bootstrap header h1 { 168 | padding: 21px 0 13px; 169 | margin: 0; 170 | border-bottom: 1px solid #EEE; 171 | } 172 | .chrome-bootstrap header .corner { 173 | position: absolute; 174 | right: 0px; 175 | top: 21px; 176 | } 177 | .chrome-bootstrap header .corner input[type="text"] { 178 | width: 210px; 179 | } 180 | .chrome-bootstrap header .corner.cancelable .delete { 181 | opacity: 1; 182 | top: 4px; 183 | right: 5px; 184 | } 185 | .chrome-bootstrap section { 186 | -webkit-padding-start: 18px; 187 | margin-bottom: 24px; 188 | margin-top: 8px; 189 | max-width: 800px; 190 | } 191 | .chrome-bootstrap section h3 { 192 | -webkit-margin-start: -18px; 193 | } 194 | .chrome-bootstrap section .row { 195 | display: block; 196 | margin: 0.65em 0; 197 | } 198 | .chrome-bootstrap .controls { 199 | -webkit-padding-end: 3px; 200 | -webkit-padding-start: 4px; 201 | -webkit-transition: padding 100ms, height 100ms, opacity 100ms; 202 | border-bottom: 1px solid #EEE; 203 | display: -webkit-box; 204 | overflow: hidden; 205 | padding: 13px 0; 206 | position: relative; 207 | } 208 | .chrome-bootstrap .controls .text { 209 | display: inline-block; 210 | margin-top: 4px; 211 | } 212 | .chrome-bootstrap .controls .spacer { 213 | -webkit-box-flex: 1; 214 | } 215 | .chrome-bootstrap ol.pagination li { 216 | margin: 0 2px; 217 | display: inline-block; 218 | line-height: 25px; 219 | } 220 | .chrome-bootstrap ol.pagination a { 221 | width: 25px; 222 | height: 24px; 223 | text-align: center; 224 | display: block; 225 | background: #F0F6FE; 226 | text-decoration: none; 227 | } 228 | .chrome-bootstrap ol.pagination a:hover, 229 | .chrome-bootstrap ol.pagination a.selected { 230 | background: #8AAAED; 231 | color: #FFF; 232 | } 233 | .chrome-bootstrap .alert { 234 | border-radius: 3px; 235 | background: rgba(147, 184, 252, 0.2); 236 | display: block; 237 | position: relative; 238 | padding: 10px 30px 10px 10px; 239 | line-height: 17px; 240 | } 241 | .chrome-bootstrap .alert .delete { 242 | top: 5px; 243 | right: 6px; 244 | opacity: 1; 245 | } 246 | .chrome-bootstrap ul.tags li { 247 | background: #8AAAED; 248 | color: #FFF; 249 | border-radius: 3px; 250 | position: relative; 251 | display: inline-block; 252 | padding: 2px 5px; 253 | } 254 | .chrome-bootstrap ul.tags li a { 255 | color: #FFF; 256 | text-decoration: none; 257 | } 258 | .chrome-bootstrap ul.tags li a:hover { 259 | text-decoration: underline; 260 | } 261 | .chrome-bootstrap ul.tags li .delete { 262 | opacity: 1; 263 | position: relative; 264 | display: inline-block; 265 | width: 13px; 266 | height: 12px; 267 | top: 1px; 268 | background-position-y: -1px; 269 | } 270 | .chrome-bootstrap ul.menu { 271 | -webkit-margin-before: 1em; 272 | -webkit-margin-after: 2em; 273 | -webkit-margin-start: 0px; 274 | -webkit-margin-end: 0px; 275 | -webkit-padding-start: 40px; 276 | list-style-type: none; 277 | padding: 0; 278 | } 279 | .chrome-bootstrap ul.menu li { 280 | -webkit-border-start: 6px solid transparent; 281 | -webkit-padding-start: 18px; 282 | -webkit-user-select: none; 283 | display: list-item; 284 | text-align: -webkit-match-parent; 285 | } 286 | .chrome-bootstrap ul.menu li.selected { 287 | -webkit-border-start-color: #4e5764; 288 | } 289 | .chrome-bootstrap ul.menu li.selected a { 290 | color: #464E5A; 291 | } 292 | .chrome-bootstrap ul.menu li a { 293 | border: 0; 294 | color: #999; 295 | cursor: pointer; 296 | font: inherit; 297 | line-height: 29px; 298 | margin: 0; 299 | padding: 0; 300 | text-decoration: none; 301 | display: block; 302 | } 303 | .chrome-bootstrap .arrow_collapse { 304 | border-top: 5px solid transparent; 305 | border-bottom: 5px solid transparent; 306 | border-left: 6px solid #999; 307 | -webkit-margin-end: 4px; 308 | top: 1px; 309 | } 310 | .chrome-bootstrap .arrow_expand { 311 | border-left: 5px solid transparent; 312 | border-right: 5px solid transparent; 313 | border-top: 7px solid #999; 314 | -webkit-margin-end: 4px; 315 | } 316 | .chrome-bootstrap .arrow { 317 | width: 0; 318 | height: 0; 319 | position: relative; 320 | display: inline-block; 321 | } 322 | .chrome-bootstrap .delete { 323 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAiElEQVR42r2RsQrDMAxEBRdl8SDcX8lQPGg1GBI6lvz/h7QyRRXV0qUULwfvwZ1tenw5PxToRPWMC52eA9+WDnlh3HFQ/xBQl86NFYJqeGflkiogrOvVlIFhqURFVho3x1moGAa3deMs+LS30CAhBN5nNxeT5hbJ1zwmji2k+aF6NENIPf/hs54f0sZFUVAMigAAAABJRU5ErkJggg=="); 324 | background-repeat: no-repeat; 325 | display: block; 326 | opacity: 0; 327 | height: 14px; 328 | width: 14px; 329 | -webkit-transition: 150ms opacity; 330 | background-color: transparent; 331 | text-indent: -5000px; 332 | position: absolute; 333 | } 334 | .chrome-bootstrap .delete:hover { 335 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAqklEQVR4XqWRMQ6DMAxF/1Fyilyj2SmIBUG5QcTCyJA5Z8jGhlBPgRi4TmoDraVmKFJlWYrlp/g5QfwRlwEVNWVa4WzfH9jK6kCkEkBjwxOhLghheMWMELUAqqwQ4OCbnE4LJnhr5IYdqQt4DJQjhe9u4vBBmnxHHNzRFkDGjHDo0VuTAqy2vAG4NkvXXDHxbGsIGlj3e835VFNtdugma/Jk0eXq0lP//5svi4PtO01oFfYAAAAASUVORK5CYII="); 336 | } 337 | .chrome-bootstrap .highlightable li { 338 | position: relative; 339 | padding: 2px 0; 340 | } 341 | .chrome-bootstrap .highlightable li:hover > a:not(.action), 342 | .chrome-bootstrap .highlightable li a:not(.action):focus { 343 | background-color: #F0F6FE; 344 | color: #555; 345 | } 346 | .chrome-bootstrap .highlightable li:hover > .action { 347 | opacity: 0.7; 348 | } 349 | .chrome-bootstrap .highlightable li a { 350 | padding: 5px; 351 | display: block; 352 | position: relative; 353 | z-index: 0; 354 | text-decoration: none; 355 | } 356 | .chrome-bootstrap .highlightable li dt { 357 | font-size: 105%; 358 | margin-bottom: 3px; 359 | } 360 | .chrome-bootstrap .highlightable li dd { 361 | color: #999; 362 | overflow: hidden; 363 | white-space: nowrap; 364 | font-size: 10px; 365 | margin-top: 5px; 366 | } 367 | .chrome-bootstrap .highlightable li .tags { 368 | float: left; 369 | margin-top: -1px; 370 | font-size: 12px; 371 | } 372 | .chrome-bootstrap .highlightable li .tags li:last-child { 373 | margin-right: 5px; 374 | } 375 | .chrome-bootstrap .highlightable li .tags li:hover > a:not(.action) { 376 | background: #8AAAED; 377 | color: #FFF; 378 | } 379 | .chrome-bootstrap .highlightable li .tags li a { 380 | padding: 0; 381 | } 382 | .chrome-bootstrap .highlightable li .action { 383 | -webkit-appearance: none; 384 | -webkit-transition: opacity 150ms; 385 | background: #8AAAED; 386 | border: none; 387 | border-radius: 2px; 388 | color: white; 389 | opacity: 0; 390 | margin-top: 0; 391 | font-size: 10px; 392 | padding: 1px 6px; 393 | position: absolute; 394 | top: 8px; 395 | right: 32px; 396 | -webkit-transition: 150ms opacity; 397 | cursor: pointer; 398 | } 399 | .chrome-bootstrap .highlightable li .action:hover { 400 | opacity: 1; 401 | } 402 | .chrome-bootstrap .highlightable li .highlightable { 403 | -webkit-margin-start: 30px; 404 | } 405 | .chrome-bootstrap .highlightable.editable .delete { 406 | position: absolute; 407 | top: 7px; 408 | right: 5px; 409 | } 410 | .chrome-bootstrap .highlightable.editable li:hover > .delete { 411 | opacity: 1; 412 | } 413 | .chrome-bootstrap .highlightable.draggable .handle { 414 | width: 8px; 415 | height: 41px; 416 | background-image: linear-gradient(to bottom, #c1c1c1 50%, rgba(255, 255, 255, 0) 0%); 417 | background-position: center; 418 | background-size: 100% 17%; 419 | background-repeat: repeat-y; 420 | visibility: hidden; 421 | position: absolute; 422 | top: 4px; 423 | left: 2px; 424 | } 425 | .chrome-bootstrap .highlightable.draggable .handle:hover { 426 | cursor: move; 427 | cursor: -webkit-grab; 428 | display: block; 429 | } 430 | .chrome-bootstrap .highlightable.draggable .handle:after { 431 | margin-left: 3px; 432 | width: 2px; 433 | height: 41px; 434 | background: #F0F6FE; 435 | content: ""; 436 | display: block; 437 | } 438 | .chrome-bootstrap .highlightable.draggable li:hover .handle { 439 | visibility: visible; 440 | z-index: 1; 441 | } 442 | .chrome-bootstrap .highlightable.draggable li > .item { 443 | padding-left: 20px; 444 | } 445 | .chrome-bootstrap .match { 446 | background: #f2f37b; 447 | display: inline-block; 448 | margin: 0 1px; 449 | } 450 | .chrome-bootstrap select, 451 | .chrome-bootstrap input[type='checkbox'], 452 | .chrome-bootstrap input[type='radio'], 453 | .chrome-bootstrap input[type='button'], 454 | .chrome-bootstrap button { 455 | -webkit-appearance: none; 456 | -webkit-user-select: none; 457 | background-image: -webkit-linear-gradient(#ededed, #ededed 38%, #dedede); 458 | border: 1px solid rgba(0, 0, 0, 0.25); 459 | border-radius: 2px; 460 | box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08), inset 0 1px 2px rgba(255, 255, 255, 0.75); 461 | color: #444; 462 | font: inherit; 463 | margin: 0 1px 0 0; 464 | text-shadow: 0 1px 0 #F0F0F0; 465 | } 466 | .chrome-bootstrap button.small { 467 | padding: 1px 5px 2px; 468 | min-height: 1em; 469 | } 470 | .chrome-bootstrap input[type='checkbox']:checked::before { 471 | -webkit-user-select: none; 472 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9wDBhYcG79aGIsAAACbSURBVBjTjdFBCkFhFAXgj4fp24PBy0SZ2ICRXRgYGb2xlKzBSEo2YgsiKWVoZgFKMjD5X/2Ux6lb99bpnNO5lKMR5i8MsEQHkhJiEzlS9HCqfiFWMUIt3AfsC3KKLCL30Qr7HfM4Ro4h6rhiEqmusIMKuphGqo+ogSPGcbYLzh91vdkXSHDDBk+0gxussS3rNcMCs+D6E18/9gLPPhbDshfzLgAAAABJRU5ErkJggg=="); 473 | background-size: 100% 100%; 474 | content: ''; 475 | display: block; 476 | height: 100%; 477 | width: 100%; 478 | } 479 | .chrome-bootstrap html[dir='rtl'] input[type='checkbox']:checked::before { 480 | -webkit-transform: scaleX(-1); 481 | } 482 | .chrome-bootstrap input[type='radio']:checked::before { 483 | background-color: #666; 484 | border-radius: 100%; 485 | bottom: 3px; 486 | content: ''; 487 | display: block; 488 | left: 3px; 489 | position: absolute; 490 | right: 3px; 491 | top: 3px; 492 | } 493 | .chrome-bootstrap select { 494 | -webkit-appearance: none; 495 | -webkit-padding-end: 20px; 496 | -webkit-padding-start: 6px; 497 | /* OVERRIDE */ 498 | 499 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAICAYAAAAbQcSUAAAAWklEQVQokWNgoAOIAuI0PDiKaJMSgYCZmfkbkPkfHYPEQfJEG/b//3+FBQsWLGRjY/uJbBCIDxIHyRNtGDYDyTYI3UA+Pr4vFBmEbODbt2+bKDYIyUBWYtQBAIRzRP/XKJ//AAAAAElFTkSuQmCC), -webkit-linear-gradient(#ededed, #ededed 38%, #dedede); 500 | background-position: right center; 501 | background-repeat: no-repeat; 502 | } 503 | .chrome-bootstrap select { 504 | min-height: 2em; 505 | min-width: 4em; 506 | } 507 | .chrome-bootstrap html[dir='rtl'] select { 508 | background-position: center left; 509 | } 510 | .chrome-bootstrap input[type='checkbox'] { 511 | bottom: 2px; 512 | height: 13px; 513 | position: relative; 514 | vertical-align: middle; 515 | width: 13px; 516 | } 517 | .chrome-bootstrap input[type='radio'] { 518 | /* OVERRIDE */ 519 | 520 | border-radius: 100%; 521 | bottom: 3px; 522 | height: 15px; 523 | position: relative; 524 | vertical-align: middle; 525 | width: 15px; 526 | } 527 | .chrome-bootstrap button { 528 | -webkit-padding-end: 10px; 529 | -webkit-padding-start: 10px; 530 | min-height: 2em; 531 | min-width: 4em; 532 | } 533 | .chrome-bootstrap input[type='text'], 534 | .chrome-bootstrap input[type='number'], 535 | .chrome-bootstrap input[type='password'], 536 | .chrome-bootstrap input[type='search'] { 537 | border: 1px solid #BFBFBF; 538 | border-radius: 2px; 539 | box-sizing: border-box; 540 | color: #444; 541 | font: inherit; 542 | margin: 0; 543 | min-height: 2em; 544 | padding: 3px; 545 | padding-bottom: 4px; 546 | } 547 | .chrome-bootstrap .radio, 548 | .chrome-bootstrap .checkbox { 549 | margin: 0.65em 0; 550 | } 551 | .chrome-bootstrap .link-button { 552 | -webkit-box-shadow: none !important; 553 | box-shadow: none !important; 554 | background: transparent none !important; 555 | border: none !important; 556 | border-color: transparent !important; 557 | color: #1155cc !important; 558 | cursor: pointer; 559 | font: inherit; 560 | margin: 0; 561 | padding: 0 4px; 562 | } 563 | .chrome-bootstrap .link-button:hover { 564 | text-decoration: underline; 565 | } 566 | .chrome-bootstrap .link-button:active { 567 | color: #052577 !important; 568 | text-decoration: underline; 569 | } 570 | .chrome-bootstrap select:focus, 571 | .chrome-bootstrap input[type='checkbox']:focus, 572 | .chrome-bootstrap input[type='password']:focus, 573 | .chrome-bootstrap input[type='radio']:focus, 574 | .chrome-bootstrap input[type='search']:focus, 575 | .chrome-bootstrap input[type='text']:focus, 576 | .chrome-bootstrap input[type='number']:focus, 577 | .chrome-bootstrap button:focus { 578 | /* OVERRIDE */ 579 | 580 | -webkit-transition: border-color 200ms; 581 | /* We use border color because it follows the border radius (unlike outline). 582 | * This is particularly noticeable on mac. */ 583 | 584 | border-color: #4d90fe; 585 | outline: none; 586 | } 587 | .chrome-bootstrap button:disabled, 588 | .chrome-bootstrap select:disabled { 589 | background-image: -webkit-linear-gradient(#f1f1f1, #f1f1f1 38%, #e6e6e6); 590 | border-color: rgba(80, 80, 80, 0.2); 591 | box-shadow: 0 1px 0 rgba(80, 80, 80, 0.08), inset 0 1px 2px rgba(255, 255, 255, 0.75); 592 | color: #aaa; 593 | cursor: default; 594 | } 595 | .chrome-bootstrap select:disabled { 596 | /* OVERRIDE */ 597 | 598 | background-image: -webkit-image-set(url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAICAYAAAAbQcSUAAAAAXNSR0IArs4c6QAAAAd0SU1FB9sLAxYEBKriBmwAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACxMAAAsTAQCanBgAAABLSURBVCiRY2CgA4gC4jQ8OIpokxKBoKGh4T8uDJIn2rD///8rLFiwYCE2g0DiIHkSfIndQLIMwmYgRQYhG/j27dsmig1CMpCVGHUAo8FcsHfxfXQAAAAASUVORK5CYII=") 1 x), -webkit-linear-gradient(#f1f1f1, #f1f1f1 38%, #e6e6e6); 599 | } 600 | .chrome-bootstrap input[type='checkbox']:disabled, 601 | .chrome-bootstrap input[type='radio']:disabled { 602 | opacity: .75; 603 | } 604 | .chrome-bootstrap input[type='search']:disabled, 605 | .chrome-bootstrap input[type='number']:disabled, 606 | .chrome-bootstrap input[type='password']:disabled, 607 | .chrome-bootstrap input[type='text']:disabled { 608 | color: #999; 609 | } 610 | .chrome-bootstrap select:hover:enabled, 611 | .chrome-bootstrap input[type='checkbox']:hover:enabled, 612 | .chrome-bootstrap input[type='radio']:hover:enabled, 613 | .chrome-bootstrap button:hover:enabled { 614 | background-image: -webkit-linear-gradient(#f0f0f0, #f0f0f0 38%, #e0e0e0); 615 | border-color: rgba(0, 0, 0, 0.3); 616 | box-shadow: 0 1px 0 rgba(0, 0, 0, 0.12), inset 0 1px 2px rgba(255, 255, 255, 0.95); 617 | color: black; 618 | } 619 | .chrome-bootstrap select:hover:enabled { 620 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAICAYAAAAbQcSUAAAAWklEQVQokWNgoAOIAuI0PDiKaJMSgYCZmfkbkPkfHYPEQfJEG/b//3+FBQsWLGRjY/uJbBCIDxIHyRNtGDYDyTYI3UA+Pr4vFBmEbODbt2+bKDYIyUBWYtQBAIRzRP/XKJ//AAAAAElFTkSuQmCC"), -webkit-linear-gradient(#f0f0f0, #f0f0f0 38%, #e0e0e0); 621 | } 622 | .chrome-bootstrap select:active:enabled, 623 | .chrome-bootstrap input[type='checkbox']:active:enabled, 624 | .chrome-bootstrap input[type='radio']:active:enabled, 625 | .chrome-bootstrap button:active:enabled { 626 | background-image: -webkit-linear-gradient(#e7e7e7, #e7e7e7 38%, #d7d7d7); 627 | box-shadow: none; 628 | text-shadow: none; 629 | } 630 | .chrome-bootstrap select:active:enabled { 631 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAICAYAAAAbQcSUAAAAWklEQVQokWNgoAOIAuI0PDiKaJMSgYCZmfkbkPkfHYPEQfJEG/b//3+FBQsWLGRjY/uJbBCIDxIHyRNtGDYDyTYI3UA+Pr4vFBmEbODbt2+bKDYIyUBWYtQBAIRzRP/XKJ//AAAAAElFTkSuQmCC"), -webkit-linear-gradient(#e7e7e7, #e7e7e7 38%, #d7d7d7); 632 | } 633 | .chrome-bootstrap .overlay { 634 | -webkit-box-align: center; 635 | -webkit-box-orient: vertical; 636 | -webkit-box-pack: center; 637 | -webkit-transition: opacity .2s; 638 | background-color: rgba(255, 255, 255, 0.75); 639 | bottom: 0; 640 | display: -webkit-box; 641 | left: 0; 642 | overflow: auto; 643 | padding: 20px; 644 | position: fixed; 645 | right: 0; 646 | top: 0; 647 | z-index: 5; 648 | opacity: 1; 649 | } 650 | .chrome-bootstrap .overlay.transparent { 651 | opacity: 0; 652 | } 653 | .chrome-bootstrap .overlay.transparent .page { 654 | -webkit-transform: scale(0.99) translateY(-20px); 655 | } 656 | .chrome-bootstrap .overlay .page { 657 | -webkit-border-radius: 3px; 658 | -webkit-box-orient: vertical; 659 | -webkit-transition: 200ms -webkit-transform; 660 | background: white; 661 | box-shadow: 0 4px 23px 5px rgba(0, 0, 0, 0.2), 0 2px 6px rgba(0, 0, 0, 0.15); 662 | color: #333; 663 | display: -webkit-box; 664 | min-width: 400px; 665 | padding: 0; 666 | position: relative; 667 | overflow: hidden; 668 | } 669 | @-webkit-keyframes pulse { 670 | 0% { 671 | -webkit-transform: scale(1); 672 | } 673 | 40% { 674 | -webkit-transform: scale(1.02); 675 | } 676 | 60% { 677 | -webkit-transform: scale(1.02); 678 | } 679 | 100% { 680 | -webkit-transform: scale(1); 681 | } 682 | } 683 | .chrome-bootstrap .overlay .page.pulse { 684 | -webkit-animation-duration: 180ms; 685 | -webkit-animation-iteration-count: 1; 686 | -webkit-animation-name: pulse; 687 | -webkit-animation-timing-function: ease-in-out; 688 | } 689 | .chrome-bootstrap .overlay .page h1 { 690 | -webkit-padding-end: 24px; 691 | -webkit-user-select: none; 692 | color: #333; 693 | font-size: 120%; 694 | margin: 0; 695 | padding: 14px 17px 14px; 696 | text-shadow: white 0 1px 2px; 697 | } 698 | .chrome-bootstrap .overlay .page ul li { 699 | padding: 5px 0; 700 | } 701 | .chrome-bootstrap .overlay .page ul.tags li { 702 | padding: 2px 5px; 703 | } 704 | .chrome-bootstrap .overlay .page .content-area { 705 | -webkit-box-flex: 1; 706 | overflow: auto; 707 | padding: 6px 17px 6px; 708 | } 709 | .chrome-bootstrap .overlay .page .close-button { 710 | background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAQAAAC1QeVaAAAAUklEQVR4XqXPYQrAIAhAYW/gXd8NJxTopVqsGEhtf+L9/ERU2k/HSMFQpKcYJeNFI9Be0LCMij8cYyjj5EHIivGBkwLfrbX3IF8PqumVmnDpEG+eDsKibPG2JwAAAABJRU5ErkJggg=='); 711 | background-position: center; 712 | background-repeat: no-repeat; 713 | height: 14px; 714 | position: absolute; 715 | right: 7px; 716 | top: 7px; 717 | width: 14px; 718 | } 719 | .chrome-bootstrap .overlay .page .close-button:hover { 720 | background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAQAAAC1QeVaAAAAnUlEQVR4XoWQQQ6CQAxFewjkJkMCyXgJPMk7AiYczyBeZEAX6AKctGIaN+bt+trk9wtGQc/IkhnoKGxqqiWxOSZalapWFZ6VrIUDExsN0a5JRBq9LoVOR0eEQMoEhKizXhhsn0p1sCWVo7CwOf1RytPL8CPvwuBUoHL6ugeK30CVD1TqK7V/hdpe+VNChhOzV8xWny/+xosHF8578W/Hmc1OOC3wmwAAAABJRU5ErkJggg=='); 721 | } 722 | .chrome-bootstrap .overlay .page .action-area { 723 | -webkit-box-align: center; 724 | -webkit-box-orient: horizontal; 725 | -webkit-box-pack: end; 726 | display: -webkit-box; 727 | padding: 14px 17px; 728 | } 729 | .chrome-bootstrap .overlay .page .action-area-right { 730 | display: -webkit-box; 731 | } 732 | .chrome-bootstrap .overlay .page .button-strip { 733 | -webkit-box-orient: horizontal; 734 | display: -webkit-box; 735 | } 736 | .chrome-bootstrap .overlay .page .button-strip button { 737 | -webkit-margin-start: 10px; 738 | display: block; 739 | } 740 | -------------------------------------------------------------------------------- /data/cn.zone: -------------------------------------------------------------------------------- 1 | 1.0.1.0/24 2 | 1.0.2.0/23 3 | 1.0.8.0/21 4 | 1.0.32.0/19 5 | 1.1.0.0/24 6 | 1.1.2.0/23 7 | 1.1.4.0/22 8 | 1.1.8.0/21 9 | 1.1.16.0/20 10 | 1.1.32.0/19 11 | 1.2.0.0/23 12 | 1.2.2.0/24 13 | 1.2.4.0/24 14 | 1.2.5.0/24 15 | 1.2.6.0/23 16 | 1.2.8.0/24 17 | 1.2.9.0/24 18 | 1.2.10.0/23 19 | 1.2.12.0/22 20 | 1.2.16.0/20 21 | 1.2.32.0/19 22 | 1.2.64.0/18 23 | 1.3.0.0/16 24 | 1.4.1.0/24 25 | 1.4.2.0/23 26 | 1.4.4.0/24 27 | 1.4.5.0/24 28 | 1.4.6.0/23 29 | 1.4.8.0/21 30 | 1.4.16.0/20 31 | 1.4.32.0/19 32 | 1.4.64.0/18 33 | 1.8.0.0/16 34 | 1.10.0.0/21 35 | 1.10.8.0/23 36 | 1.10.11.0/24 37 | 1.10.12.0/22 38 | 1.10.16.0/20 39 | 1.10.32.0/19 40 | 1.10.64.0/18 41 | 1.12.0.0/14 42 | 1.24.0.0/13 43 | 1.45.0.0/16 44 | 1.48.0.0/15 45 | 1.50.0.0/16 46 | 1.51.0.0/16 47 | 1.56.0.0/13 48 | 1.68.0.0/14 49 | 1.80.0.0/13 50 | 1.88.0.0/14 51 | 1.92.0.0/15 52 | 1.94.0.0/15 53 | 1.116.0.0/14 54 | 1.180.0.0/14 55 | 1.184.0.0/15 56 | 1.188.0.0/14 57 | 1.192.0.0/13 58 | 1.202.0.0/15 59 | 1.204.0.0/14 60 | 14.0.0.0/21 61 | 14.0.12.0/22 62 | 14.1.0.0/22 63 | 14.16.0.0/12 64 | 14.102.128.0/22 65 | 14.102.156.0/22 66 | 14.103.0.0/16 67 | 14.104.0.0/13 68 | 14.112.0.0/12 69 | 14.130.0.0/15 70 | 14.134.0.0/15 71 | 14.144.0.0/12 72 | 14.192.60.0/22 73 | 14.192.76.0/22 74 | 14.196.0.0/15 75 | 14.204.0.0/15 76 | 14.208.0.0/12 77 | 27.8.0.0/13 78 | 27.16.0.0/12 79 | 27.34.232.0/21 80 | 27.36.0.0/14 81 | 27.40.0.0/13 82 | 27.50.40.0/21 83 | 27.50.128.0/17 84 | 27.54.72.0/21 85 | 27.54.152.0/21 86 | 27.54.192.0/18 87 | 27.98.208.0/20 88 | 27.98.224.0/19 89 | 27.99.128.0/17 90 | 27.103.0.0/16 91 | 27.106.128.0/18 92 | 27.106.204.0/22 93 | 27.109.32.0/19 94 | 27.112.0.0/18 95 | 27.112.80.0/20 96 | 27.113.128.0/18 97 | 27.115.0.0/17 98 | 27.116.44.0/22 99 | 27.121.72.0/21 100 | 27.121.120.0/21 101 | 27.128.0.0/15 102 | 27.131.220.0/22 103 | 27.144.0.0/16 104 | 27.148.0.0/14 105 | 27.152.0.0/13 106 | 27.184.0.0/13 107 | 27.192.0.0/11 108 | 27.224.0.0/14 109 | 36.0.0.0/22 110 | 36.0.8.0/21 111 | 36.0.16.0/20 112 | 36.0.32.0/19 113 | 36.0.64.0/18 114 | 36.0.128.0/17 115 | 36.1.0.0/16 116 | 36.4.0.0/14 117 | 36.16.0.0/12 118 | 36.32.0.0/14 119 | 36.36.0.0/16 120 | 36.37.0.0/19 121 | 36.37.36.0/23 122 | 36.37.39.0/24 123 | 36.37.40.0/21 124 | 36.37.48.0/20 125 | 36.40.0.0/13 126 | 36.48.0.0/15 127 | 36.51.0.0/16 128 | 36.56.0.0/13 129 | 36.96.0.0/11 130 | 36.128.0.0/10 131 | 36.192.0.0/11 132 | 36.248.0.0/14 133 | 36.254.0.0/16 134 | 39.0.0.0/24 135 | 39.0.2.0/23 136 | 39.0.4.0/22 137 | 39.0.8.0/21 138 | 39.0.16.0/20 139 | 39.0.32.0/19 140 | 39.0.64.0/18 141 | 39.0.128.0/17 142 | 39.64.0.0/11 143 | 39.128.0.0/10 144 | 42.0.0.0/22 145 | 42.0.8.0/21 146 | 42.0.16.0/21 147 | 42.0.24.0/22 148 | 42.0.32.0/19 149 | 42.0.128.0/17 150 | 42.1.0.0/19 151 | 42.1.32.0/20 152 | 42.1.48.0/21 153 | 42.1.56.0/22 154 | 42.1.128.0/17 155 | 42.4.0.0/14 156 | 42.48.0.0/15 157 | 42.50.0.0/16 158 | 42.51.0.0/16 159 | 42.52.0.0/14 160 | 42.56.0.0/14 161 | 42.62.0.0/17 162 | 42.62.128.0/19 163 | 42.62.160.0/20 164 | 42.62.180.0/22 165 | 42.62.184.0/21 166 | 42.63.0.0/16 167 | 42.80.0.0/15 168 | 42.83.64.0/20 169 | 42.83.80.0/22 170 | 42.83.88.0/21 171 | 42.83.96.0/19 172 | 42.83.128.0/17 173 | 42.84.0.0/14 174 | 42.88.0.0/13 175 | 42.96.64.0/19 176 | 42.96.96.0/21 177 | 42.96.108.0/22 178 | 42.96.112.0/20 179 | 42.96.128.0/17 180 | 42.97.0.0/16 181 | 42.99.0.0/18 182 | 42.99.64.0/19 183 | 42.99.96.0/20 184 | 42.99.112.0/22 185 | 42.99.120.0/21 186 | 42.100.0.0/14 187 | 42.120.0.0/15 188 | 42.122.0.0/16 189 | 42.123.0.0/19 190 | 42.123.36.0/22 191 | 42.123.40.0/21 192 | 42.123.48.0/20 193 | 42.123.64.0/18 194 | 42.123.128.0/17 195 | 42.128.0.0/12 196 | 42.156.0.0/19 197 | 42.156.36.0/22 198 | 42.156.40.0/21 199 | 42.156.48.0/20 200 | 42.156.64.0/18 201 | 42.156.128.0/17 202 | 42.157.0.0/16 203 | 42.158.0.0/15 204 | 42.160.0.0/12 205 | 42.176.0.0/13 206 | 42.184.0.0/15 207 | 42.186.0.0/16 208 | 42.187.0.0/18 209 | 42.187.64.0/19 210 | 42.187.96.0/20 211 | 42.187.112.0/21 212 | 42.187.120.0/22 213 | 42.187.128.0/17 214 | 42.192.0.0/15 215 | 42.194.0.0/21 216 | 42.194.8.0/22 217 | 42.194.12.0/22 218 | 42.194.16.0/20 219 | 42.194.32.0/19 220 | 42.194.64.0/18 221 | 42.194.128.0/17 222 | 42.195.0.0/16 223 | 42.196.0.0/14 224 | 42.201.0.0/17 225 | 42.202.0.0/15 226 | 42.204.0.0/14 227 | 42.208.0.0/12 228 | 42.224.0.0/12 229 | 42.240.0.0/17 230 | 42.240.128.0/17 231 | 42.242.0.0/15 232 | 42.244.0.0/14 233 | 42.248.0.0/13 234 | 49.4.0.0/14 235 | 49.51.0.0/16 236 | 49.52.0.0/14 237 | 49.64.0.0/11 238 | 49.112.0.0/13 239 | 49.120.0.0/14 240 | 49.128.0.0/24 241 | 49.128.2.0/23 242 | 49.140.0.0/15 243 | 49.152.0.0/14 244 | 49.208.0.0/15 245 | 49.210.0.0/15 246 | 49.220.0.0/14 247 | 49.232.0.0/14 248 | 49.239.0.0/18 249 | 49.239.192.0/18 250 | 49.246.224.0/19 251 | 58.14.0.0/15 252 | 58.16.0.0/16 253 | 58.17.0.0/17 254 | 58.17.128.0/17 255 | 58.18.0.0/16 256 | 58.19.0.0/16 257 | 58.20.0.0/16 258 | 58.21.0.0/16 259 | 58.22.0.0/15 260 | 58.24.0.0/15 261 | 58.30.0.0/15 262 | 58.32.0.0/13 263 | 58.40.0.0/15 264 | 58.42.0.0/16 265 | 58.43.0.0/16 266 | 58.44.0.0/14 267 | 58.48.0.0/13 268 | 58.56.0.0/15 269 | 58.58.0.0/16 270 | 58.59.0.0/17 271 | 58.59.128.0/17 272 | 58.60.0.0/14 273 | 58.65.232.0/21 274 | 58.66.0.0/15 275 | 58.68.128.0/17 276 | 58.82.0.0/17 277 | 58.83.0.0/16 278 | 58.87.64.0/18 279 | 58.99.128.0/17 280 | 58.100.0.0/15 281 | 58.116.0.0/14 282 | 58.128.0.0/13 283 | 58.144.0.0/16 284 | 58.154.0.0/15 285 | 58.192.0.0/15 286 | 58.194.0.0/15 287 | 58.196.0.0/15 288 | 58.198.0.0/15 289 | 58.200.0.0/13 290 | 58.208.0.0/12 291 | 58.240.0.0/15 292 | 58.242.0.0/15 293 | 58.244.0.0/15 294 | 58.246.0.0/15 295 | 58.248.0.0/13 296 | 59.32.0.0/13 297 | 59.40.0.0/15 298 | 59.42.0.0/16 299 | 59.43.0.0/16 300 | 59.44.0.0/14 301 | 59.48.0.0/16 302 | 59.49.0.0/17 303 | 59.49.128.0/17 304 | 59.50.0.0/16 305 | 59.51.0.0/17 306 | 59.51.128.0/17 307 | 59.52.0.0/14 308 | 59.56.0.0/14 309 | 59.60.0.0/15 310 | 59.62.0.0/15 311 | 59.64.0.0/14 312 | 59.68.0.0/14 313 | 59.72.0.0/15 314 | 59.74.0.0/15 315 | 59.76.0.0/16 316 | 59.77.0.0/16 317 | 59.78.0.0/15 318 | 59.80.0.0/14 319 | 59.107.0.0/17 320 | 59.107.128.0/17 321 | 59.108.0.0/15 322 | 59.110.0.0/15 323 | 59.151.0.0/17 324 | 59.155.0.0/16 325 | 59.172.0.0/15 326 | 59.174.0.0/15 327 | 59.191.0.0/17 328 | 59.191.240.0/20 329 | 59.192.0.0/10 330 | 60.0.0.0/13 331 | 60.8.0.0/15 332 | 60.10.0.0/16 333 | 60.11.0.0/16 334 | 60.12.0.0/16 335 | 60.13.0.0/18 336 | 60.13.64.0/18 337 | 60.13.128.0/17 338 | 60.14.0.0/15 339 | 60.16.0.0/13 340 | 60.24.0.0/14 341 | 60.28.0.0/15 342 | 60.30.0.0/16 343 | 60.31.0.0/16 344 | 60.55.0.0/16 345 | 60.63.0.0/16 346 | 60.160.0.0/15 347 | 60.162.0.0/15 348 | 60.164.0.0/15 349 | 60.166.0.0/15 350 | 60.168.0.0/13 351 | 60.176.0.0/12 352 | 60.194.0.0/15 353 | 60.200.0.0/14 354 | 60.204.0.0/16 355 | 60.205.0.0/16 356 | 60.206.0.0/15 357 | 60.208.0.0/13 358 | 60.216.0.0/15 359 | 60.218.0.0/15 360 | 60.220.0.0/14 361 | 60.232.0.0/15 362 | 60.235.0.0/16 363 | 60.245.128.0/17 364 | 60.247.0.0/16 365 | 60.252.0.0/16 366 | 60.253.128.0/17 367 | 60.255.0.0/16 368 | 61.4.80.0/22 369 | 61.4.84.0/22 370 | 61.4.88.0/21 371 | 61.4.176.0/20 372 | 61.8.160.0/20 373 | 61.28.0.0/20 374 | 61.28.16.0/20 375 | 61.28.32.0/19 376 | 61.28.64.0/18 377 | 61.29.128.0/18 378 | 61.29.192.0/19 379 | 61.29.224.0/20 380 | 61.29.240.0/20 381 | 61.45.128.0/18 382 | 61.45.224.0/20 383 | 61.47.128.0/18 384 | 61.48.0.0/14 385 | 61.52.0.0/15 386 | 61.54.0.0/16 387 | 61.55.0.0/16 388 | 61.87.192.0/18 389 | 61.128.0.0/15 390 | 61.130.0.0/15 391 | 61.132.0.0/16 392 | 61.133.0.0/17 393 | 61.133.128.0/17 394 | 61.134.0.0/18 395 | 61.134.64.0/19 396 | 61.134.96.0/19 397 | 61.134.128.0/18 398 | 61.134.192.0/18 399 | 61.135.0.0/16 400 | 61.136.0.0/18 401 | 61.136.64.0/18 402 | 61.136.128.0/17 403 | 61.137.0.0/17 404 | 61.137.128.0/17 405 | 61.138.0.0/18 406 | 61.138.64.0/18 407 | 61.138.128.0/18 408 | 61.138.192.0/18 409 | 61.139.0.0/17 410 | 61.139.128.0/18 411 | 61.139.192.0/18 412 | 61.140.0.0/14 413 | 61.144.0.0/14 414 | 61.148.0.0/15 415 | 61.150.0.0/15 416 | 61.152.0.0/16 417 | 61.153.0.0/16 418 | 61.154.0.0/15 419 | 61.156.0.0/16 420 | 61.157.0.0/16 421 | 61.158.0.0/17 422 | 61.158.128.0/17 423 | 61.159.0.0/18 424 | 61.159.64.0/18 425 | 61.159.128.0/17 426 | 61.160.0.0/16 427 | 61.161.0.0/18 428 | 61.161.64.0/18 429 | 61.161.128.0/17 430 | 61.162.0.0/16 431 | 61.163.0.0/16 432 | 61.164.0.0/16 433 | 61.165.0.0/16 434 | 61.166.0.0/16 435 | 61.167.0.0/16 436 | 61.168.0.0/16 437 | 61.169.0.0/16 438 | 61.170.0.0/15 439 | 61.172.0.0/14 440 | 61.176.0.0/16 441 | 61.177.0.0/16 442 | 61.178.0.0/16 443 | 61.179.0.0/16 444 | 61.180.0.0/17 445 | 61.180.128.0/17 446 | 61.181.0.0/16 447 | 61.182.0.0/16 448 | 61.183.0.0/16 449 | 61.184.0.0/14 450 | 61.188.0.0/16 451 | 61.189.0.0/17 452 | 61.189.128.0/17 453 | 61.190.0.0/15 454 | 61.232.0.0/14 455 | 61.236.0.0/15 456 | 61.240.0.0/14 457 | 101.0.0.0/22 458 | 101.1.0.0/22 459 | 101.2.172.0/22 460 | 101.4.0.0/14 461 | 101.16.0.0/12 462 | 101.32.0.0/12 463 | 101.48.0.0/15 464 | 101.50.56.0/22 465 | 101.52.0.0/16 466 | 101.53.100.0/22 467 | 101.54.0.0/16 468 | 101.55.224.0/21 469 | 101.64.0.0/13 470 | 101.72.0.0/14 471 | 101.76.0.0/15 472 | 101.78.0.0/22 473 | 101.78.32.0/19 474 | 101.80.0.0/12 475 | 101.96.0.0/21 476 | 101.96.8.0/22 477 | 101.96.16.0/20 478 | 101.96.128.0/17 479 | 101.99.96.0/19 480 | 101.101.64.0/19 481 | 101.101.100.0/24 482 | 101.101.102.0/23 483 | 101.101.104.0/21 484 | 101.101.112.0/20 485 | 101.102.64.0/19 486 | 101.102.100.0/23 487 | 101.102.102.0/24 488 | 101.102.104.0/21 489 | 101.102.112.0/20 490 | 101.104.0.0/14 491 | 101.110.64.0/19 492 | 101.110.96.0/20 493 | 101.110.116.0/22 494 | 101.110.120.0/21 495 | 101.120.0.0/14 496 | 101.124.0.0/15 497 | 101.126.0.0/16 498 | 101.128.0.0/22 499 | 101.128.8.0/21 500 | 101.128.16.0/20 501 | 101.128.32.0/19 502 | 101.129.0.0/16 503 | 101.130.0.0/15 504 | 101.132.0.0/14 505 | 101.144.0.0/12 506 | 101.192.0.0/14 507 | 101.196.0.0/14 508 | 101.200.0.0/15 509 | 101.203.128.0/19 510 | 101.203.160.0/21 511 | 101.203.172.0/22 512 | 101.203.176.0/20 513 | 101.204.0.0/14 514 | 101.224.0.0/13 515 | 101.232.0.0/15 516 | 101.234.64.0/21 517 | 101.234.76.0/22 518 | 101.234.80.0/20 519 | 101.234.96.0/19 520 | 101.236.0.0/14 521 | 101.240.0.0/14 522 | 101.244.0.0/14 523 | 101.248.0.0/15 524 | 101.251.0.0/22 525 | 101.251.8.0/21 526 | 101.251.16.0/20 527 | 101.251.32.0/19 528 | 101.251.64.0/18 529 | 101.251.128.0/17 530 | 101.252.0.0/15 531 | 101.254.0.0/16 532 | 103.1.8.0/22 533 | 103.1.20.0/22 534 | 103.1.24.0/22 535 | 103.1.72.0/22 536 | 103.1.88.0/22 537 | 103.1.168.0/22 538 | 103.2.108.0/22 539 | 103.2.156.0/22 540 | 103.2.164.0/22 541 | 103.2.200.0/22 542 | 103.2.204.0/22 543 | 103.2.208.0/22 544 | 103.2.212.0/22 545 | 103.3.84.0/22 546 | 103.3.88.0/22 547 | 103.3.92.0/22 548 | 103.3.96.0/22 549 | 103.3.100.0/22 550 | 103.3.104.0/22 551 | 103.3.108.0/22 552 | 103.3.112.0/22 553 | 103.3.116.0/22 554 | 103.3.120.0/22 555 | 103.3.124.0/22 556 | 103.3.128.0/22 557 | 103.3.132.0/22 558 | 103.3.136.0/22 559 | 103.3.140.0/22 560 | 103.3.148.0/22 561 | 103.3.152.0/22 562 | 103.3.156.0/22 563 | 103.4.56.0/22 564 | 103.4.168.0/22 565 | 103.4.184.0/22 566 | 103.5.36.0/22 567 | 103.5.52.0/22 568 | 103.5.56.0/22 569 | 103.5.252.0/22 570 | 103.6.76.0/22 571 | 103.6.220.0/22 572 | 103.7.4.0/22 573 | 103.7.28.0/22 574 | 103.7.212.0/22 575 | 103.7.216.0/22 576 | 103.7.220.0/22 577 | 103.8.4.0/22 578 | 103.8.8.0/22 579 | 103.8.32.0/22 580 | 103.8.52.0/22 581 | 103.8.108.0/22 582 | 103.8.156.0/22 583 | 103.8.200.0/22 584 | 103.8.204.0/22 585 | 103.8.220.0/22 586 | 103.9.152.0/22 587 | 103.9.248.0/22 588 | 103.9.252.0/22 589 | 103.10.0.0/22 590 | 103.10.16.0/22 591 | 103.10.84.0/22 592 | 103.10.111.0/24 593 | 103.10.140.0/22 594 | 103.11.180.0/22 595 | 103.12.32.0/22 596 | 103.12.68.0/22 597 | 103.12.136.0/22 598 | 103.12.184.0/22 599 | 103.12.232.0/22 600 | 103.13.124.0/22 601 | 103.13.144.0/22 602 | 103.13.196.0/22 603 | 103.13.244.0/22 604 | 103.14.84.0/22 605 | 103.14.112.0/22 606 | 103.14.132.0/22 607 | 103.14.136.0/22 608 | 103.14.156.0/22 609 | 103.14.240.0/22 610 | 103.15.4.0/22 611 | 103.15.8.0/22 612 | 103.15.16.0/22 613 | 103.15.96.0/22 614 | 103.15.200.0/22 615 | 103.16.52.0/22 616 | 103.16.80.0/22 617 | 103.16.84.0/22 618 | 103.16.88.0/22 619 | 103.16.108.0/22 620 | 103.16.124.0/22 621 | 103.17.40.0/22 622 | 103.17.120.0/22 623 | 103.17.160.0/22 624 | 103.17.204.0/22 625 | 103.17.228.0/22 626 | 103.20.12.0/22 627 | 103.20.32.0/22 628 | 103.20.112.0/22 629 | 103.20.128.0/22 630 | 103.20.160.0/22 631 | 103.20.248.0/22 632 | 103.21.112.0/22 633 | 103.21.116.0/22 634 | 103.21.136.0/22 635 | 103.21.140.0/22 636 | 103.21.176.0/22 637 | 103.21.208.0/22 638 | 103.21.240.0/22 639 | 103.22.0.0/22 640 | 103.22.4.0/22 641 | 103.22.8.0/22 642 | 103.22.12.0/22 643 | 103.22.16.0/22 644 | 103.22.20.0/22 645 | 103.22.24.0/22 646 | 103.22.28.0/22 647 | 103.22.32.0/22 648 | 103.22.36.0/22 649 | 103.22.40.0/22 650 | 103.22.44.0/22 651 | 103.22.48.0/22 652 | 103.22.52.0/22 653 | 103.22.56.0/22 654 | 103.22.60.0/22 655 | 103.22.64.0/22 656 | 103.22.68.0/22 657 | 103.22.72.0/22 658 | 103.22.76.0/22 659 | 103.22.80.0/22 660 | 103.22.84.0/22 661 | 103.22.88.0/22 662 | 103.22.92.0/22 663 | 103.22.100.0/22 664 | 103.22.104.0/22 665 | 103.22.108.0/22 666 | 103.22.112.0/22 667 | 103.22.116.0/22 668 | 103.22.120.0/22 669 | 103.22.124.0/22 670 | 103.22.188.0/22 671 | 103.22.228.0/22 672 | 103.22.252.0/22 673 | 103.23.8.0/22 674 | 103.23.56.0/22 675 | 103.23.160.0/22 676 | 103.23.164.0/22 677 | 103.23.176.0/22 678 | 103.23.228.0/22 679 | 103.28.4.0/22 680 | 103.28.8.0/22 681 | 103.28.204.0/22 682 | 103.29.16.0/22 683 | 103.29.128.0/22 684 | 103.29.132.0/22 685 | 103.29.136.0/22 686 | 103.30.20.0/22 687 | 103.30.96.0/22 688 | 103.30.148.0/22 689 | 103.30.200.0/22 690 | 103.30.216.0/22 691 | 103.30.228.0/22 692 | 103.30.232.0/22 693 | 103.30.236.0/22 694 | 103.31.0.0/22 695 | 103.31.48.0/22 696 | 103.31.52.0/22 697 | 103.31.56.0/22 698 | 103.31.60.0/22 699 | 103.31.64.0/22 700 | 103.31.68.0/22 701 | 103.31.72.0/22 702 | 103.31.148.0/22 703 | 103.31.160.0/22 704 | 103.31.168.0/22 705 | 103.31.200.0/22 706 | 103.244.16.0/22 707 | 103.244.56.0/22 708 | 103.244.60.0/22 709 | 103.244.64.0/22 710 | 103.244.68.0/22 711 | 103.244.72.0/22 712 | 103.244.76.0/22 713 | 103.244.80.0/22 714 | 103.244.84.0/22 715 | 103.244.88.0/22 716 | 103.244.148.0/22 717 | 103.244.164.0/22 718 | 103.244.232.0/22 719 | 103.244.252.0/22 720 | 103.245.23.0/24 721 | 103.245.52.0/22 722 | 103.245.60.0/22 723 | 103.245.80.0/22 724 | 103.245.124.0/22 725 | 103.245.128.0/22 726 | 103.246.8.0/22 727 | 103.246.12.0/22 728 | 103.246.120.0/22 729 | 103.246.124.0/22 730 | 103.246.132.0/22 731 | 103.246.152.0/22 732 | 103.246.156.0/22 733 | 103.247.168.0/22 734 | 103.247.172.0/22 735 | 103.247.176.0/22 736 | 103.247.200.0/22 737 | 103.247.212.0/22 738 | 106.0.0.0/24 739 | 106.0.2.0/23 740 | 106.0.4.0/22 741 | 106.0.8.0/21 742 | 106.0.16.0/20 743 | 106.0.64.0/18 744 | 106.2.0.0/15 745 | 106.4.0.0/14 746 | 106.8.0.0/15 747 | 106.11.0.0/16 748 | 106.12.0.0/14 749 | 106.16.0.0/12 750 | 106.32.0.0/12 751 | 106.48.0.0/15 752 | 106.50.0.0/16 753 | 106.52.0.0/14 754 | 106.56.0.0/13 755 | 106.74.0.0/15 756 | 106.80.0.0/12 757 | 106.108.0.0/14 758 | 106.112.0.0/13 759 | 106.120.0.0/13 760 | 106.224.0.0/12 761 | 110.6.0.0/15 762 | 110.16.0.0/14 763 | 110.40.0.0/14 764 | 110.44.144.0/20 765 | 110.48.0.0/16 766 | 110.51.0.0/16 767 | 110.52.0.0/15 768 | 110.56.0.0/13 769 | 110.64.0.0/15 770 | 110.72.0.0/15 771 | 110.75.0.0/17 772 | 110.75.128.0/19 773 | 110.75.160.0/19 774 | 110.75.192.0/18 775 | 110.76.0.0/19 776 | 110.76.32.0/19 777 | 110.76.156.0/22 778 | 110.76.184.0/22 779 | 110.76.192.0/18 780 | 110.77.0.0/17 781 | 110.80.0.0/13 782 | 110.88.0.0/14 783 | 110.93.32.0/19 784 | 110.94.0.0/15 785 | 110.96.0.0/11 786 | 110.152.0.0/14 787 | 110.156.0.0/15 788 | 110.165.32.0/19 789 | 110.166.0.0/15 790 | 110.172.192.0/18 791 | 110.173.0.0/19 792 | 110.173.32.0/20 793 | 110.173.64.0/19 794 | 110.173.96.0/19 795 | 110.173.192.0/19 796 | 110.176.0.0/13 797 | 110.184.0.0/13 798 | 110.192.0.0/11 799 | 110.228.0.0/14 800 | 110.232.32.0/19 801 | 110.236.0.0/15 802 | 110.240.0.0/12 803 | 111.0.0.0/10 804 | 111.66.0.0/16 805 | 111.67.192.0/20 806 | 111.68.64.0/19 807 | 111.72.0.0/13 808 | 111.85.0.0/16 809 | 111.91.192.0/19 810 | 111.112.0.0/15 811 | 111.114.0.0/15 812 | 111.116.0.0/15 813 | 111.118.200.0/21 814 | 111.119.64.0/18 815 | 111.119.128.0/19 816 | 111.120.0.0/14 817 | 111.124.0.0/16 818 | 111.126.0.0/15 819 | 111.128.0.0/11 820 | 111.160.0.0/13 821 | 111.170.0.0/16 822 | 111.172.0.0/14 823 | 111.176.0.0/13 824 | 111.186.0.0/15 825 | 111.192.0.0/12 826 | 111.208.0.0/14 827 | 111.212.0.0/14 828 | 111.221.128.0/17 829 | 111.222.0.0/16 830 | 111.223.240.0/22 831 | 111.223.248.0/22 832 | 111.224.0.0/14 833 | 111.228.0.0/14 834 | 111.235.96.0/19 835 | 111.235.156.0/22 836 | 111.235.160.0/19 837 | 112.0.0.0/10 838 | 112.64.0.0/15 839 | 112.66.0.0/15 840 | 112.73.0.0/16 841 | 112.74.0.0/15 842 | 112.80.0.0/13 843 | 112.88.0.0/13 844 | 112.96.0.0/15 845 | 112.98.0.0/15 846 | 112.100.0.0/14 847 | 112.109.128.0/17 848 | 112.111.0.0/16 849 | 112.112.0.0/14 850 | 112.116.0.0/15 851 | 112.122.0.0/15 852 | 112.124.0.0/14 853 | 112.128.0.0/14 854 | 112.132.0.0/16 855 | 112.137.48.0/21 856 | 112.192.0.0/14 857 | 112.224.0.0/11 858 | 113.0.0.0/13 859 | 113.8.0.0/15 860 | 113.11.192.0/19 861 | 113.12.0.0/14 862 | 113.16.0.0/15 863 | 113.18.0.0/16 864 | 113.24.0.0/14 865 | 113.31.0.0/16 866 | 113.44.0.0/14 867 | 113.48.0.0/14 868 | 113.52.160.0/19 869 | 113.54.0.0/15 870 | 113.56.0.0/15 871 | 113.58.0.0/16 872 | 113.59.0.0/17 873 | 113.59.224.0/22 874 | 113.62.0.0/15 875 | 113.64.0.0/11 876 | 113.96.0.0/12 877 | 113.112.0.0/13 878 | 113.120.0.0/13 879 | 113.128.0.0/15 880 | 113.130.96.0/20 881 | 113.130.112.0/21 882 | 113.132.0.0/14 883 | 113.136.0.0/13 884 | 113.194.0.0/15 885 | 113.197.100.0/22 886 | 113.200.0.0/15 887 | 113.202.0.0/16 888 | 113.204.0.0/14 889 | 113.208.96.0/19 890 | 113.208.128.0/17 891 | 113.209.0.0/16 892 | 113.212.0.0/18 893 | 113.212.100.0/22 894 | 113.212.184.0/21 895 | 113.213.0.0/17 896 | 113.214.0.0/15 897 | 113.218.0.0/15 898 | 113.220.0.0/14 899 | 113.224.0.0/12 900 | 113.240.0.0/13 901 | 113.248.0.0/14 902 | 114.28.0.0/16 903 | 114.54.0.0/15 904 | 114.60.0.0/14 905 | 114.64.0.0/14 906 | 114.68.0.0/16 907 | 114.79.64.0/18 908 | 114.80.0.0/12 909 | 114.96.0.0/13 910 | 114.104.0.0/14 911 | 114.110.0.0/20 912 | 114.110.64.0/18 913 | 114.111.0.0/19 914 | 114.111.160.0/19 915 | 114.112.0.0/14 916 | 114.116.0.0/15 917 | 114.118.0.0/15 918 | 114.132.0.0/16 919 | 114.135.0.0/16 920 | 114.138.0.0/15 921 | 114.141.64.0/21 922 | 114.141.128.0/18 923 | 114.196.0.0/15 924 | 114.198.248.0/21 925 | 114.208.0.0/14 926 | 114.212.0.0/15 927 | 114.214.0.0/16 928 | 114.215.0.0/16 929 | 114.216.0.0/13 930 | 114.224.0.0/12 931 | 114.240.0.0/12 932 | 115.24.0.0/14 933 | 115.28.0.0/15 934 | 115.32.0.0/14 935 | 115.44.0.0/15 936 | 115.46.0.0/16 937 | 115.47.0.0/16 938 | 115.48.0.0/12 939 | 115.69.64.0/20 940 | 115.84.0.0/18 941 | 115.84.192.0/19 942 | 115.85.192.0/18 943 | 115.100.0.0/14 944 | 115.104.0.0/14 945 | 115.120.0.0/14 946 | 115.124.16.0/20 947 | 115.148.0.0/14 948 | 115.152.0.0/15 949 | 115.154.0.0/15 950 | 115.156.0.0/15 951 | 115.158.0.0/16 952 | 115.159.0.0/16 953 | 115.166.64.0/19 954 | 115.168.0.0/14 955 | 115.172.0.0/14 956 | 115.180.0.0/14 957 | 115.190.0.0/15 958 | 115.192.0.0/11 959 | 115.224.0.0/12 960 | 116.0.8.0/21 961 | 116.0.24.0/21 962 | 116.1.0.0/16 963 | 116.2.0.0/15 964 | 116.4.0.0/14 965 | 116.8.0.0/14 966 | 116.13.0.0/16 967 | 116.16.0.0/12 968 | 116.50.0.0/20 969 | 116.52.0.0/14 970 | 116.56.0.0/15 971 | 116.58.128.0/20 972 | 116.58.208.0/20 973 | 116.60.0.0/14 974 | 116.66.0.0/17 975 | 116.69.0.0/16 976 | 116.70.0.0/17 977 | 116.76.0.0/15 978 | 116.78.0.0/15 979 | 116.85.0.0/16 980 | 116.89.144.0/20 981 | 116.90.80.0/20 982 | 116.90.184.0/21 983 | 116.95.0.0/16 984 | 116.112.0.0/14 985 | 116.116.0.0/15 986 | 116.128.0.0/10 987 | 116.192.0.0/16 988 | 116.193.16.0/20 989 | 116.193.32.0/19 990 | 116.193.176.0/21 991 | 116.194.0.0/15 992 | 116.196.0.0/16 993 | 116.198.0.0/16 994 | 116.199.0.0/17 995 | 116.199.128.0/19 996 | 116.204.0.0/15 997 | 116.207.0.0/16 998 | 116.208.0.0/14 999 | 116.212.160.0/20 1000 | 116.213.64.0/18 1001 | 116.213.128.0/17 1002 | 116.214.32.0/19 1003 | 116.214.64.0/20 1004 | 116.214.128.0/17 1005 | 116.215.0.0/16 1006 | 116.216.0.0/14 1007 | 116.224.0.0/12 1008 | 116.242.0.0/15 1009 | 116.244.0.0/15 1010 | 116.246.0.0/15 1011 | 116.248.0.0/15 1012 | 116.251.64.0/18 1013 | 116.252.0.0/15 1014 | 116.254.128.0/17 1015 | 116.255.128.0/17 1016 | 117.8.0.0/13 1017 | 117.21.0.0/16 1018 | 117.22.0.0/15 1019 | 117.24.0.0/13 1020 | 117.32.0.0/13 1021 | 117.40.0.0/14 1022 | 117.44.0.0/15 1023 | 117.48.0.0/14 1024 | 117.53.48.0/20 1025 | 117.53.176.0/20 1026 | 117.57.0.0/16 1027 | 117.58.0.0/17 1028 | 117.59.0.0/16 1029 | 117.60.0.0/14 1030 | 117.64.0.0/13 1031 | 117.72.0.0/15 1032 | 117.74.64.0/20 1033 | 117.74.80.0/20 1034 | 117.74.128.0/17 1035 | 117.75.0.0/16 1036 | 117.76.0.0/14 1037 | 117.80.0.0/12 1038 | 117.100.0.0/15 1039 | 117.103.16.0/20 1040 | 117.103.40.0/21 1041 | 117.103.72.0/21 1042 | 117.103.128.0/20 1043 | 117.104.168.0/21 1044 | 117.106.0.0/15 1045 | 117.112.0.0/13 1046 | 117.120.64.0/18 1047 | 117.120.128.0/17 1048 | 117.121.0.0/17 1049 | 117.121.128.0/18 1050 | 117.121.192.0/21 1051 | 117.122.128.0/17 1052 | 117.124.0.0/14 1053 | 117.128.0.0/10 1054 | 118.24.0.0/15 1055 | 118.26.0.0/16 1056 | 118.28.0.0/15 1057 | 118.30.0.0/16 1058 | 118.31.0.0/16 1059 | 118.64.0.0/15 1060 | 118.66.0.0/16 1061 | 118.67.112.0/20 1062 | 118.72.0.0/13 1063 | 118.80.0.0/15 1064 | 118.84.0.0/15 1065 | 118.88.32.0/19 1066 | 118.88.64.0/18 1067 | 118.88.128.0/17 1068 | 118.89.0.0/16 1069 | 118.91.240.0/20 1070 | 118.102.16.0/20 1071 | 118.102.32.0/21 1072 | 118.112.0.0/13 1073 | 118.120.0.0/14 1074 | 118.124.0.0/15 1075 | 118.126.0.0/16 1076 | 118.127.128.0/19 1077 | 118.132.0.0/14 1078 | 118.144.0.0/14 1079 | 118.178.0.0/16 1080 | 118.180.0.0/14 1081 | 118.184.0.0/16 1082 | 118.186.0.0/15 1083 | 118.188.0.0/16 1084 | 118.190.0.0/15 1085 | 118.192.0.0/15 1086 | 118.194.0.0/17 1087 | 118.194.128.0/17 1088 | 118.195.0.0/16 1089 | 118.196.0.0/14 1090 | 118.202.0.0/15 1091 | 118.204.0.0/14 1092 | 118.212.0.0/16 1093 | 118.213.0.0/16 1094 | 118.224.0.0/14 1095 | 118.228.0.0/15 1096 | 118.230.0.0/16 1097 | 118.239.0.0/16 1098 | 118.242.0.0/16 1099 | 118.244.0.0/14 1100 | 118.248.0.0/13 1101 | 119.0.0.0/15 1102 | 119.2.0.0/19 1103 | 119.2.128.0/17 1104 | 119.3.0.0/16 1105 | 119.4.0.0/14 1106 | 119.8.0.0/16 1107 | 119.10.0.0/17 1108 | 119.15.136.0/21 1109 | 119.16.0.0/16 1110 | 119.18.192.0/20 1111 | 119.18.208.0/21 1112 | 119.18.224.0/20 1113 | 119.18.240.0/20 1114 | 119.19.0.0/16 1115 | 119.20.0.0/14 1116 | 119.27.64.0/18 1117 | 119.27.128.0/19 1118 | 119.27.160.0/19 1119 | 119.27.192.0/18 1120 | 119.28.0.0/15 1121 | 119.30.48.0/20 1122 | 119.31.192.0/19 1123 | 119.32.0.0/14 1124 | 119.36.0.0/16 1125 | 119.37.0.0/17 1126 | 119.37.128.0/18 1127 | 119.37.192.0/18 1128 | 119.38.0.0/17 1129 | 119.38.128.0/18 1130 | 119.38.192.0/20 1131 | 119.38.208.0/20 1132 | 119.38.224.0/19 1133 | 119.39.0.0/16 1134 | 119.40.0.0/18 1135 | 119.40.64.0/20 1136 | 119.40.128.0/17 1137 | 119.41.0.0/16 1138 | 119.42.0.0/19 1139 | 119.42.128.0/21 1140 | 119.42.136.0/21 1141 | 119.42.224.0/19 1142 | 119.44.0.0/15 1143 | 119.48.0.0/13 1144 | 119.57.0.0/16 1145 | 119.58.0.0/16 1146 | 119.59.128.0/17 1147 | 119.60.0.0/16 1148 | 119.61.0.0/16 1149 | 119.62.0.0/16 1150 | 119.63.32.0/19 1151 | 119.75.208.0/20 1152 | 119.78.0.0/15 1153 | 119.80.0.0/16 1154 | 119.82.208.0/20 1155 | 119.84.0.0/14 1156 | 119.88.0.0/14 1157 | 119.96.0.0/13 1158 | 119.108.0.0/15 1159 | 119.112.0.0/13 1160 | 119.120.0.0/13 1161 | 119.128.0.0/12 1162 | 119.144.0.0/14 1163 | 119.148.160.0/20 1164 | 119.148.176.0/20 1165 | 119.151.192.0/18 1166 | 119.160.200.0/21 1167 | 119.161.128.0/17 1168 | 119.162.0.0/15 1169 | 119.164.0.0/14 1170 | 119.176.0.0/12 1171 | 119.232.0.0/15 1172 | 119.235.128.0/18 1173 | 119.248.0.0/14 1174 | 119.252.96.0/21 1175 | 119.252.240.0/20 1176 | 119.253.0.0/16 1177 | 119.254.0.0/15 1178 | 120.0.0.0/12 1179 | 120.24.0.0/14 1180 | 120.30.0.0/16 1181 | 120.31.0.0/16 1182 | 120.32.0.0/13 1183 | 120.40.0.0/14 1184 | 120.44.0.0/14 1185 | 120.48.0.0/15 1186 | 120.52.0.0/14 1187 | 120.64.0.0/14 1188 | 120.68.0.0/14 1189 | 120.72.32.0/19 1190 | 120.72.128.0/17 1191 | 120.76.0.0/14 1192 | 120.80.0.0/13 1193 | 120.88.8.0/21 1194 | 120.90.0.0/15 1195 | 120.92.0.0/16 1196 | 120.94.0.0/16 1197 | 120.95.0.0/16 1198 | 120.128.0.0/14 1199 | 120.132.0.0/17 1200 | 120.132.128.0/17 1201 | 120.133.0.0/16 1202 | 120.134.0.0/15 1203 | 120.136.128.0/18 1204 | 120.137.0.0/17 1205 | 120.143.128.0/19 1206 | 120.192.0.0/10 1207 | 121.0.8.0/21 1208 | 121.0.16.0/20 1209 | 121.4.0.0/15 1210 | 121.8.0.0/13 1211 | 121.16.0.0/13 1212 | 121.24.0.0/14 1213 | 121.28.0.0/15 1214 | 121.30.0.0/16 1215 | 121.31.0.0/16 1216 | 121.32.0.0/14 1217 | 121.36.0.0/16 1218 | 121.37.0.0/16 1219 | 121.38.0.0/15 1220 | 121.40.0.0/14 1221 | 121.46.0.0/18 1222 | 121.46.128.0/17 1223 | 121.47.0.0/16 1224 | 121.48.0.0/15 1225 | 121.50.8.0/21 1226 | 121.51.0.0/16 1227 | 121.52.160.0/19 1228 | 121.52.208.0/20 1229 | 121.52.224.0/19 1230 | 121.54.176.0/21 1231 | 121.55.0.0/18 1232 | 121.56.0.0/15 1233 | 121.58.0.0/17 1234 | 121.58.136.0/21 1235 | 121.58.144.0/20 1236 | 121.58.160.0/21 1237 | 121.59.0.0/16 1238 | 121.60.0.0/14 1239 | 121.68.0.0/14 1240 | 121.76.0.0/15 1241 | 121.79.128.0/18 1242 | 121.89.0.0/16 1243 | 121.100.128.0/17 1244 | 121.101.0.0/18 1245 | 121.101.208.0/20 1246 | 121.192.0.0/16 1247 | 121.193.0.0/16 1248 | 121.194.0.0/15 1249 | 121.196.0.0/14 1250 | 121.200.192.0/21 1251 | 121.201.0.0/16 1252 | 121.204.0.0/14 1253 | 121.224.0.0/12 1254 | 121.248.0.0/14 1255 | 121.255.0.0/16 1256 | 122.0.64.0/18 1257 | 122.0.128.0/17 1258 | 122.4.0.0/14 1259 | 122.8.0.0/16 1260 | 122.9.0.0/16 1261 | 122.10.0.0/17 1262 | 122.10.128.0/17 1263 | 122.11.0.0/17 1264 | 122.12.0.0/16 1265 | 122.13.0.0/16 1266 | 122.14.0.0/16 1267 | 122.48.0.0/16 1268 | 122.49.0.0/18 1269 | 122.51.0.0/16 1270 | 122.64.0.0/11 1271 | 122.96.0.0/15 1272 | 122.102.0.0/20 1273 | 122.102.64.0/20 1274 | 122.102.80.0/20 1275 | 122.112.0.0/14 1276 | 122.119.0.0/16 1277 | 122.128.120.0/21 1278 | 122.136.0.0/13 1279 | 122.144.128.0/17 1280 | 122.152.192.0/18 1281 | 122.156.0.0/14 1282 | 122.188.0.0/14 1283 | 122.192.0.0/14 1284 | 122.198.0.0/16 1285 | 122.200.64.0/18 1286 | 122.201.48.0/20 1287 | 122.204.0.0/14 1288 | 122.224.0.0/12 1289 | 122.240.0.0/13 1290 | 122.248.24.0/21 1291 | 122.248.48.0/20 1292 | 122.255.64.0/21 1293 | 123.0.128.0/18 1294 | 123.4.0.0/14 1295 | 123.8.0.0/13 1296 | 123.49.128.0/17 1297 | 123.50.160.0/19 1298 | 123.52.0.0/14 1299 | 123.56.0.0/15 1300 | 123.58.0.0/16 1301 | 123.59.0.0/16 1302 | 123.60.0.0/15 1303 | 123.62.0.0/16 1304 | 123.64.0.0/11 1305 | 123.96.0.0/15 1306 | 123.98.0.0/17 1307 | 123.99.128.0/17 1308 | 123.100.0.0/19 1309 | 123.101.0.0/16 1310 | 123.103.0.0/17 1311 | 123.108.128.0/20 1312 | 123.108.208.0/20 1313 | 123.112.0.0/12 1314 | 123.128.0.0/13 1315 | 123.136.80.0/20 1316 | 123.137.0.0/16 1317 | 123.138.0.0/15 1318 | 123.144.0.0/14 1319 | 123.148.0.0/16 1320 | 123.149.0.0/16 1321 | 123.150.0.0/15 1322 | 123.152.0.0/13 1323 | 123.160.0.0/14 1324 | 123.164.0.0/14 1325 | 123.168.0.0/14 1326 | 123.172.0.0/15 1327 | 123.174.0.0/15 1328 | 123.176.60.0/22 1329 | 123.176.80.0/20 1330 | 123.177.0.0/16 1331 | 123.178.0.0/15 1332 | 123.180.0.0/14 1333 | 123.184.0.0/14 1334 | 123.188.0.0/14 1335 | 123.196.0.0/15 1336 | 123.199.128.0/17 1337 | 123.206.0.0/15 1338 | 123.232.0.0/14 1339 | 123.242.0.0/17 1340 | 123.244.0.0/14 1341 | 123.249.0.0/16 1342 | 123.253.0.0/16 1343 | 124.6.64.0/18 1344 | 124.14.0.0/15 1345 | 124.16.0.0/15 1346 | 124.20.0.0/16 1347 | 124.21.0.0/20 1348 | 124.21.16.0/20 1349 | 124.21.32.0/19 1350 | 124.21.64.0/18 1351 | 124.21.128.0/17 1352 | 124.22.0.0/15 1353 | 124.28.192.0/18 1354 | 124.29.0.0/17 1355 | 124.31.0.0/16 1356 | 124.40.112.0/20 1357 | 124.40.128.0/18 1358 | 124.40.192.0/19 1359 | 124.42.0.0/17 1360 | 124.42.128.0/17 1361 | 124.47.0.0/18 1362 | 124.64.0.0/15 1363 | 124.66.0.0/17 1364 | 124.67.0.0/16 1365 | 124.68.0.0/14 1366 | 124.72.0.0/16 1367 | 124.73.0.0/16 1368 | 124.74.0.0/15 1369 | 124.76.0.0/14 1370 | 124.88.0.0/16 1371 | 124.89.0.0/17 1372 | 124.89.128.0/17 1373 | 124.90.0.0/15 1374 | 124.92.0.0/14 1375 | 124.108.8.0/21 1376 | 124.108.40.0/21 1377 | 124.109.96.0/21 1378 | 124.112.0.0/15 1379 | 124.114.0.0/15 1380 | 124.116.0.0/16 1381 | 124.117.0.0/16 1382 | 124.118.0.0/15 1383 | 124.126.0.0/15 1384 | 124.128.0.0/13 1385 | 124.147.128.0/17 1386 | 124.151.0.0/16 1387 | 124.152.0.0/16 1388 | 124.156.0.0/16 1389 | 124.160.0.0/16 1390 | 124.161.0.0/16 1391 | 124.162.0.0/16 1392 | 124.163.0.0/16 1393 | 124.164.0.0/14 1394 | 124.172.0.0/15 1395 | 124.174.0.0/15 1396 | 124.192.0.0/15 1397 | 124.196.0.0/16 1398 | 124.200.0.0/13 1399 | 124.220.0.0/14 1400 | 124.224.0.0/16 1401 | 124.225.0.0/16 1402 | 124.226.0.0/15 1403 | 124.228.0.0/14 1404 | 124.232.0.0/15 1405 | 124.234.0.0/15 1406 | 124.236.0.0/14 1407 | 124.240.0.0/17 1408 | 124.240.128.0/18 1409 | 124.242.0.0/16 1410 | 124.243.192.0/18 1411 | 124.248.0.0/17 1412 | 124.249.0.0/16 1413 | 124.250.0.0/15 1414 | 124.254.0.0/18 1415 | 125.31.192.0/18 1416 | 125.32.0.0/16 1417 | 125.33.0.0/16 1418 | 125.34.0.0/16 1419 | 125.35.0.0/17 1420 | 125.35.128.0/17 1421 | 125.36.0.0/14 1422 | 125.40.0.0/13 1423 | 125.58.128.0/17 1424 | 125.61.128.0/17 1425 | 125.62.0.0/18 1426 | 125.64.0.0/13 1427 | 125.72.0.0/16 1428 | 125.73.0.0/16 1429 | 125.74.0.0/15 1430 | 125.76.0.0/17 1431 | 125.76.128.0/17 1432 | 125.77.0.0/16 1433 | 125.78.0.0/15 1434 | 125.80.0.0/13 1435 | 125.88.0.0/13 1436 | 125.96.0.0/15 1437 | 125.98.0.0/16 1438 | 125.104.0.0/13 1439 | 125.112.0.0/12 1440 | 125.169.0.0/16 1441 | 125.171.0.0/16 1442 | 125.208.0.0/18 1443 | 125.210.0.0/16 1444 | 125.211.0.0/16 1445 | 125.213.0.0/17 1446 | 125.214.96.0/19 1447 | 125.215.0.0/18 1448 | 125.216.0.0/15 1449 | 125.218.0.0/16 1450 | 125.219.0.0/16 1451 | 125.220.0.0/15 1452 | 125.222.0.0/15 1453 | 125.254.128.0/18 1454 | 125.254.192.0/18 1455 | 134.196.0.0/16 1456 | 139.9.0.0/16 1457 | 139.129.0.0/16 1458 | 139.148.0.0/16 1459 | 139.155.0.0/16 1460 | 139.159.0.0/16 1461 | 139.170.0.0/16 1462 | 139.176.0.0/16 1463 | 139.183.0.0/16 1464 | 139.186.0.0/16 1465 | 139.189.0.0/16 1466 | 139.196.0.0/14 1467 | 139.200.0.0/13 1468 | 139.208.0.0/13 1469 | 139.220.0.0/15 1470 | 139.224.0.0/16 1471 | 139.226.0.0/15 1472 | 140.75.0.0/16 1473 | 140.143.0.0/16 1474 | 140.205.0.0/16 1475 | 140.206.0.0/15 1476 | 140.210.0.0/16 1477 | 140.224.0.0/16 1478 | 140.237.0.0/16 1479 | 140.240.0.0/16 1480 | 140.243.0.0/16 1481 | 140.246.0.0/16 1482 | 140.249.0.0/16 1483 | 140.250.0.0/16 1484 | 140.255.0.0/16 1485 | 144.0.0.0/16 1486 | 144.7.0.0/16 1487 | 144.12.0.0/16 1488 | 144.52.0.0/16 1489 | 144.123.0.0/16 1490 | 144.255.0.0/16 1491 | 150.0.0.0/16 1492 | 150.115.0.0/16 1493 | 150.121.0.0/16 1494 | 150.122.0.0/16 1495 | 150.138.0.0/15 1496 | 150.223.0.0/16 1497 | 150.255.0.0/16 1498 | 153.0.0.0/16 1499 | 153.3.0.0/16 1500 | 153.34.0.0/15 1501 | 153.36.0.0/15 1502 | 153.99.0.0/16 1503 | 153.101.0.0/16 1504 | 153.118.0.0/15 1505 | 157.0.0.0/16 1506 | 157.18.0.0/16 1507 | 157.61.0.0/16 1508 | 157.122.0.0/16 1509 | 157.148.0.0/16 1510 | 157.156.0.0/16 1511 | 157.255.0.0/16 1512 | 159.226.0.0/16 1513 | 161.207.0.0/16 1514 | 162.105.0.0/16 1515 | 163.0.0.0/16 1516 | 163.125.0.0/16 1517 | 163.142.0.0/16 1518 | 163.177.0.0/16 1519 | 163.179.0.0/16 1520 | 163.204.0.0/16 1521 | 166.111.0.0/16 1522 | 167.139.0.0/16 1523 | 168.160.0.0/16 1524 | 171.8.0.0/13 1525 | 171.34.0.0/15 1526 | 171.36.0.0/14 1527 | 171.40.0.0/13 1528 | 171.80.0.0/14 1529 | 171.84.0.0/14 1530 | 171.88.0.0/13 1531 | 171.104.0.0/13 1532 | 171.112.0.0/14 1533 | 171.116.0.0/14 1534 | 171.120.0.0/13 1535 | 171.208.0.0/12 1536 | 175.0.0.0/12 1537 | 175.16.0.0/13 1538 | 175.24.0.0/14 1539 | 175.30.0.0/15 1540 | 175.42.0.0/15 1541 | 175.44.0.0/16 1542 | 175.46.0.0/15 1543 | 175.48.0.0/12 1544 | 175.64.0.0/11 1545 | 175.102.0.0/16 1546 | 175.106.128.0/17 1547 | 175.146.0.0/15 1548 | 175.148.0.0/14 1549 | 175.152.0.0/14 1550 | 175.160.0.0/12 1551 | 175.178.0.0/16 1552 | 175.184.128.0/18 1553 | 175.185.0.0/16 1554 | 175.186.0.0/15 1555 | 175.188.0.0/14 1556 | 180.76.0.0/16 1557 | 180.77.0.0/16 1558 | 180.78.0.0/15 1559 | 180.84.0.0/15 1560 | 180.86.0.0/16 1561 | 180.88.0.0/14 1562 | 180.94.56.0/21 1563 | 180.94.96.0/20 1564 | 180.95.128.0/17 1565 | 180.96.0.0/11 1566 | 180.129.128.0/17 1567 | 180.130.0.0/16 1568 | 180.136.0.0/13 1569 | 180.148.16.0/21 1570 | 180.148.152.0/21 1571 | 180.148.216.0/21 1572 | 180.148.224.0/19 1573 | 180.149.128.0/19 1574 | 180.150.160.0/19 1575 | 180.152.0.0/13 1576 | 180.160.0.0/12 1577 | 180.178.192.0/18 1578 | 180.184.0.0/14 1579 | 180.188.0.0/17 1580 | 180.189.148.0/22 1581 | 180.200.252.0/22 1582 | 180.201.0.0/16 1583 | 180.202.0.0/15 1584 | 180.208.0.0/15 1585 | 180.210.224.0/19 1586 | 180.212.0.0/15 1587 | 180.222.224.0/19 1588 | 180.223.0.0/16 1589 | 180.233.0.0/18 1590 | 180.233.64.0/19 1591 | 180.235.64.0/19 1592 | 182.16.192.0/19 1593 | 182.18.0.0/17 1594 | 182.23.184.0/21 1595 | 182.23.200.0/21 1596 | 182.32.0.0/12 1597 | 182.48.96.0/19 1598 | 182.49.0.0/16 1599 | 182.50.0.0/20 1600 | 182.50.112.0/20 1601 | 182.51.0.0/16 1602 | 182.54.0.0/17 1603 | 182.61.0.0/16 1604 | 182.80.0.0/14 1605 | 182.84.0.0/14 1606 | 182.88.0.0/14 1607 | 182.92.0.0/16 1608 | 182.96.0.0/12 1609 | 182.112.0.0/12 1610 | 182.128.0.0/12 1611 | 182.144.0.0/13 1612 | 182.157.0.0/16 1613 | 182.160.64.0/19 1614 | 182.174.0.0/15 1615 | 182.200.0.0/13 1616 | 182.236.128.0/17 1617 | 182.238.0.0/16 1618 | 182.239.0.0/19 1619 | 182.240.0.0/13 1620 | 182.254.0.0/16 1621 | 183.0.0.0/10 1622 | 183.64.0.0/13 1623 | 183.78.180.0/22 1624 | 183.81.180.0/22 1625 | 183.84.0.0/15 1626 | 183.91.128.0/22 1627 | 183.91.136.0/21 1628 | 183.91.144.0/20 1629 | 183.92.0.0/14 1630 | 183.128.0.0/11 1631 | 183.160.0.0/13 1632 | 183.168.0.0/15 1633 | 183.170.0.0/16 1634 | 183.172.0.0/14 1635 | 183.182.0.0/19 1636 | 183.184.0.0/13 1637 | 183.192.0.0/10 1638 | 192.124.154.0/24 1639 | 192.188.170.0/24 1640 | 202.0.100.0/23 1641 | 202.0.122.0/23 1642 | 202.0.176.0/22 1643 | 202.3.128.0/23 1644 | 202.4.128.0/19 1645 | 202.4.252.0/22 1646 | 202.6.6.0/23 1647 | 202.6.66.0/23 1648 | 202.6.72.0/23 1649 | 202.6.87.0/24 1650 | 202.6.88.0/23 1651 | 202.6.92.0/23 1652 | 202.6.103.0/24 1653 | 202.6.108.0/24 1654 | 202.6.110.0/23 1655 | 202.6.114.0/24 1656 | 202.6.176.0/20 1657 | 202.8.0.0/24 1658 | 202.8.2.0/23 1659 | 202.8.4.0/23 1660 | 202.8.12.0/24 1661 | 202.8.24.0/24 1662 | 202.8.77.0/24 1663 | 202.8.128.0/19 1664 | 202.8.192.0/20 1665 | 202.9.32.0/24 1666 | 202.9.34.0/23 1667 | 202.9.48.0/23 1668 | 202.9.51.0/24 1669 | 202.9.52.0/23 1670 | 202.9.54.0/24 1671 | 202.9.57.0/24 1672 | 202.9.58.0/23 1673 | 202.10.64.0/20 1674 | 202.12.1.0/24 1675 | 202.12.2.0/24 1676 | 202.12.17.0/24 1677 | 202.12.18.0/24 1678 | 202.12.19.0/24 1679 | 202.12.72.0/24 1680 | 202.12.84.0/23 1681 | 202.12.96.0/24 1682 | 202.12.98.0/23 1683 | 202.12.106.0/24 1684 | 202.12.111.0/24 1685 | 202.12.116.0/24 1686 | 202.14.64.0/23 1687 | 202.14.69.0/24 1688 | 202.14.73.0/24 1689 | 202.14.74.0/23 1690 | 202.14.76.0/24 1691 | 202.14.78.0/23 1692 | 202.14.88.0/24 1693 | 202.14.97.0/24 1694 | 202.14.104.0/23 1695 | 202.14.108.0/23 1696 | 202.14.111.0/24 1697 | 202.14.114.0/23 1698 | 202.14.118.0/23 1699 | 202.14.124.0/23 1700 | 202.14.127.0/24 1701 | 202.14.129.0/24 1702 | 202.14.135.0/24 1703 | 202.14.136.0/24 1704 | 202.14.149.0/24 1705 | 202.14.151.0/24 1706 | 202.14.157.0/24 1707 | 202.14.158.0/23 1708 | 202.14.169.0/24 1709 | 202.14.170.0/23 1710 | 202.14.176.0/24 1711 | 202.14.184.0/23 1712 | 202.14.208.0/23 1713 | 202.14.213.0/24 1714 | 202.14.219.0/24 1715 | 202.14.220.0/24 1716 | 202.14.222.0/23 1717 | 202.14.225.0/24 1718 | 202.14.226.0/23 1719 | 202.14.231.0/24 1720 | 202.14.235.0/24 1721 | 202.14.236.0/23 1722 | 202.14.238.0/24 1723 | 202.14.239.0/24 1724 | 202.14.246.0/24 1725 | 202.14.251.0/24 1726 | 202.20.66.0/24 1727 | 202.20.79.0/24 1728 | 202.20.87.0/24 1729 | 202.20.88.0/23 1730 | 202.20.90.0/24 1731 | 202.20.94.0/23 1732 | 202.20.114.0/24 1733 | 202.20.117.0/24 1734 | 202.20.120.0/24 1735 | 202.20.125.0/24 1736 | 202.20.127.0/24 1737 | 202.21.131.0/24 1738 | 202.21.132.0/24 1739 | 202.21.141.0/24 1740 | 202.21.142.0/24 1741 | 202.21.147.0/24 1742 | 202.21.148.0/24 1743 | 202.21.150.0/23 1744 | 202.21.152.0/23 1745 | 202.21.154.0/24 1746 | 202.21.156.0/24 1747 | 202.22.248.0/22 1748 | 202.22.252.0/22 1749 | 202.27.136.0/23 1750 | 202.38.0.0/23 1751 | 202.38.2.0/23 1752 | 202.38.8.0/21 1753 | 202.38.48.0/20 1754 | 202.38.64.0/19 1755 | 202.38.96.0/19 1756 | 202.38.128.0/23 1757 | 202.38.130.0/23 1758 | 202.38.132.0/23 1759 | 202.38.134.0/24 1760 | 202.38.135.0/24 1761 | 202.38.136.0/23 1762 | 202.38.138.0/24 1763 | 202.38.140.0/23 1764 | 202.38.142.0/23 1765 | 202.38.146.0/23 1766 | 202.38.149.0/24 1767 | 202.38.150.0/23 1768 | 202.38.152.0/23 1769 | 202.38.154.0/23 1770 | 202.38.156.0/24 1771 | 202.38.158.0/23 1772 | 202.38.160.0/23 1773 | 202.38.164.0/22 1774 | 202.38.168.0/23 1775 | 202.38.170.0/24 1776 | 202.38.171.0/24 1777 | 202.38.176.0/23 1778 | 202.38.184.0/21 1779 | 202.38.192.0/18 1780 | 202.40.4.0/23 1781 | 202.40.7.0/24 1782 | 202.40.15.0/24 1783 | 202.40.135.0/24 1784 | 202.40.136.0/24 1785 | 202.40.140.0/24 1786 | 202.40.143.0/24 1787 | 202.40.144.0/23 1788 | 202.40.150.0/24 1789 | 202.40.155.0/24 1790 | 202.40.156.0/24 1791 | 202.40.158.0/23 1792 | 202.40.162.0/24 1793 | 202.41.8.0/23 1794 | 202.41.11.0/24 1795 | 202.41.12.0/23 1796 | 202.41.128.0/24 1797 | 202.41.130.0/23 1798 | 202.41.152.0/21 1799 | 202.41.192.0/24 1800 | 202.41.240.0/20 1801 | 202.43.76.0/22 1802 | 202.43.144.0/20 1803 | 202.44.16.0/20 1804 | 202.44.67.0/24 1805 | 202.44.74.0/24 1806 | 202.44.129.0/24 1807 | 202.44.132.0/23 1808 | 202.44.146.0/23 1809 | 202.45.0.0/23 1810 | 202.45.2.0/24 1811 | 202.45.15.0/24 1812 | 202.45.16.0/20 1813 | 202.46.16.0/23 1814 | 202.46.18.0/24 1815 | 202.46.20.0/23 1816 | 202.46.32.0/19 1817 | 202.46.128.0/24 1818 | 202.46.224.0/20 1819 | 202.47.82.0/23 1820 | 202.47.126.0/24 1821 | 202.47.128.0/24 1822 | 202.47.130.0/23 1823 | 202.57.240.0/20 1824 | 202.58.0.0/24 1825 | 202.59.0.0/24 1826 | 202.59.212.0/22 1827 | 202.59.232.0/23 1828 | 202.59.236.0/24 1829 | 202.60.48.0/21 1830 | 202.60.96.0/21 1831 | 202.60.112.0/20 1832 | 202.60.132.0/22 1833 | 202.60.136.0/21 1834 | 202.60.144.0/20 1835 | 202.62.112.0/22 1836 | 202.62.248.0/22 1837 | 202.62.252.0/24 1838 | 202.62.255.0/24 1839 | 202.63.81.0/24 1840 | 202.63.82.0/23 1841 | 202.63.84.0/22 1842 | 202.63.88.0/21 1843 | 202.63.160.0/19 1844 | 202.63.248.0/22 1845 | 202.65.0.0/21 1846 | 202.65.8.0/23 1847 | 202.67.0.0/22 1848 | 202.69.4.0/22 1849 | 202.69.16.0/20 1850 | 202.70.0.0/19 1851 | 202.70.96.0/20 1852 | 202.70.192.0/20 1853 | 202.72.40.0/21 1854 | 202.72.80.0/20 1855 | 202.73.128.0/22 1856 | 202.74.8.0/21 1857 | 202.74.80.0/20 1858 | 202.74.254.0/23 1859 | 202.75.208.0/20 1860 | 202.75.252.0/22 1861 | 202.76.252.0/22 1862 | 202.77.80.0/21 1863 | 202.77.92.0/22 1864 | 202.78.8.0/21 1865 | 202.79.224.0/21 1866 | 202.79.248.0/22 1867 | 202.80.192.0/21 1868 | 202.80.200.0/21 1869 | 202.81.0.0/22 1870 | 202.83.252.0/22 1871 | 202.84.4.0/22 1872 | 202.84.8.0/21 1873 | 202.84.24.0/21 1874 | 202.85.208.0/20 1875 | 202.86.249.0/24 1876 | 202.86.252.0/22 1877 | 202.87.80.0/20 1878 | 202.89.8.0/21 1879 | 202.90.0.0/22 1880 | 202.90.112.0/20 1881 | 202.90.196.0/24 1882 | 202.90.224.0/20 1883 | 202.91.0.0/22 1884 | 202.91.96.0/20 1885 | 202.91.128.0/22 1886 | 202.91.176.0/20 1887 | 202.91.224.0/19 1888 | 202.92.0.0/22 1889 | 202.92.8.0/21 1890 | 202.92.48.0/20 1891 | 202.92.252.0/22 1892 | 202.93.0.0/22 1893 | 202.93.252.0/22 1894 | 202.94.92.0/22 1895 | 202.95.0.0/22 1896 | 202.95.4.0/22 1897 | 202.95.8.0/21 1898 | 202.95.16.0/20 1899 | 202.95.240.0/21 1900 | 202.95.252.0/22 1901 | 202.96.0.0/18 1902 | 202.96.64.0/21 1903 | 202.96.72.0/21 1904 | 202.96.80.0/20 1905 | 202.96.96.0/21 1906 | 202.96.104.0/21 1907 | 202.96.112.0/20 1908 | 202.96.128.0/21 1909 | 202.96.136.0/21 1910 | 202.96.144.0/20 1911 | 202.96.160.0/21 1912 | 202.96.168.0/21 1913 | 202.96.176.0/20 1914 | 202.96.192.0/21 1915 | 202.96.200.0/21 1916 | 202.96.208.0/20 1917 | 202.96.224.0/21 1918 | 202.96.232.0/21 1919 | 202.96.240.0/20 1920 | 202.97.0.0/21 1921 | 202.97.8.0/21 1922 | 202.97.16.0/20 1923 | 202.97.32.0/19 1924 | 202.97.64.0/19 1925 | 202.97.96.0/20 1926 | 202.97.112.0/20 1927 | 202.97.128.0/18 1928 | 202.97.192.0/19 1929 | 202.97.224.0/21 1930 | 202.97.232.0/21 1931 | 202.97.240.0/20 1932 | 202.98.0.0/21 1933 | 202.98.8.0/21 1934 | 202.98.16.0/20 1935 | 202.98.32.0/21 1936 | 202.98.40.0/21 1937 | 202.98.48.0/20 1938 | 202.98.64.0/19 1939 | 202.98.96.0/21 1940 | 202.98.104.0/21 1941 | 202.98.112.0/20 1942 | 202.98.128.0/19 1943 | 202.98.160.0/21 1944 | 202.98.168.0/21 1945 | 202.98.176.0/20 1946 | 202.98.192.0/21 1947 | 202.98.200.0/21 1948 | 202.98.208.0/20 1949 | 202.98.224.0/21 1950 | 202.98.232.0/21 1951 | 202.98.240.0/20 1952 | 202.99.0.0/18 1953 | 202.99.64.0/19 1954 | 202.99.96.0/21 1955 | 202.99.104.0/21 1956 | 202.99.112.0/20 1957 | 202.99.128.0/19 1958 | 202.99.160.0/21 1959 | 202.99.168.0/21 1960 | 202.99.176.0/20 1961 | 202.99.192.0/21 1962 | 202.99.200.0/21 1963 | 202.99.208.0/20 1964 | 202.99.224.0/21 1965 | 202.99.232.0/21 1966 | 202.99.240.0/20 1967 | 202.100.0.0/21 1968 | 202.100.8.0/21 1969 | 202.100.16.0/20 1970 | 202.100.32.0/19 1971 | 202.100.64.0/21 1972 | 202.100.72.0/21 1973 | 202.100.80.0/20 1974 | 202.100.96.0/21 1975 | 202.100.104.0/21 1976 | 202.100.112.0/20 1977 | 202.100.128.0/21 1978 | 202.100.136.0/21 1979 | 202.100.144.0/20 1980 | 202.100.160.0/21 1981 | 202.100.168.0/21 1982 | 202.100.176.0/20 1983 | 202.100.192.0/21 1984 | 202.100.200.0/21 1985 | 202.100.208.0/20 1986 | 202.100.224.0/19 1987 | 202.101.0.0/18 1988 | 202.101.64.0/19 1989 | 202.101.96.0/19 1990 | 202.101.128.0/18 1991 | 202.101.192.0/19 1992 | 202.101.224.0/21 1993 | 202.101.232.0/21 1994 | 202.101.240.0/20 1995 | 202.102.0.0/19 1996 | 202.102.32.0/19 1997 | 202.102.64.0/18 1998 | 202.102.128.0/21 1999 | 202.102.136.0/21 2000 | 202.102.144.0/20 2001 | 202.102.160.0/19 2002 | 202.102.192.0/21 2003 | 202.102.200.0/21 2004 | 202.102.208.0/20 2005 | 202.102.224.0/21 2006 | 202.102.232.0/21 2007 | 202.102.240.0/20 2008 | 202.103.0.0/21 2009 | 202.103.8.0/21 2010 | 202.103.16.0/20 2011 | 202.103.32.0/19 2012 | 202.103.64.0/19 2013 | 202.103.96.0/21 2014 | 202.103.104.0/21 2015 | 202.103.112.0/20 2016 | 202.103.128.0/18 2017 | 202.103.192.0/19 2018 | 202.103.224.0/21 2019 | 202.103.232.0/21 2020 | 202.103.240.0/20 2021 | 202.104.0.0/15 2022 | 202.106.0.0/16 2023 | 202.107.0.0/17 2024 | 202.107.128.0/17 2025 | 202.108.0.0/16 2026 | 202.109.0.0/16 2027 | 202.110.0.0/18 2028 | 202.110.64.0/18 2029 | 202.110.128.0/18 2030 | 202.110.192.0/18 2031 | 202.111.0.0/17 2032 | 202.111.128.0/19 2033 | 202.111.160.0/19 2034 | 202.111.192.0/18 2035 | 202.112.0.0/16 2036 | 202.113.0.0/20 2037 | 202.113.16.0/20 2038 | 202.113.32.0/19 2039 | 202.113.64.0/18 2040 | 202.113.128.0/18 2041 | 202.113.192.0/19 2042 | 202.113.224.0/20 2043 | 202.113.240.0/20 2044 | 202.114.0.0/19 2045 | 202.114.32.0/19 2046 | 202.114.64.0/18 2047 | 202.114.128.0/17 2048 | 202.115.0.0/19 2049 | 202.115.32.0/19 2050 | 202.115.64.0/18 2051 | 202.115.128.0/17 2052 | 202.116.0.0/19 2053 | 202.116.32.0/20 2054 | 202.116.48.0/20 2055 | 202.116.64.0/19 2056 | 202.116.96.0/19 2057 | 202.116.128.0/17 2058 | 202.117.0.0/18 2059 | 202.117.64.0/18 2060 | 202.117.128.0/17 2061 | 202.118.0.0/19 2062 | 202.118.32.0/19 2063 | 202.118.64.0/18 2064 | 202.118.128.0/17 2065 | 202.119.0.0/19 2066 | 202.119.32.0/19 2067 | 202.119.64.0/20 2068 | 202.119.80.0/20 2069 | 202.119.96.0/19 2070 | 202.119.128.0/17 2071 | 202.120.0.0/18 2072 | 202.120.64.0/18 2073 | 202.120.128.0/17 2074 | 202.121.0.0/16 2075 | 202.122.0.0/21 2076 | 202.122.32.0/21 2077 | 202.122.64.0/19 2078 | 202.122.112.0/21 2079 | 202.122.120.0/21 2080 | 202.122.128.0/24 2081 | 202.122.132.0/24 2082 | 202.123.96.0/20 2083 | 202.124.16.0/21 2084 | 202.124.24.0/22 2085 | 202.125.112.0/20 2086 | 202.125.176.0/20 2087 | 202.127.0.0/23 2088 | 202.127.2.0/24 2089 | 202.127.3.0/24 2090 | 202.127.4.0/24 2091 | 202.127.5.0/24 2092 | 202.127.6.0/23 2093 | 202.127.12.0/22 2094 | 202.127.16.0/20 2095 | 202.127.40.0/21 2096 | 202.127.48.0/20 2097 | 202.127.112.0/20 2098 | 202.127.128.0/20 2099 | 202.127.144.0/20 2100 | 202.127.160.0/21 2101 | 202.127.192.0/23 2102 | 202.127.194.0/23 2103 | 202.127.196.0/22 2104 | 202.127.200.0/21 2105 | 202.127.208.0/24 2106 | 202.127.209.0/24 2107 | 202.127.212.0/22 2108 | 202.127.216.0/21 2109 | 202.127.224.0/19 2110 | 202.130.0.0/19 2111 | 202.130.224.0/19 2112 | 202.131.16.0/21 2113 | 202.131.48.0/20 2114 | 202.131.208.0/20 2115 | 202.133.32.0/20 2116 | 202.134.58.0/24 2117 | 202.134.128.0/20 2118 | 202.136.48.0/20 2119 | 202.136.208.0/20 2120 | 202.136.224.0/20 2121 | 202.137.231.0/24 2122 | 202.141.160.0/19 2123 | 202.142.16.0/20 2124 | 202.143.4.0/22 2125 | 202.143.16.0/20 2126 | 202.143.32.0/20 2127 | 202.143.56.0/21 2128 | 202.146.160.0/20 2129 | 202.146.188.0/22 2130 | 202.146.196.0/22 2131 | 202.146.200.0/21 2132 | 202.147.144.0/20 2133 | 202.148.32.0/20 2134 | 202.148.64.0/19 2135 | 202.148.96.0/19 2136 | 202.149.32.0/19 2137 | 202.149.160.0/19 2138 | 202.149.224.0/19 2139 | 202.150.16.0/20 2140 | 202.150.32.0/20 2141 | 202.150.56.0/22 2142 | 202.150.192.0/20 2143 | 202.150.224.0/19 2144 | 202.151.0.0/22 2145 | 202.151.128.0/19 2146 | 202.152.176.0/20 2147 | 202.153.0.0/22 2148 | 202.153.48.0/20 2149 | 202.157.192.0/19 2150 | 202.158.160.0/19 2151 | 202.160.176.0/20 2152 | 202.162.67.0/24 2153 | 202.162.75.0/24 2154 | 202.164.0.0/20 2155 | 202.164.25.0/24 2156 | 202.164.96.0/19 2157 | 202.165.96.0/20 2158 | 202.165.176.0/20 2159 | 202.165.208.0/20 2160 | 202.165.239.0/24 2161 | 202.165.240.0/23 2162 | 202.165.243.0/24 2163 | 202.165.245.0/24 2164 | 202.165.251.0/24 2165 | 202.165.252.0/22 2166 | 202.166.224.0/19 2167 | 202.168.160.0/20 2168 | 202.168.176.0/20 2169 | 202.170.128.0/19 2170 | 202.170.216.0/21 2171 | 202.170.224.0/19 2172 | 202.171.216.0/21 2173 | 202.171.235.0/24 2174 | 202.172.0.0/22 2175 | 202.173.0.0/22 2176 | 202.173.8.0/21 2177 | 202.173.224.0/19 2178 | 202.174.64.0/20 2179 | 202.176.224.0/19 2180 | 202.179.240.0/20 2181 | 202.180.128.0/19 2182 | 202.180.208.0/21 2183 | 202.181.112.0/20 2184 | 202.182.32.0/20 2185 | 202.182.192.0/19 2186 | 202.189.0.0/18 2187 | 202.189.80.0/20 2188 | 202.189.184.0/21 2189 | 202.191.0.0/24 2190 | 202.191.68.0/22 2191 | 202.191.72.0/21 2192 | 202.191.80.0/20 2193 | 202.192.0.0/13 2194 | 202.200.0.0/14 2195 | 202.204.0.0/14 2196 | 203.0.4.0/22 2197 | 203.0.10.0/23 2198 | 203.0.18.0/24 2199 | 203.0.24.0/24 2200 | 203.0.42.0/23 2201 | 203.0.45.0/24 2202 | 203.0.46.0/23 2203 | 203.0.81.0/24 2204 | 203.0.82.0/23 2205 | 203.0.90.0/23 2206 | 203.0.96.0/23 2207 | 203.0.104.0/21 2208 | 203.0.114.0/23 2209 | 203.0.122.0/24 2210 | 203.0.128.0/24 2211 | 203.0.130.0/23 2212 | 203.0.132.0/22 2213 | 203.0.137.0/24 2214 | 203.0.142.0/24 2215 | 203.0.144.0/24 2216 | 203.0.146.0/24 2217 | 203.0.148.0/24 2218 | 203.0.150.0/23 2219 | 203.0.152.0/24 2220 | 203.0.177.0/24 2221 | 203.0.224.0/24 2222 | 203.1.4.0/22 2223 | 203.1.18.0/24 2224 | 203.1.26.0/23 2225 | 203.1.65.0/24 2226 | 203.1.66.0/23 2227 | 203.1.70.0/23 2228 | 203.1.76.0/23 2229 | 203.1.90.0/24 2230 | 203.1.97.0/24 2231 | 203.1.98.0/23 2232 | 203.1.100.0/22 2233 | 203.1.108.0/24 2234 | 203.1.253.0/24 2235 | 203.1.254.0/24 2236 | 203.2.64.0/21 2237 | 203.2.73.0/24 2238 | 203.2.112.0/21 2239 | 203.2.126.0/23 2240 | 203.2.140.0/24 2241 | 203.2.150.0/24 2242 | 203.2.152.0/22 2243 | 203.2.156.0/23 2244 | 203.2.160.0/21 2245 | 203.2.180.0/23 2246 | 203.2.196.0/23 2247 | 203.2.209.0/24 2248 | 203.2.214.0/23 2249 | 203.2.226.0/23 2250 | 203.2.229.0/24 2251 | 203.2.236.0/23 2252 | 203.3.68.0/24 2253 | 203.3.72.0/23 2254 | 203.3.75.0/24 2255 | 203.3.80.0/21 2256 | 203.3.96.0/22 2257 | 203.3.105.0/24 2258 | 203.3.112.0/21 2259 | 203.3.120.0/24 2260 | 203.3.123.0/24 2261 | 203.3.135.0/24 2262 | 203.3.139.0/24 2263 | 203.3.143.0/24 2264 | 203.4.132.0/23 2265 | 203.4.134.0/24 2266 | 203.4.151.0/24 2267 | 203.4.152.0/22 2268 | 203.4.174.0/23 2269 | 203.4.180.0/24 2270 | 203.4.186.0/24 2271 | 203.4.205.0/24 2272 | 203.4.208.0/22 2273 | 203.4.227.0/24 2274 | 203.4.230.0/23 2275 | 203.5.4.0/23 2276 | 203.5.7.0/24 2277 | 203.5.8.0/23 2278 | 203.5.11.0/24 2279 | 203.5.21.0/24 2280 | 203.5.22.0/24 2281 | 203.5.44.0/24 2282 | 203.5.46.0/23 2283 | 203.5.52.0/22 2284 | 203.5.56.0/23 2285 | 203.5.60.0/23 2286 | 203.5.114.0/23 2287 | 203.5.118.0/24 2288 | 203.5.120.0/24 2289 | 203.5.172.0/24 2290 | 203.5.180.0/23 2291 | 203.5.182.0/24 2292 | 203.5.185.0/24 2293 | 203.5.186.0/24 2294 | 203.5.188.0/23 2295 | 203.5.190.0/24 2296 | 203.5.195.0/24 2297 | 203.5.214.0/23 2298 | 203.5.218.0/23 2299 | 203.6.131.0/24 2300 | 203.6.136.0/24 2301 | 203.6.138.0/23 2302 | 203.6.142.0/24 2303 | 203.6.150.0/23 2304 | 203.6.157.0/24 2305 | 203.6.159.0/24 2306 | 203.6.224.0/20 2307 | 203.6.248.0/23 2308 | 203.7.129.0/24 2309 | 203.7.138.0/23 2310 | 203.7.147.0/24 2311 | 203.7.150.0/23 2312 | 203.7.158.0/24 2313 | 203.7.192.0/23 2314 | 203.7.200.0/24 2315 | 203.8.0.0/24 2316 | 203.8.8.0/24 2317 | 203.8.23.0/24 2318 | 203.8.24.0/21 2319 | 203.8.70.0/24 2320 | 203.8.82.0/24 2321 | 203.8.86.0/23 2322 | 203.8.91.0/24 2323 | 203.8.110.0/23 2324 | 203.8.115.0/24 2325 | 203.8.166.0/23 2326 | 203.8.169.0/24 2327 | 203.8.173.0/24 2328 | 203.8.184.0/24 2329 | 203.8.186.0/23 2330 | 203.8.190.0/23 2331 | 203.8.192.0/24 2332 | 203.8.197.0/24 2333 | 203.8.198.0/23 2334 | 203.8.203.0/24 2335 | 203.8.209.0/24 2336 | 203.8.210.0/23 2337 | 203.8.212.0/22 2338 | 203.8.217.0/24 2339 | 203.8.220.0/24 2340 | 203.9.32.0/24 2341 | 203.9.36.0/23 2342 | 203.9.57.0/24 2343 | 203.9.63.0/24 2344 | 203.9.65.0/24 2345 | 203.9.70.0/23 2346 | 203.9.72.0/24 2347 | 203.9.75.0/24 2348 | 203.9.76.0/23 2349 | 203.9.96.0/22 2350 | 203.9.100.0/23 2351 | 203.9.108.0/24 2352 | 203.9.158.0/24 2353 | 203.10.34.0/24 2354 | 203.10.56.0/24 2355 | 203.10.74.0/23 2356 | 203.10.84.0/22 2357 | 203.10.88.0/24 2358 | 203.10.95.0/24 2359 | 203.10.125.0/24 2360 | 203.11.70.0/24 2361 | 203.11.76.0/22 2362 | 203.11.82.0/24 2363 | 203.11.84.0/22 2364 | 203.11.100.0/22 2365 | 203.11.109.0/24 2366 | 203.11.117.0/24 2367 | 203.11.122.0/24 2368 | 203.11.126.0/24 2369 | 203.11.136.0/22 2370 | 203.11.141.0/24 2371 | 203.11.142.0/23 2372 | 203.11.180.0/22 2373 | 203.11.208.0/22 2374 | 203.12.16.0/24 2375 | 203.12.19.0/24 2376 | 203.12.24.0/24 2377 | 203.12.57.0/24 2378 | 203.12.65.0/24 2379 | 203.12.66.0/24 2380 | 203.12.70.0/23 2381 | 203.12.87.0/24 2382 | 203.12.88.0/21 2383 | 203.12.100.0/23 2384 | 203.12.103.0/24 2385 | 203.12.114.0/24 2386 | 203.12.118.0/24 2387 | 203.12.130.0/24 2388 | 203.12.137.0/24 2389 | 203.12.196.0/22 2390 | 203.12.200.0/21 2391 | 203.12.211.0/24 2392 | 203.12.219.0/24 2393 | 203.12.226.0/24 2394 | 203.12.240.0/22 2395 | 203.13.18.0/24 2396 | 203.13.24.0/24 2397 | 203.13.44.0/23 2398 | 203.13.80.0/21 2399 | 203.13.88.0/23 2400 | 203.13.92.0/22 2401 | 203.13.173.0/24 2402 | 203.13.224.0/23 2403 | 203.13.227.0/24 2404 | 203.13.233.0/24 2405 | 203.14.24.0/22 2406 | 203.14.33.0/24 2407 | 203.14.56.0/24 2408 | 203.14.61.0/24 2409 | 203.14.62.0/24 2410 | 203.14.104.0/24 2411 | 203.14.114.0/23 2412 | 203.14.118.0/24 2413 | 203.14.162.0/24 2414 | 203.14.184.0/21 2415 | 203.14.192.0/24 2416 | 203.14.194.0/23 2417 | 203.14.214.0/24 2418 | 203.14.231.0/24 2419 | 203.14.246.0/24 2420 | 203.15.0.0/20 2421 | 203.15.20.0/23 2422 | 203.15.22.0/24 2423 | 203.15.87.0/24 2424 | 203.15.88.0/23 2425 | 203.15.105.0/24 2426 | 203.15.112.0/21 2427 | 203.15.130.0/23 2428 | 203.15.149.0/24 2429 | 203.15.151.0/24 2430 | 203.15.156.0/22 2431 | 203.15.174.0/24 2432 | 203.15.227.0/24 2433 | 203.15.232.0/21 2434 | 203.15.240.0/23 2435 | 203.15.246.0/24 2436 | 203.16.10.0/24 2437 | 203.16.12.0/23 2438 | 203.16.16.0/21 2439 | 203.16.27.0/24 2440 | 203.16.38.0/24 2441 | 203.16.49.0/24 2442 | 203.16.50.0/23 2443 | 203.16.58.0/24 2444 | 203.16.133.0/24 2445 | 203.16.161.0/24 2446 | 203.16.162.0/24 2447 | 203.16.186.0/23 2448 | 203.16.228.0/24 2449 | 203.16.238.0/24 2450 | 203.16.240.0/24 2451 | 203.16.245.0/24 2452 | 203.17.2.0/24 2453 | 203.17.18.0/24 2454 | 203.17.28.0/24 2455 | 203.17.39.0/24 2456 | 203.17.56.0/24 2457 | 203.17.74.0/23 2458 | 203.17.88.0/23 2459 | 203.17.136.0/24 2460 | 203.17.164.0/24 2461 | 203.17.187.0/24 2462 | 203.17.190.0/23 2463 | 203.17.231.0/24 2464 | 203.17.233.0/24 2465 | 203.17.248.0/24 2466 | 203.17.255.0/24 2467 | 203.18.2.0/23 2468 | 203.18.4.0/24 2469 | 203.18.7.0/24 2470 | 203.18.31.0/24 2471 | 203.18.37.0/24 2472 | 203.18.48.0/23 2473 | 203.18.50.0/24 2474 | 203.18.52.0/24 2475 | 203.18.72.0/22 2476 | 203.18.80.0/23 2477 | 203.18.87.0/24 2478 | 203.18.100.0/23 2479 | 203.18.105.0/24 2480 | 203.18.107.0/24 2481 | 203.18.110.0/24 2482 | 203.18.129.0/24 2483 | 203.18.131.0/24 2484 | 203.18.132.0/23 2485 | 203.18.144.0/24 2486 | 203.18.153.0/24 2487 | 203.18.199.0/24 2488 | 203.18.208.0/24 2489 | 203.18.211.0/24 2490 | 203.18.215.0/24 2491 | 203.19.18.0/24 2492 | 203.19.24.0/24 2493 | 203.19.30.0/24 2494 | 203.19.32.0/21 2495 | 203.19.41.0/24 2496 | 203.19.44.0/23 2497 | 203.19.46.0/24 2498 | 203.19.58.0/24 2499 | 203.19.60.0/23 2500 | 203.19.64.0/24 2501 | 203.19.68.0/24 2502 | 203.19.72.0/24 2503 | 203.19.101.0/24 2504 | 203.19.111.0/24 2505 | 203.19.131.0/24 2506 | 203.19.133.0/24 2507 | 203.19.144.0/24 2508 | 203.19.149.0/24 2509 | 203.19.156.0/24 2510 | 203.19.176.0/24 2511 | 203.19.178.0/23 2512 | 203.19.208.0/24 2513 | 203.19.228.0/22 2514 | 203.19.233.0/24 2515 | 203.19.242.0/24 2516 | 203.19.248.0/23 2517 | 203.19.255.0/24 2518 | 203.20.17.0/24 2519 | 203.20.40.0/23 2520 | 203.20.48.0/24 2521 | 203.20.61.0/24 2522 | 203.20.65.0/24 2523 | 203.20.84.0/23 2524 | 203.20.89.0/24 2525 | 203.20.106.0/23 2526 | 203.20.115.0/24 2527 | 203.20.117.0/24 2528 | 203.20.118.0/23 2529 | 203.20.122.0/24 2530 | 203.20.126.0/23 2531 | 203.20.135.0/24 2532 | 203.20.136.0/21 2533 | 203.20.150.0/24 2534 | 203.20.230.0/24 2535 | 203.20.232.0/24 2536 | 203.20.236.0/24 2537 | 203.21.0.0/23 2538 | 203.21.2.0/24 2539 | 203.21.8.0/24 2540 | 203.21.10.0/24 2541 | 203.21.18.0/24 2542 | 203.21.33.0/24 2543 | 203.21.34.0/24 2544 | 203.21.41.0/24 2545 | 203.21.44.0/24 2546 | 203.21.68.0/24 2547 | 203.21.82.0/24 2548 | 203.21.96.0/22 2549 | 203.21.124.0/24 2550 | 203.21.136.0/23 2551 | 203.21.145.0/24 2552 | 203.21.206.0/24 2553 | 203.22.24.0/24 2554 | 203.22.28.0/23 2555 | 203.22.31.0/24 2556 | 203.22.68.0/24 2557 | 203.22.76.0/24 2558 | 203.22.78.0/24 2559 | 203.22.84.0/24 2560 | 203.22.87.0/24 2561 | 203.22.92.0/22 2562 | 203.22.99.0/24 2563 | 203.22.106.0/24 2564 | 203.22.122.0/23 2565 | 203.22.131.0/24 2566 | 203.22.163.0/24 2567 | 203.22.166.0/24 2568 | 203.22.170.0/24 2569 | 203.22.176.0/21 2570 | 203.22.194.0/24 2571 | 203.22.242.0/23 2572 | 203.22.245.0/24 2573 | 203.22.246.0/24 2574 | 203.22.252.0/23 2575 | 203.23.0.0/24 2576 | 203.23.47.0/24 2577 | 203.23.61.0/24 2578 | 203.23.62.0/23 2579 | 203.23.73.0/24 2580 | 203.23.85.0/24 2581 | 203.23.92.0/22 2582 | 203.23.98.0/24 2583 | 203.23.107.0/24 2584 | 203.23.112.0/24 2585 | 203.23.130.0/24 2586 | 203.23.140.0/23 2587 | 203.23.172.0/24 2588 | 203.23.182.0/24 2589 | 203.23.186.0/23 2590 | 203.23.192.0/24 2591 | 203.23.197.0/24 2592 | 203.23.198.0/24 2593 | 203.23.204.0/22 2594 | 203.23.224.0/24 2595 | 203.23.226.0/23 2596 | 203.23.228.0/22 2597 | 203.23.249.0/24 2598 | 203.23.251.0/24 2599 | 203.24.13.0/24 2600 | 203.24.18.0/24 2601 | 203.24.27.0/24 2602 | 203.24.43.0/24 2603 | 203.24.56.0/24 2604 | 203.24.58.0/24 2605 | 203.24.67.0/24 2606 | 203.24.74.0/24 2607 | 203.24.79.0/24 2608 | 203.24.80.0/23 2609 | 203.24.84.0/23 2610 | 203.24.86.0/24 2611 | 203.24.90.0/24 2612 | 203.24.111.0/24 2613 | 203.24.112.0/24 2614 | 203.24.116.0/24 2615 | 203.24.122.0/23 2616 | 203.24.145.0/24 2617 | 203.24.152.0/23 2618 | 203.24.157.0/24 2619 | 203.24.161.0/24 2620 | 203.24.167.0/24 2621 | 203.24.186.0/23 2622 | 203.24.199.0/24 2623 | 203.24.202.0/24 2624 | 203.24.212.0/23 2625 | 203.24.217.0/24 2626 | 203.24.219.0/24 2627 | 203.24.244.0/24 2628 | 203.25.19.0/24 2629 | 203.25.20.0/23 2630 | 203.25.46.0/24 2631 | 203.25.48.0/21 2632 | 203.25.64.0/23 2633 | 203.25.91.0/24 2634 | 203.25.99.0/24 2635 | 203.25.100.0/24 2636 | 203.25.106.0/24 2637 | 203.25.131.0/24 2638 | 203.25.135.0/24 2639 | 203.25.138.0/24 2640 | 203.25.147.0/24 2641 | 203.25.153.0/24 2642 | 203.25.154.0/23 2643 | 203.25.164.0/24 2644 | 203.25.166.0/24 2645 | 203.25.174.0/23 2646 | 203.25.180.0/24 2647 | 203.25.182.0/24 2648 | 203.25.191.0/24 2649 | 203.25.199.0/24 2650 | 203.25.200.0/24 2651 | 203.25.202.0/23 2652 | 203.25.208.0/20 2653 | 203.25.229.0/24 2654 | 203.25.235.0/24 2655 | 203.25.236.0/24 2656 | 203.25.242.0/24 2657 | 203.26.12.0/24 2658 | 203.26.34.0/24 2659 | 203.26.49.0/24 2660 | 203.26.50.0/24 2661 | 203.26.55.0/24 2662 | 203.26.56.0/23 2663 | 203.26.60.0/24 2664 | 203.26.65.0/24 2665 | 203.26.68.0/24 2666 | 203.26.76.0/24 2667 | 203.26.80.0/24 2668 | 203.26.84.0/24 2669 | 203.26.97.0/24 2670 | 203.26.102.0/23 2671 | 203.26.115.0/24 2672 | 203.26.116.0/24 2673 | 203.26.129.0/24 2674 | 203.26.143.0/24 2675 | 203.26.144.0/24 2676 | 203.26.148.0/23 2677 | 203.26.154.0/24 2678 | 203.26.158.0/23 2679 | 203.26.170.0/24 2680 | 203.26.173.0/24 2681 | 203.26.176.0/24 2682 | 203.26.185.0/24 2683 | 203.26.202.0/23 2684 | 203.26.210.0/24 2685 | 203.26.214.0/24 2686 | 203.26.222.0/24 2687 | 203.26.224.0/24 2688 | 203.26.228.0/24 2689 | 203.26.232.0/24 2690 | 203.27.0.0/24 2691 | 203.27.10.0/24 2692 | 203.27.15.0/24 2693 | 203.27.16.0/24 2694 | 203.27.20.0/24 2695 | 203.27.22.0/23 2696 | 203.27.40.0/24 2697 | 203.27.45.0/24 2698 | 203.27.53.0/24 2699 | 203.27.65.0/24 2700 | 203.27.66.0/24 2701 | 203.27.81.0/24 2702 | 203.27.88.0/24 2703 | 203.27.102.0/24 2704 | 203.27.109.0/24 2705 | 203.27.117.0/24 2706 | 203.27.121.0/24 2707 | 203.27.122.0/23 2708 | 203.27.125.0/24 2709 | 203.27.200.0/24 2710 | 203.27.202.0/24 2711 | 203.27.233.0/24 2712 | 203.27.241.0/24 2713 | 203.27.250.0/24 2714 | 203.28.10.0/24 2715 | 203.28.12.0/24 2716 | 203.28.33.0/24 2717 | 203.28.34.0/23 2718 | 203.28.43.0/24 2719 | 203.28.44.0/24 2720 | 203.28.54.0/24 2721 | 203.28.56.0/24 2722 | 203.28.73.0/24 2723 | 203.28.74.0/24 2724 | 203.28.76.0/24 2725 | 203.28.86.0/24 2726 | 203.28.88.0/24 2727 | 203.28.112.0/24 2728 | 203.28.131.0/24 2729 | 203.28.136.0/24 2730 | 203.28.140.0/24 2731 | 203.28.145.0/24 2732 | 203.28.165.0/24 2733 | 203.28.169.0/24 2734 | 203.28.170.0/24 2735 | 203.28.178.0/23 2736 | 203.28.185.0/24 2737 | 203.28.187.0/24 2738 | 203.28.196.0/24 2739 | 203.28.226.0/23 2740 | 203.28.239.0/24 2741 | 203.29.2.0/24 2742 | 203.29.8.0/23 2743 | 203.29.13.0/24 2744 | 203.29.14.0/24 2745 | 203.29.28.0/24 2746 | 203.29.46.0/24 2747 | 203.29.57.0/24 2748 | 203.29.61.0/24 2749 | 203.29.63.0/24 2750 | 203.29.69.0/24 2751 | 203.29.73.0/24 2752 | 203.29.81.0/24 2753 | 203.29.90.0/24 2754 | 203.29.95.0/24 2755 | 203.29.100.0/24 2756 | 203.29.103.0/24 2757 | 203.29.112.0/24 2758 | 203.29.120.0/22 2759 | 203.29.182.0/23 2760 | 203.29.187.0/24 2761 | 203.29.189.0/24 2762 | 203.29.190.0/24 2763 | 203.29.205.0/24 2764 | 203.29.210.0/24 2765 | 203.29.217.0/24 2766 | 203.29.227.0/24 2767 | 203.29.231.0/24 2768 | 203.29.233.0/24 2769 | 203.29.234.0/24 2770 | 203.29.248.0/24 2771 | 203.29.254.0/23 2772 | 203.30.16.0/23 2773 | 203.30.25.0/24 2774 | 203.30.27.0/24 2775 | 203.30.29.0/24 2776 | 203.30.66.0/24 2777 | 203.30.81.0/24 2778 | 203.30.87.0/24 2779 | 203.30.111.0/24 2780 | 203.30.121.0/24 2781 | 203.30.123.0/24 2782 | 203.30.152.0/24 2783 | 203.30.156.0/24 2784 | 203.30.162.0/24 2785 | 203.30.173.0/24 2786 | 203.30.175.0/24 2787 | 203.30.187.0/24 2788 | 203.30.194.0/24 2789 | 203.30.217.0/24 2790 | 203.30.220.0/24 2791 | 203.30.222.0/24 2792 | 203.30.232.0/23 2793 | 203.30.235.0/24 2794 | 203.30.240.0/23 2795 | 203.30.246.0/24 2796 | 203.30.250.0/23 2797 | 203.31.45.0/24 2798 | 203.31.46.0/24 2799 | 203.31.49.0/24 2800 | 203.31.51.0/24 2801 | 203.31.54.0/23 2802 | 203.31.69.0/24 2803 | 203.31.72.0/24 2804 | 203.31.80.0/24 2805 | 203.31.85.0/24 2806 | 203.31.97.0/24 2807 | 203.31.105.0/24 2808 | 203.31.106.0/24 2809 | 203.31.108.0/23 2810 | 203.31.124.0/24 2811 | 203.31.162.0/24 2812 | 203.31.174.0/24 2813 | 203.31.177.0/24 2814 | 203.31.181.0/24 2815 | 203.31.187.0/24 2816 | 203.31.189.0/24 2817 | 203.31.204.0/24 2818 | 203.31.220.0/24 2819 | 203.31.222.0/23 2820 | 203.31.225.0/24 2821 | 203.31.229.0/24 2822 | 203.31.248.0/23 2823 | 203.31.253.0/24 2824 | 203.32.20.0/24 2825 | 203.32.48.0/23 2826 | 203.32.56.0/24 2827 | 203.32.60.0/24 2828 | 203.32.62.0/24 2829 | 203.32.68.0/23 2830 | 203.32.76.0/24 2831 | 203.32.81.0/24 2832 | 203.32.84.0/23 2833 | 203.32.95.0/24 2834 | 203.32.102.0/24 2835 | 203.32.105.0/24 2836 | 203.32.130.0/24 2837 | 203.32.133.0/24 2838 | 203.32.140.0/24 2839 | 203.32.152.0/24 2840 | 203.32.186.0/23 2841 | 203.32.192.0/24 2842 | 203.32.196.0/24 2843 | 203.32.203.0/24 2844 | 203.32.204.0/23 2845 | 203.32.212.0/24 2846 | 203.33.4.0/24 2847 | 203.33.7.0/24 2848 | 203.33.8.0/21 2849 | 203.33.21.0/24 2850 | 203.33.26.0/24 2851 | 203.33.32.0/24 2852 | 203.33.63.0/24 2853 | 203.33.64.0/24 2854 | 203.33.67.0/24 2855 | 203.33.68.0/24 2856 | 203.33.73.0/24 2857 | 203.33.79.0/24 2858 | 203.33.100.0/24 2859 | 203.33.122.0/24 2860 | 203.33.129.0/24 2861 | 203.33.131.0/24 2862 | 203.33.145.0/24 2863 | 203.33.156.0/24 2864 | 203.33.158.0/23 2865 | 203.33.174.0/24 2866 | 203.33.185.0/24 2867 | 203.33.200.0/24 2868 | 203.33.202.0/23 2869 | 203.33.204.0/24 2870 | 203.33.206.0/23 2871 | 203.33.214.0/23 2872 | 203.33.224.0/23 2873 | 203.33.226.0/24 2874 | 203.33.233.0/24 2875 | 203.33.243.0/24 2876 | 203.33.250.0/24 2877 | 203.34.4.0/24 2878 | 203.34.21.0/24 2879 | 203.34.27.0/24 2880 | 203.34.39.0/24 2881 | 203.34.48.0/23 2882 | 203.34.54.0/24 2883 | 203.34.56.0/23 2884 | 203.34.67.0/24 2885 | 203.34.69.0/24 2886 | 203.34.76.0/24 2887 | 203.34.92.0/24 2888 | 203.34.106.0/24 2889 | 203.34.113.0/24 2890 | 203.34.147.0/24 2891 | 203.34.150.0/24 2892 | 203.34.152.0/23 2893 | 203.34.161.0/24 2894 | 203.34.162.0/24 2895 | 203.34.187.0/24 2896 | 203.34.192.0/21 2897 | 203.34.204.0/22 2898 | 203.34.232.0/24 2899 | 203.34.240.0/24 2900 | 203.34.242.0/24 2901 | 203.34.245.0/24 2902 | 203.34.251.0/24 2903 | 203.55.2.0/23 2904 | 203.55.4.0/24 2905 | 203.55.10.0/24 2906 | 203.55.13.0/24 2907 | 203.55.22.0/24 2908 | 203.55.30.0/24 2909 | 203.55.93.0/24 2910 | 203.55.101.0/24 2911 | 203.55.109.0/24 2912 | 203.55.110.0/24 2913 | 203.55.116.0/23 2914 | 203.55.119.0/24 2915 | 203.55.128.0/23 2916 | 203.55.146.0/23 2917 | 203.55.192.0/24 2918 | 203.55.196.0/24 2919 | 203.55.218.0/23 2920 | 203.55.221.0/24 2921 | 203.55.224.0/24 2922 | 203.56.1.0/24 2923 | 203.56.4.0/24 2924 | 203.56.12.0/24 2925 | 203.56.24.0/24 2926 | 203.56.38.0/24 2927 | 203.56.40.0/24 2928 | 203.56.46.0/24 2929 | 203.56.48.0/21 2930 | 203.56.68.0/23 2931 | 203.56.82.0/23 2932 | 203.56.84.0/23 2933 | 203.56.95.0/24 2934 | 203.56.110.0/24 2935 | 203.56.121.0/24 2936 | 203.56.161.0/24 2937 | 203.56.169.0/24 2938 | 203.56.172.0/23 2939 | 203.56.175.0/24 2940 | 203.56.183.0/24 2941 | 203.56.185.0/24 2942 | 203.56.187.0/24 2943 | 203.56.192.0/24 2944 | 203.56.198.0/24 2945 | 203.56.201.0/24 2946 | 203.56.208.0/23 2947 | 203.56.210.0/24 2948 | 203.56.214.0/24 2949 | 203.56.216.0/24 2950 | 203.56.227.0/24 2951 | 203.56.228.0/24 2952 | 203.56.232.0/24 2953 | 203.56.240.0/24 2954 | 203.56.252.0/24 2955 | 203.56.254.0/24 2956 | 203.57.5.0/24 2957 | 203.57.6.0/24 2958 | 203.57.12.0/23 2959 | 203.57.28.0/24 2960 | 203.57.39.0/24 2961 | 203.57.46.0/24 2962 | 203.57.58.0/24 2963 | 203.57.61.0/24 2964 | 203.57.66.0/24 2965 | 203.57.69.0/24 2966 | 203.57.70.0/23 2967 | 203.57.73.0/24 2968 | 203.57.90.0/24 2969 | 203.57.101.0/24 2970 | 203.57.109.0/24 2971 | 203.57.123.0/24 2972 | 203.57.157.0/24 2973 | 203.57.200.0/24 2974 | 203.57.202.0/24 2975 | 203.57.206.0/24 2976 | 203.57.222.0/24 2977 | 203.57.224.0/20 2978 | 203.57.246.0/23 2979 | 203.57.249.0/24 2980 | 203.57.253.0/24 2981 | 203.57.254.0/23 2982 | 203.62.2.0/24 2983 | 203.62.131.0/24 2984 | 203.62.139.0/24 2985 | 203.62.161.0/24 2986 | 203.62.197.0/24 2987 | 203.62.228.0/22 2988 | 203.62.234.0/24 2989 | 203.62.246.0/24 2990 | 203.76.160.0/22 2991 | 203.76.168.0/22 2992 | 203.77.180.0/22 2993 | 203.78.48.0/20 2994 | 203.79.0.0/20 2995 | 203.79.32.0/20 2996 | 203.80.4.0/23 2997 | 203.80.32.0/20 2998 | 203.80.57.0/24 2999 | 203.80.132.0/22 3000 | 203.80.136.0/21 3001 | 203.80.144.0/20 3002 | 203.81.0.0/21 3003 | 203.81.16.0/20 3004 | 203.82.0.0/23 3005 | 203.82.16.0/21 3006 | 203.83.0.0/22 3007 | 203.83.56.0/21 3008 | 203.83.224.0/20 3009 | 203.86.0.0/19 3010 | 203.86.32.0/19 3011 | 203.86.64.0/20 3012 | 203.86.80.0/20 3013 | 203.86.96.0/19 3014 | 203.86.254.0/23 3015 | 203.88.32.0/19 3016 | 203.88.192.0/19 3017 | 203.89.0.0/22 3018 | 203.89.8.0/21 3019 | 203.89.136.0/22 3020 | 203.90.0.0/22 3021 | 203.90.8.0/22 3022 | 203.90.128.0/19 3023 | 203.90.160.0/19 3024 | 203.90.192.0/19 3025 | 203.91.32.0/19 3026 | 203.91.96.0/20 3027 | 203.91.120.0/21 3028 | 203.92.0.0/22 3029 | 203.92.160.0/19 3030 | 203.93.0.0/22 3031 | 203.93.4.0/22 3032 | 203.93.8.0/24 3033 | 203.93.9.0/24 3034 | 203.93.10.0/23 3035 | 203.93.12.0/22 3036 | 203.93.16.0/20 3037 | 203.93.32.0/19 3038 | 203.93.64.0/18 3039 | 203.93.128.0/21 3040 | 203.93.136.0/22 3041 | 203.93.140.0/24 3042 | 203.93.141.0/24 3043 | 203.93.142.0/23 3044 | 203.93.144.0/20 3045 | 203.93.160.0/19 3046 | 203.93.192.0/18 3047 | 203.94.0.0/22 3048 | 203.94.4.0/22 3049 | 203.94.8.0/21 3050 | 203.94.16.0/20 3051 | 203.95.0.0/21 3052 | 203.95.96.0/20 3053 | 203.95.112.0/20 3054 | 203.95.128.0/18 3055 | 203.95.224.0/19 3056 | 203.99.8.0/21 3057 | 203.99.16.0/20 3058 | 203.99.80.0/20 3059 | 203.100.32.0/20 3060 | 203.100.48.0/21 3061 | 203.100.63.0/24 3062 | 203.100.80.0/20 3063 | 203.100.96.0/19 3064 | 203.100.192.0/20 3065 | 203.104.32.0/20 3066 | 203.105.96.0/19 3067 | 203.105.128.0/19 3068 | 203.107.0.0/17 3069 | 203.110.160.0/19 3070 | 203.110.208.0/20 3071 | 203.110.232.0/23 3072 | 203.110.234.0/24 3073 | 203.114.244.0/22 3074 | 203.118.192.0/19 3075 | 203.118.241.0/24 3076 | 203.118.248.0/22 3077 | 203.119.24.0/21 3078 | 203.119.32.0/22 3079 | 203.119.80.0/22 3080 | 203.119.85.0/24 3081 | 203.119.113.0/24 3082 | 203.119.114.0/23 3083 | 203.119.116.0/22 3084 | 203.119.120.0/21 3085 | 203.119.128.0/17 3086 | 203.128.32.0/19 3087 | 203.128.96.0/19 3088 | 203.128.224.0/21 3089 | 203.129.8.0/21 3090 | 203.130.32.0/19 3091 | 203.132.32.0/19 3092 | 203.134.240.0/21 3093 | 203.135.96.0/20 3094 | 203.135.112.0/20 3095 | 203.135.160.0/20 3096 | 203.142.224.0/19 3097 | 203.144.96.0/19 3098 | 203.145.0.0/19 3099 | 203.148.0.0/18 3100 | 203.148.64.0/20 3101 | 203.148.80.0/22 3102 | 203.148.86.0/23 3103 | 203.149.92.0/22 3104 | 203.152.64.0/19 3105 | 203.152.128.0/19 3106 | 203.153.0.0/22 3107 | 203.156.192.0/18 3108 | 203.158.16.0/21 3109 | 203.160.104.0/21 3110 | 203.160.129.0/24 3111 | 203.160.192.0/19 3112 | 203.161.0.0/22 3113 | 203.161.180.0/24 3114 | 203.161.192.0/19 3115 | 203.166.160.0/19 3116 | 203.168.0.0/19 3117 | 203.170.58.0/23 3118 | 203.171.0.0/22 3119 | 203.171.224.0/20 3120 | 203.174.4.0/24 3121 | 203.174.7.0/24 3122 | 203.174.96.0/19 3123 | 203.175.128.0/19 3124 | 203.175.192.0/18 3125 | 203.176.0.0/18 3126 | 203.176.64.0/19 3127 | 203.176.168.0/21 3128 | 203.184.80.0/20 3129 | 203.187.160.0/19 3130 | 203.189.0.0/23 3131 | 203.189.6.0/23 3132 | 203.189.112.0/22 3133 | 203.189.192.0/19 3134 | 203.190.96.0/20 3135 | 203.190.249.0/24 3136 | 203.191.0.0/23 3137 | 203.191.16.0/20 3138 | 203.191.64.0/18 3139 | 203.191.144.0/21 3140 | 203.191.152.0/21 3141 | 203.192.0.0/19 3142 | 203.193.224.0/19 3143 | 203.194.120.0/21 3144 | 203.195.64.0/19 3145 | 203.195.112.0/21 3146 | 203.195.128.0/17 3147 | 203.196.0.0/21 3148 | 203.196.8.0/21 3149 | 203.202.236.0/22 3150 | 203.205.64.0/19 3151 | 203.205.128.0/17 3152 | 203.207.64.0/18 3153 | 203.207.128.0/17 3154 | 203.208.0.0/20 3155 | 203.208.16.0/22 3156 | 203.208.32.0/19 3157 | 203.209.224.0/19 3158 | 203.212.0.0/20 3159 | 203.212.80.0/20 3160 | 203.215.232.0/21 3161 | 203.222.192.0/20 3162 | 203.223.0.0/20 3163 | 203.223.16.0/21 3164 | 210.2.0.0/20 3165 | 210.2.16.0/20 3166 | 210.5.0.0/19 3167 | 210.5.56.0/21 3168 | 210.5.128.0/20 3169 | 210.5.144.0/20 3170 | 210.12.0.0/18 3171 | 210.12.64.0/18 3172 | 210.12.128.0/18 3173 | 210.12.192.0/18 3174 | 210.13.0.0/18 3175 | 210.13.64.0/18 3176 | 210.13.128.0/17 3177 | 210.14.64.0/19 3178 | 210.14.112.0/20 3179 | 210.14.128.0/19 3180 | 210.14.160.0/19 3181 | 210.14.192.0/19 3182 | 210.14.224.0/19 3183 | 210.15.0.0/19 3184 | 210.15.32.0/19 3185 | 210.15.64.0/19 3186 | 210.15.96.0/19 3187 | 210.15.128.0/18 3188 | 210.16.128.0/18 3189 | 210.21.0.0/17 3190 | 210.21.128.0/17 3191 | 210.22.0.0/16 3192 | 210.23.32.0/19 3193 | 210.25.0.0/16 3194 | 210.26.0.0/15 3195 | 210.28.0.0/14 3196 | 210.32.0.0/14 3197 | 210.36.0.0/14 3198 | 210.40.0.0/13 3199 | 210.48.136.0/21 3200 | 210.51.0.0/16 3201 | 210.52.0.0/18 3202 | 210.52.64.0/18 3203 | 210.52.128.0/17 3204 | 210.53.0.0/17 3205 | 210.53.128.0/17 3206 | 210.56.192.0/19 3207 | 210.72.0.0/17 3208 | 210.72.128.0/19 3209 | 210.72.160.0/19 3210 | 210.72.192.0/18 3211 | 210.73.0.0/19 3212 | 210.73.32.0/19 3213 | 210.73.64.0/18 3214 | 210.73.128.0/17 3215 | 210.74.0.0/19 3216 | 210.74.32.0/19 3217 | 210.74.64.0/19 3218 | 210.74.96.0/19 3219 | 210.74.128.0/19 3220 | 210.74.160.0/19 3221 | 210.74.192.0/18 3222 | 210.75.0.0/16 3223 | 210.76.0.0/19 3224 | 210.76.32.0/19 3225 | 210.76.64.0/18 3226 | 210.76.128.0/17 3227 | 210.77.0.0/16 3228 | 210.78.0.0/19 3229 | 210.78.32.0/19 3230 | 210.78.64.0/18 3231 | 210.78.128.0/19 3232 | 210.78.160.0/19 3233 | 210.78.192.0/18 3234 | 210.79.64.0/18 3235 | 210.79.224.0/19 3236 | 210.82.0.0/15 3237 | 210.87.128.0/20 3238 | 210.87.144.0/20 3239 | 210.87.160.0/19 3240 | 210.185.192.0/18 3241 | 210.192.96.0/19 3242 | 211.64.0.0/14 3243 | 211.68.0.0/15 3244 | 211.70.0.0/15 3245 | 211.80.0.0/16 3246 | 211.81.0.0/16 3247 | 211.82.0.0/16 3248 | 211.83.0.0/16 3249 | 211.84.0.0/15 3250 | 211.86.0.0/15 3251 | 211.88.0.0/16 3252 | 211.89.0.0/16 3253 | 211.90.0.0/15 3254 | 211.92.0.0/15 3255 | 211.94.0.0/15 3256 | 211.96.0.0/15 3257 | 211.98.0.0/16 3258 | 211.99.0.0/18 3259 | 211.99.64.0/19 3260 | 211.99.96.0/19 3261 | 211.99.128.0/17 3262 | 211.100.0.0/16 3263 | 211.101.0.0/18 3264 | 211.101.64.0/18 3265 | 211.101.128.0/17 3266 | 211.102.0.0/16 3267 | 211.103.0.0/17 3268 | 211.103.128.0/17 3269 | 211.136.0.0/14 3270 | 211.140.0.0/15 3271 | 211.142.0.0/17 3272 | 211.142.128.0/17 3273 | 211.143.0.0/16 3274 | 211.144.0.0/15 3275 | 211.146.0.0/16 3276 | 211.147.0.0/16 3277 | 211.148.0.0/14 3278 | 211.152.0.0/15 3279 | 211.154.0.0/16 3280 | 211.155.0.0/18 3281 | 211.155.64.0/19 3282 | 211.155.96.0/19 3283 | 211.155.128.0/17 3284 | 211.156.0.0/14 3285 | 211.160.0.0/14 3286 | 211.164.0.0/14 3287 | 218.0.0.0/16 3288 | 218.1.0.0/16 3289 | 218.2.0.0/15 3290 | 218.4.0.0/15 3291 | 218.6.0.0/16 3292 | 218.7.0.0/16 3293 | 218.8.0.0/15 3294 | 218.10.0.0/16 3295 | 218.11.0.0/16 3296 | 218.12.0.0/16 3297 | 218.13.0.0/16 3298 | 218.14.0.0/15 3299 | 218.16.0.0/14 3300 | 218.20.0.0/16 3301 | 218.21.0.0/17 3302 | 218.21.128.0/17 3303 | 218.22.0.0/15 3304 | 218.24.0.0/15 3305 | 218.26.0.0/16 3306 | 218.27.0.0/16 3307 | 218.28.0.0/15 3308 | 218.30.0.0/15 3309 | 218.56.0.0/14 3310 | 218.60.0.0/15 3311 | 218.62.0.0/17 3312 | 218.62.128.0/17 3313 | 218.63.0.0/16 3314 | 218.64.0.0/15 3315 | 218.66.0.0/16 3316 | 218.67.0.0/17 3317 | 218.67.128.0/17 3318 | 218.68.0.0/15 3319 | 218.70.0.0/15 3320 | 218.72.0.0/14 3321 | 218.76.0.0/15 3322 | 218.78.0.0/15 3323 | 218.80.0.0/14 3324 | 218.84.0.0/14 3325 | 218.88.0.0/13 3326 | 218.96.0.0/15 3327 | 218.98.0.0/17 3328 | 218.98.128.0/18 3329 | 218.98.192.0/19 3330 | 218.98.224.0/19 3331 | 218.99.0.0/16 3332 | 218.100.88.0/21 3333 | 218.100.96.0/19 3334 | 218.100.128.0/17 3335 | 218.104.0.0/17 3336 | 218.104.128.0/19 3337 | 218.104.160.0/19 3338 | 218.104.192.0/21 3339 | 218.104.200.0/21 3340 | 218.104.208.0/20 3341 | 218.104.224.0/19 3342 | 218.105.0.0/16 3343 | 218.106.0.0/15 3344 | 218.108.0.0/16 3345 | 218.109.0.0/16 3346 | 218.185.192.0/19 3347 | 218.185.240.0/21 3348 | 218.192.0.0/16 3349 | 218.193.0.0/16 3350 | 218.194.0.0/16 3351 | 218.195.0.0/16 3352 | 218.196.0.0/14 3353 | 218.200.0.0/14 3354 | 218.204.0.0/15 3355 | 218.206.0.0/15 3356 | 218.240.0.0/14 3357 | 218.244.0.0/15 3358 | 218.246.0.0/15 3359 | 218.249.0.0/16 3360 | 219.72.0.0/16 3361 | 219.82.0.0/16 3362 | 219.83.128.0/17 3363 | 219.128.0.0/12 3364 | 219.144.0.0/14 3365 | 219.148.0.0/16 3366 | 219.149.0.0/17 3367 | 219.149.128.0/18 3368 | 219.149.192.0/18 3369 | 219.150.0.0/19 3370 | 219.150.32.0/19 3371 | 219.150.64.0/19 3372 | 219.150.96.0/20 3373 | 219.150.112.0/20 3374 | 219.150.128.0/17 3375 | 219.151.0.0/19 3376 | 219.151.32.0/19 3377 | 219.151.64.0/18 3378 | 219.151.128.0/17 3379 | 219.152.0.0/15 3380 | 219.154.0.0/15 3381 | 219.156.0.0/15 3382 | 219.158.0.0/17 3383 | 219.158.128.0/17 3384 | 219.159.0.0/18 3385 | 219.159.64.0/18 3386 | 219.159.128.0/17 3387 | 219.216.0.0/15 3388 | 219.218.0.0/15 3389 | 219.220.0.0/16 3390 | 219.221.0.0/16 3391 | 219.222.0.0/15 3392 | 219.224.0.0/15 3393 | 219.226.0.0/16 3394 | 219.227.0.0/16 3395 | 219.228.0.0/15 3396 | 219.230.0.0/15 3397 | 219.232.0.0/14 3398 | 219.236.0.0/15 3399 | 219.238.0.0/15 3400 | 219.242.0.0/15 3401 | 219.244.0.0/14 3402 | 220.101.192.0/18 3403 | 220.112.0.0/14 3404 | 220.152.128.0/17 3405 | 220.154.0.0/15 3406 | 220.160.0.0/11 3407 | 220.192.0.0/15 3408 | 220.194.0.0/15 3409 | 220.196.0.0/14 3410 | 220.200.0.0/13 3411 | 220.231.0.0/18 3412 | 220.231.128.0/17 3413 | 220.232.64.0/18 3414 | 220.234.0.0/16 3415 | 220.242.0.0/15 3416 | 220.247.136.0/21 3417 | 220.248.0.0/14 3418 | 220.252.0.0/16 3419 | 221.0.0.0/15 3420 | 221.2.0.0/16 3421 | 221.3.0.0/17 3422 | 221.3.128.0/17 3423 | 221.4.0.0/16 3424 | 221.5.0.0/17 3425 | 221.5.128.0/17 3426 | 221.6.0.0/16 3427 | 221.7.0.0/19 3428 | 221.7.32.0/19 3429 | 221.7.64.0/19 3430 | 221.7.96.0/19 3431 | 221.7.128.0/17 3432 | 221.8.0.0/15 3433 | 221.10.0.0/16 3434 | 221.11.0.0/17 3435 | 221.11.128.0/18 3436 | 221.11.192.0/19 3437 | 221.11.224.0/19 3438 | 221.12.0.0/17 3439 | 221.12.128.0/18 3440 | 221.13.0.0/18 3441 | 221.13.64.0/19 3442 | 221.13.96.0/19 3443 | 221.13.128.0/17 3444 | 221.14.0.0/15 3445 | 221.122.0.0/15 3446 | 221.128.128.0/17 3447 | 221.129.0.0/16 3448 | 221.130.0.0/15 3449 | 221.133.224.0/19 3450 | 221.136.0.0/16 3451 | 221.137.0.0/16 3452 | 221.172.0.0/14 3453 | 221.176.0.0/13 3454 | 221.192.0.0/15 3455 | 221.194.0.0/16 3456 | 221.195.0.0/16 3457 | 221.196.0.0/15 3458 | 221.198.0.0/16 3459 | 221.199.0.0/19 3460 | 221.199.32.0/20 3461 | 221.199.48.0/20 3462 | 221.199.64.0/18 3463 | 221.199.128.0/18 3464 | 221.199.192.0/20 3465 | 221.199.224.0/19 3466 | 221.200.0.0/14 3467 | 221.204.0.0/15 3468 | 221.206.0.0/16 3469 | 221.207.0.0/18 3470 | 221.207.64.0/18 3471 | 221.207.128.0/17 3472 | 221.208.0.0/14 3473 | 221.212.0.0/16 3474 | 221.213.0.0/16 3475 | 221.214.0.0/15 3476 | 221.216.0.0/13 3477 | 221.224.0.0/13 3478 | 221.232.0.0/14 3479 | 221.236.0.0/15 3480 | 221.238.0.0/16 3481 | 221.239.0.0/17 3482 | 221.239.128.0/17 3483 | 222.16.0.0/15 3484 | 222.18.0.0/15 3485 | 222.20.0.0/15 3486 | 222.22.0.0/16 3487 | 222.23.0.0/16 3488 | 222.24.0.0/15 3489 | 222.26.0.0/15 3490 | 222.28.0.0/14 3491 | 222.32.0.0/11 3492 | 222.64.0.0/13 3493 | 222.72.0.0/15 3494 | 222.74.0.0/16 3495 | 222.75.0.0/16 3496 | 222.76.0.0/14 3497 | 222.80.0.0/15 3498 | 222.82.0.0/16 3499 | 222.83.0.0/17 3500 | 222.83.128.0/17 3501 | 222.84.0.0/16 3502 | 222.85.0.0/17 3503 | 222.85.128.0/17 3504 | 222.86.0.0/15 3505 | 222.88.0.0/15 3506 | 222.90.0.0/15 3507 | 222.92.0.0/14 3508 | 222.125.0.0/16 3509 | 222.126.128.0/17 3510 | 222.128.0.0/14 3511 | 222.132.0.0/14 3512 | 222.136.0.0/13 3513 | 222.160.0.0/15 3514 | 222.162.0.0/16 3515 | 222.163.0.0/19 3516 | 222.163.32.0/19 3517 | 222.163.64.0/18 3518 | 222.163.128.0/17 3519 | 222.168.0.0/15 3520 | 222.170.0.0/15 3521 | 222.172.0.0/17 3522 | 222.172.128.0/17 3523 | 222.173.0.0/16 3524 | 222.174.0.0/15 3525 | 222.176.0.0/13 3526 | 222.184.0.0/13 3527 | 222.192.0.0/14 3528 | 222.196.0.0/15 3529 | 222.198.0.0/16 3530 | 222.199.0.0/16 3531 | 222.200.0.0/14 3532 | 222.204.0.0/15 3533 | 222.206.0.0/15 3534 | 222.208.0.0/13 3535 | 222.216.0.0/15 3536 | 222.218.0.0/16 3537 | 222.219.0.0/16 3538 | 222.220.0.0/15 3539 | 222.222.0.0/15 3540 | 222.240.0.0/13 3541 | 222.248.0.0/16 3542 | 222.249.0.0/17 3543 | 222.249.128.0/19 3544 | 222.249.160.0/20 3545 | 222.249.176.0/20 3546 | 222.249.192.0/18 3547 | 223.0.0.0/15 3548 | 223.2.0.0/15 3549 | 223.4.0.0/14 3550 | 223.8.0.0/13 3551 | 223.20.0.0/15 3552 | 223.27.184.0/22 3553 | 223.64.0.0/11 3554 | 223.96.0.0/12 3555 | 223.112.0.0/14 3556 | 223.116.0.0/15 3557 | 223.120.0.0/13 3558 | 223.128.0.0/15 3559 | 223.144.0.0/12 3560 | 223.160.0.0/14 3561 | 223.166.0.0/15 3562 | 223.192.0.0/15 3563 | 223.198.0.0/15 3564 | 223.201.0.0/16 3565 | 223.202.0.0/15 3566 | 223.208.0.0/14 3567 | 223.212.0.0/15 3568 | 223.214.0.0/15 3569 | 223.220.0.0/15 3570 | 223.223.176.0/20 3571 | 223.223.192.0/20 3572 | 223.240.0.0/13 3573 | 223.248.0.0/14 3574 | 223.252.128.0/17 3575 | 223.254.0.0/16 3576 | 223.255.0.0/17 3577 | 223.255.236.0/22 3578 | 223.255.252.0/23 3579 | --------------------------------------------------------------------------------